Class TraversingItemVisitor
- java.lang.Object
-
- javax.jcr.util.TraversingItemVisitor
-
- All Implemented Interfaces:
ItemVisitor
- Direct Known Subclasses:
TraversingItemVisitor.Default
public abstract class TraversingItemVisitor extends Object implements ItemVisitor
An implementation ofItemVisitor.TraversingItemVisitoris an abstract utility class which allows to easily traverse anItemhierarchy.TraversingItemVisitormakes use of the Visitor Pattern as described in the book 'Design Patterns' by the Gang Of Four (Gamma et al.).Tree traversal is done observing the left-to-right order of child
Items if such an order is supported and exists.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTraversingItemVisitor.DefaultConvenience class providing default implementations of the abstract methods ofTraversingItemVisitor.
-
Field Summary
Fields Modifier and Type Field Description protected booleanbreadthFirstIndicates if traversal should be done in a breadth-first manner rather than depth-first (which is the default).protected intmaxLevelThe 0-based level up to which the hierarchy should be traversed (if it's -1, the hierarchy will be traversed until there are no more children of the current item).
-
Constructor Summary
Constructors Constructor Description TraversingItemVisitor()Constructs a new instance of this class.TraversingItemVisitor(boolean breadthFirst)Constructs a new instance of this class.TraversingItemVisitor(boolean breadthFirst, int maxLevel)Constructs a new instance of this class.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voidentering(Node node, int level)Implement this method to add behavior performed before aNodeis visited.protected abstract voidentering(Property property, int level)Implement this method to add behavior performed before aPropertyis visited.protected abstract voidleaving(Node node, int level)Implement this method to add behavior performed after aNodeis visited.protected abstract voidleaving(Property property, int level)Implement this method to add behavior performed after aPropertyis visited.voidvisit(Node node)Called when theVisitoris passed to aNode.voidvisit(Property property)Called when theVisitoris passed to aProperty.
-
-
-
Field Detail
-
breadthFirst
protected final boolean breadthFirst
Indicates if traversal should be done in a breadth-first manner rather than depth-first (which is the default).
-
maxLevel
protected final int maxLevel
The 0-based level up to which the hierarchy should be traversed (if it's -1, the hierarchy will be traversed until there are no more children of the current item).
-
-
Constructor Detail
-
TraversingItemVisitor
public TraversingItemVisitor()
Constructs a new instance of this class.The tree of
Items will be traversed in a depth-first manner (default behavior).
-
TraversingItemVisitor
public TraversingItemVisitor(boolean breadthFirst)
Constructs a new instance of this class.- Parameters:
breadthFirst- ifbreadthFirstis true then traversal is done in a breadth-first manner; otherwise it is done in a depth-first manner (which is the default behavior).
-
TraversingItemVisitor
public TraversingItemVisitor(boolean breadthFirst, int maxLevel)Constructs a new instance of this class.- Parameters:
breadthFirst- ifbreadthFirstis true then traversal is done in a breadth-first manner; otherwise it is done in a depth-first manner (which is the default behavior).maxLevel- the 0-based level up to which the hierarchy should be traversed (if it's -1, the hierarchy will be traversed until there are no more children of the current item).
-
-
Method Detail
-
entering
protected abstract void entering(Property property, int level) throws RepositoryException
Implement this method to add behavior performed before aPropertyis visited.- Parameters:
property- thePropertythat is accepting this visitor.level- hierarchy level of this property (the root node starts at level 0).- Throws:
RepositoryException- if an error occurs.
-
entering
protected abstract void entering(Node node, int level) throws RepositoryException
Implement this method to add behavior performed before aNodeis visited.- Parameters:
node- theNodethat is accepting this visitor.level- hierarchy level of this node (the root node starts at level 0).- Throws:
RepositoryException- if an error occurs.
-
leaving
protected abstract void leaving(Property property, int level) throws RepositoryException
Implement this method to add behavior performed after aPropertyis visited.- Parameters:
property- thePropertythat is accepting this visitor.level- hierarchy level of this property (the root node starts at level 0).- Throws:
RepositoryException- if an error occurs.
-
leaving
protected abstract void leaving(Node node, int level) throws RepositoryException
Implement this method to add behavior performed after aNodeis visited.- Parameters:
node- theNodethat is accepting this visitor.level- hierarchy level of this node (the root node starts at level 0).- Throws:
RepositoryException- if an error occurs.
-
visit
public void visit(Property property) throws RepositoryException
Called when theVisitoris passed to aProperty.It calls
TraversingItemVisitor.entering(Property, int)followed byTraversingItemVisitor.leaving(Property, int). Implement these abstract methods to specify behavior on 'arrival at' and 'after leaving' theProperty.If this method throws, the visiting process is aborted.
- Specified by:
visitin interfaceItemVisitor- Parameters:
property- thePropertythat is accepting this visitor.- Throws:
RepositoryException- if an error occurs.
-
visit
public void visit(Node node) throws RepositoryException
Called when theVisitoris passed to aNode.It calls
TraversingItemVisitor.entering(Node, int)followed byTraversingItemVisitor.leaving(Node, int). Implement these abstract methods to specify behavior on 'arrival at' and 'after leaving' theNode.If this method throws, the visiting process is aborted.
- Specified by:
visitin interfaceItemVisitor- Parameters:
node- theNodethat is accepting this visitor.- Throws:
RepositoryException- if an error occurs.
-
-