Class NodeHandlerDecorator<T>
- java.lang.Object
-
- org.apache.commons.configuration2.tree.NodeHandlerDecorator<T>
-
- Type Parameters:
T
- the type of the nodes supported by this handler
- All Implemented Interfaces:
NodeHandler<T>
public abstract class NodeHandlerDecorator<T> extends java.lang.Object implements NodeHandler<T>
An abstract base class for decorators of a
NodeHandler
.This class implements all methods of the
NodeHandler
interface by delegating to another instance. This is convenient if specific functionality of aNodeHandler
is to be adapted for a special use case. Concrete sub classes have to implement thegetDecoratedNodeHandler()
method to provide the underlying handler.- Since:
- 2.0
-
-
Constructor Summary
Constructors Constructor Description NodeHandlerDecorator()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.lang.String>
getAttributes(T node)
Gets an unmodifiable set with the names of all attributes of the specified node.java.lang.Object
getAttributeValue(T node, java.lang.String name)
Gets the value of the specified attribute from the given node.T
getChild(T node, int index)
Gets the child with the given index of the specified node.java.util.List<T>
getChildren(T node)
Gets an unmodifiable list with all children of the specified node.java.util.List<T>
getChildren(T node, java.lang.String name)
Gets an unmodifiable list of all children of the specified node with the given name.int
getChildrenCount(T node, java.lang.String name)
Gets the number of children of the specified node with the given name.protected abstract NodeHandler<T>
getDecoratedNodeHandler()
Gets theNodeHandler
object that is decorated by this instance.<C> java.util.List<T>
getMatchingChildren(T node, NodeMatcher<C> matcher, C criterion)
Gets an unmodifiable list of all children of the specified node which are matched by the passed inNodeMatcher
against the provided criterion.<C> int
getMatchingChildrenCount(T node, NodeMatcher<C> matcher, C criterion)
Gets the number of children of the specified node which are matched by the givenNodeMatcher
.T
getParent(T node)
Gets the parent of the specified node.T
getRootNode()
Gets the root node of the underlying hierarchy.java.lang.Object
getValue(T node)
Gets the value of the specified node.boolean
hasAttributes(T node)
Returns a flag whether the passed in node has any attributes.int
indexOfChild(T parent, T child)
Returns the index of the given child node in the list of children of its parent.boolean
isDefined(T node)
Checks whether the specified node is defined.java.lang.String
nodeName(T node)
Returns the name of the specified node
-
-
-
Method Detail
-
nodeName
public java.lang.String nodeName(T node)
Description copied from interface:NodeHandler
Returns the name of the specified node- Specified by:
nodeName
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- the name of this node
-
getValue
public java.lang.Object getValue(T node)
Description copied from interface:NodeHandler
Gets the value of the specified node.- Specified by:
getValue
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- the value of this node
-
getParent
public T getParent(T node)
Description copied from interface:NodeHandler
Gets the parent of the specified node.- Specified by:
getParent
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- the parent node
-
getChildren
public java.util.List<T> getChildren(T node)
Description copied from interface:NodeHandler
Gets an unmodifiable list with all children of the specified node.- Specified by:
getChildren
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- a list with the child nodes of this node
-
getMatchingChildren
public <C> java.util.List<T> getMatchingChildren(T node, NodeMatcher<C> matcher, C criterion)
Description copied from interface:NodeHandler
Gets an unmodifiable list of all children of the specified node which are matched by the passed inNodeMatcher
against the provided criterion. This method allows for advanced queries on a node's children.- Specified by:
getMatchingChildren
in interfaceNodeHandler<T>
- Type Parameters:
C
- the type of the criterion- Parameters:
node
- the nodematcher
- theNodeMatcher
defining filter criteriacriterion
- the criterion to be matched against; this object is passed to theNodeMatcher
- Returns:
- a list with all children matched by the matcher
-
getMatchingChildrenCount
public <C> int getMatchingChildrenCount(T node, NodeMatcher<C> matcher, C criterion)
Description copied from interface:NodeHandler
Gets the number of children of the specified node which are matched by the givenNodeMatcher
. This is a more generic version ofNodeHandler.getChildrenCount(Object, String)
. It allows checking for arbitrary filter conditions.- Specified by:
getMatchingChildrenCount
in interfaceNodeHandler<T>
- Type Parameters:
C
- the type of the criterion- Parameters:
node
- the nodematcher
- theNodeMatcher
criterion
- the criterion to be passed to theNodeMatcher
- Returns:
- the number of matched children
-
getChildren
public java.util.List<T> getChildren(T node, java.lang.String name)
Description copied from interface:NodeHandler
Gets an unmodifiable list of all children of the specified node with the given name.- Specified by:
getChildren
in interfaceNodeHandler<T>
- Parameters:
node
- the nodename
- the name of the desired child nodes- Returns:
- a list with all children with the given name
-
getChild
public T getChild(T node, int index)
Description copied from interface:NodeHandler
Gets the child with the given index of the specified node.- Specified by:
getChild
in interfaceNodeHandler<T>
- Parameters:
node
- the nodeindex
- the index (0-based)- Returns:
- the child with the given index
-
indexOfChild
public int indexOfChild(T parent, T child)
Description copied from interface:NodeHandler
Returns the index of the given child node in the list of children of its parent. This method is the opposite operation ofNodeHandler.getChild(Object, int)
. This method returns 0 if the given node is the first child node with this name, 1 for the second child node and so on. If the node has no parent node or if it is an attribute, -1 is returned.- Specified by:
indexOfChild
in interfaceNodeHandler<T>
- Parameters:
parent
- the parent nodechild
- a child node whose index is to be retrieved- Returns:
- the index of this child node
-
getChildrenCount
public int getChildrenCount(T node, java.lang.String name)
Description copied from interface:NodeHandler
Gets the number of children of the specified node with the given name. This method exists for performance reasons: for some node implementations it may be by far more efficient to count the children than to query a list of all children and determine its size. A concrete implementation can choose the most efficient way to determine the number of children. If a child name is passed in, only the children with this name are taken into account. If the name null is passed, the total number of children must be returned.- Specified by:
getChildrenCount
in interfaceNodeHandler<T>
- Parameters:
node
- the nodename
- the name of the children in question (can be null for all children)- Returns:
- the number of the selected children
-
getAttributes
public java.util.Set<java.lang.String> getAttributes(T node)
Description copied from interface:NodeHandler
Gets an unmodifiable set with the names of all attributes of the specified node.- Specified by:
getAttributes
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- a set with the names of all attributes of this node
-
hasAttributes
public boolean hasAttributes(T node)
Description copied from interface:NodeHandler
Returns a flag whether the passed in node has any attributes.- Specified by:
hasAttributes
in interfaceNodeHandler<T>
- Parameters:
node
- the node- Returns:
- a flag whether this node has any attributes
-
getAttributeValue
public java.lang.Object getAttributeValue(T node, java.lang.String name)
Description copied from interface:NodeHandler
Gets the value of the specified attribute from the given node. If a concreteNodeHandler
supports attributes with multiple values, result might be a collection.- Specified by:
getAttributeValue
in interfaceNodeHandler<T>
- Parameters:
node
- the nodename
- the name of the attribute- Returns:
- the value of this attribute
-
isDefined
public boolean isDefined(T node)
Description copied from interface:NodeHandler
Checks whether the specified node is defined. Nodes are "defined" if they contain any data, e.g. a value, or attributes, or defined children.- Specified by:
isDefined
in interfaceNodeHandler<T>
- Parameters:
node
- the node to test- Returns:
- a flag whether the passed in node is defined
-
getRootNode
public T getRootNode()
Description copied from interface:NodeHandler
Gets the root node of the underlying hierarchy.- Specified by:
getRootNode
in interfaceNodeHandler<T>
- Returns:
- the current root node
-
getDecoratedNodeHandler
protected abstract NodeHandler<T> getDecoratedNodeHandler()
Gets theNodeHandler
object that is decorated by this instance. All method calls are delegated to this object.- Returns:
- the decorated
NodeHandler
-
-