Interface HashTreeTraverser

  • All Known Implementing Classes:
    CheckDirty, ConvertListeners, FindTestElementsUpToRootTraverser, PreCompiler, SearchByClass, TestCompiler, TreeCloner, TreeClonerNoTimer, TurnElementsOn

    public interface HashTreeTraverser
    By implementing this interface, a class can easily traverse a HashTree object, and be notified via callbacks of certain events. There are three such events:
    1. When a node is first encountered, the traverser's addNode(Object,HashTree) method is called. It is handed the object at that node, and the entire sub-tree of the node.
    2. When a leaf node is encountered, the traverser is notified that a full path has been finished via the processPath() method. It is the traversing class's responsibility to know the path that has just finished (this can be done by keeping a simple stack of all added nodes).
    3. When a node is retraced, the traverser's subtractNode() is called. Again, it is the traverser's responsibility to know which node has been retraced.
    To summarize, as the traversal goes down a tree path, nodes are added. When the end of the path is reached, the processPath() call is sent. As the traversal backs up, nodes are subtracted.

    The traversal is a depth-first traversal.

    Version:
    $Revision: 1595401 $
    See Also:
    HashTree, SearchByClass
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void addNode​(Object node, HashTree subTree)
      The tree traverses itself depth-first, calling addNode for each object it encounters as it goes.
      void processPath()
      Process path is called when a leaf is reached.
      void subtractNode()
      Indicates traversal has moved up a step, and the visitor should remove the top node from its stack structure.
    • Method Detail

      • addNode

        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.
        Parameters:
        node - the node currently encountered
        subTree - the HashTree under the node encountered
      • subtractNode

        void subtractNode()
        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.
      • processPath

        void processPath()
        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 subtractNode() call. This is a callback method, and should not be called except by a HashTree during traversal.