Class TreeCloner

    • Constructor Detail

      • TreeCloner

        public TreeCloner()
        Clone the test tree, honouring NoThreadClone markers.
      • TreeCloner

        public TreeCloner​(boolean honourNoThreadClone)
        Clone the test tree.
        Parameters:
        honourNoThreadClone - set false to clone NoThreadClone nodes as well
    • Method Detail

      • addNode

        public final void addNode​(Object node,
                                  HashTree subTree)
        The tree traverses itself depth-first, calling addNode for each object it encounters as it goes. This is a callback method, and should not be called except by a HashTree during traversal.
        Specified by:
        addNode in interface HashTreeTraverser
        Parameters:
        node - the node currently encountered
        subTree - the HashTree under the node encountered
      • addNodeToTree

        protected Object addNodeToTree​(Object node)
        Parameters:
        node - Node to add to tree or not
        Returns:
        Object node (clone or not)
      • subtractNode

        public void subtractNode()
        Description copied from interface: HashTreeTraverser
        Indicates traversal has moved up a step, and the visitor should remove the top node from its stack structure. This is a callback method, and should not be called except by a HashTree during traversal.
        Specified by:
        subtractNode in interface HashTreeTraverser
      • processPath

        public void processPath()
        Description copied from interface: HashTreeTraverser
        Process path is called when a leaf is reached. If a visitor wishes to generate Lists of path elements to each leaf, it should keep a Stack data structure of nodes passed to it with addNode, and removing top items for every HashTreeTraverser.subtractNode() call. This is a callback method, and should not be called except by a HashTree during traversal.
        Specified by:
        processPath in interface HashTreeTraverser