public abstract class NodeCombiner extends Object
A base class for node combiner implementations.
A node combiner is an object that knows how two hierarchical node structures can be combined into a single one. Of course, there are many possible ways of implementing such a combination, e.g. constructing a union, an intersection, or an "override" structure (were nodes in the first hierarchy take precedence over nodes in the second hierarchy). This abstract base class only provides some helper methods and defines the common interface for node combiners. Concrete sub classes will implement the diverse combination algorithms.
For some concrete combiner implementations it is important to distinguish
whether a node is a single node or whether it belongs to a list structure.
Alone from the input structures, the combiner will not always be able to make
this decision. So sometimes it may be necessary for the developer to
configure the combiner and tell it, which nodes should be treated as list
nodes. For this purpose the addListNode()
method exists. It
can be passed the name of a node, which should be considered a list node.
Modifier and Type | Field and Description |
---|---|
protected static NodeHandler<ImmutableNode> |
HANDLER
A default handler object for immutable nodes.
|
Constructor and Description |
---|
NodeCombiner()
Creates a new instance of
NodeCombiner . |
Modifier and Type | Method and Description |
---|---|
void |
addListNode(String nodeName)
Adds the name of a node to the list of known list nodes.
|
abstract ImmutableNode |
combine(ImmutableNode node1,
ImmutableNode node2)
Combines the hierarchies represented by the given root nodes.
|
Set<String> |
getListNodes()
Returns a set with the names of nodes that are known to be list nodes.
|
boolean |
isListNode(ImmutableNode node)
Checks if a node is a list node.
|
protected static final NodeHandler<ImmutableNode> HANDLER
public void addListNode(String nodeName)
nodeName
- the name to be addedpublic Set<String> getListNodes()
public boolean isListNode(ImmutableNode node)
node
- the node to be testedpublic abstract ImmutableNode combine(ImmutableNode node1, ImmutableNode node2)
node1
- the first root nodenode2
- the second root nodeCopyright © 2001–2020 The Apache Software Foundation. All rights reserved.