T
- the type of the nodes supported by this handlerpublic abstract class NodeHandlerDecorator<T> extends 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 a NodeHandler
is to be adapted for a special use case. Concrete
sub classes have to implement the getDecoratedNodeHandler()
method to
provide the underlying handler.
Constructor and Description |
---|
NodeHandlerDecorator() |
Modifier and Type | Method and Description |
---|---|
Set<String> |
getAttributes(T node)
Returns an unmodifiable set with the names of all attributes of the
specified node.
|
Object |
getAttributeValue(T node,
String name)
Returns the value of the specified attribute from the given node.
|
T |
getChild(T node,
int index)
Returns the child with the given index of the specified node.
|
List<T> |
getChildren(T node)
Returns an unmodifiable list with all children of the specified node.
|
List<T> |
getChildren(T node,
String name)
Returns an unmodifiable list of all children of the specified node with
the given name.
|
int |
getChildrenCount(T node,
String name)
Returns the number of children of the specified node with the given name.
|
protected abstract NodeHandler<T> |
getDecoratedNodeHandler()
Returns the
NodeHandler object that is decorated by this
instance. |
<C> List<T> |
getMatchingChildren(T node,
NodeMatcher<C> matcher,
C criterion)
Returns an unmodifiable list of all children of the specified node which
are matched by the passed in
NodeMatcher against the provided
criterion. |
<C> int |
getMatchingChildrenCount(T node,
NodeMatcher<C> matcher,
C criterion)
Returns the number of children of the specified node which are matched by
the given
NodeMatcher . |
T |
getParent(T node)
Returns the parent of the specified node.
|
T |
getRootNode()
Returns the root node of the underlying hierarchy.
|
Object |
getValue(T node)
Returns 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.
|
String |
nodeName(T node)
Returns the name of the specified node
|
public String nodeName(T node)
NodeHandler
nodeName
in interface NodeHandler<T>
node
- the nodepublic Object getValue(T node)
NodeHandler
getValue
in interface NodeHandler<T>
node
- the nodepublic T getParent(T node)
NodeHandler
getParent
in interface NodeHandler<T>
node
- the nodepublic List<T> getChildren(T node)
NodeHandler
getChildren
in interface NodeHandler<T>
node
- the nodepublic <C> List<T> getMatchingChildren(T node, NodeMatcher<C> matcher, C criterion)
NodeHandler
NodeMatcher
against the provided
criterion. This method allows for advanced queries on a node's children.getMatchingChildren
in interface NodeHandler<T>
C
- the type of the criterionnode
- the nodematcher
- the NodeMatcher
defining filter criteriacriterion
- the criterion to be matched against; this object is
passed to the NodeMatcher
public <C> int getMatchingChildrenCount(T node, NodeMatcher<C> matcher, C criterion)
NodeHandler
NodeMatcher
. This is a more generic version of
NodeHandler.getChildrenCount(Object, String)
. It allows checking for
arbitrary filter conditions.getMatchingChildrenCount
in interface NodeHandler<T>
C
- the type of the criterionnode
- the nodematcher
- the NodeMatcher
criterion
- the criterion to be passed to the NodeMatcher
public List<T> getChildren(T node, String name)
NodeHandler
getChildren
in interface NodeHandler<T>
node
- the nodename
- the name of the desired child nodespublic T getChild(T node, int index)
NodeHandler
getChild
in interface NodeHandler<T>
node
- the nodeindex
- the index (0-based)public int indexOfChild(T parent, T child)
NodeHandler
NodeHandler.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.indexOfChild
in interface NodeHandler<T>
parent
- the parent nodechild
- a child node whose index is to be retrievedpublic int getChildrenCount(T node, String name)
NodeHandler
getChildrenCount
in interface NodeHandler<T>
node
- the nodename
- the name of the children in question (can be null for
all children)public Set<String> getAttributes(T node)
NodeHandler
getAttributes
in interface NodeHandler<T>
node
- the nodepublic boolean hasAttributes(T node)
NodeHandler
hasAttributes
in interface NodeHandler<T>
node
- the nodepublic Object getAttributeValue(T node, String name)
NodeHandler
NodeHandler
supports attributes with multiple values,
result might be a collection.getAttributeValue
in interface NodeHandler<T>
node
- the nodename
- the name of the attributepublic boolean isDefined(T node)
NodeHandler
isDefined
in interface NodeHandler<T>
node
- the node to testpublic T getRootNode()
NodeHandler
getRootNode
in interface NodeHandler<T>
protected abstract NodeHandler<T> getDecoratedNodeHandler()
NodeHandler
object that is decorated by this
instance. All method calls are delegated to this object.NodeHandler
Copyright © 2001–2020 The Apache Software Foundation. All rights reserved.