Class ImmutableNode
java.lang.Object
org.apache.commons.configuration2.tree.ImmutableNode
- All Implemented Interfaces:
Iterable<ImmutableNode>
An immutable default implementation for configuration nodes.
This class is used for an in-memory representation of hierarchical configuration data. It stores typical information like a node name, a value, child nodes, or attributes.
After their creation, instances cannot be manipulated. There are methods for updating properties, but these methods
return new ImmutableNode
instances. Instances are created using the nested Builder
class.
- Since:
- 2.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
A builder class for creating instances ofImmutableNode
. -
Field Summary
FieldsModifier and TypeFieldDescriptionA map with the attributes of this node.private final List<ImmutableNode>
A collection with the child nodes of this node.private final String
The name of this node.private final Object
The value of this node. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
Creates a new instance ofImmutableNode
from the givenBuilder
object. -
Method Summary
Modifier and TypeMethodDescriptionaddChild
(ImmutableNode child) Creates a newImmutableNode
instance which is a copy of this object, but has the given child node added.private static void
checkChildNode
(ImmutableNode child) Checks whether the given child node is not null.private ImmutableNode
Initializes the given builder with basic properties (node name and value) and returns the newly created node.private ImmutableNode
createWithNewAttributes
(Map<String, Object> newAttrs) Creates a newImmutableNode
instance with the same properties as this object, but with the given new attributes.Gets a map with the attributes of this node.Gets a list with the children of this node.getChildren
(String name) Returns a list with the children of this node.Gets the name of this node.getValue()
Gets the value of this node.iterator()
removeAttribute
(String name) Returns a newImmutableNode
instance which is a copy of this object, but with the specified attribute removed.removeChild
(ImmutableNode child) Returns a newImmutableNode
instance which is a copy of this object, but with the given child node removed.replaceChild
(ImmutableNode oldChild, ImmutableNode newChild) Returns a newImmutableNode
instance which is a copy of this object, but with the given child replaced by the new one.replaceChildren
(Collection<ImmutableNode> newChildren) Returns a newImmutableNode
instance which is a copy of this object, but with the children replaced by the ones in the passed in collection.setAttribute
(String name, Object value) Returns a newImmutableNode
instance which is a copy of this object, but with the specified attribute set to the given value.setAttributes
(Map<String, ?> newAttributes) Returns a newImmutableNode
instance which is a copy of this object, but with all attributes added defined by the given map.Creates a newImmutableNode
instance which is a copy of this object with the name changed to the passed in value.Creates a newImmutableNode
instance which is a copy of this object with the value changed to the passed in value.stream()
Returns a sequentialStream
with this node as its source.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
nodeName
The name of this node. -
value
The value of this node. -
children
A collection with the child nodes of this node. -
attributes
A map with the attributes of this node.
-
-
Constructor Details
-
ImmutableNode
Creates a new instance ofImmutableNode
from the givenBuilder
object.- Parameters:
b
- theBuilder
-
-
Method Details
-
getNodeName
Gets the name of this node.- Returns:
- the name of this node
-
getValue
Gets the value of this node.- Returns:
- the value of this node
-
getChildren
Gets a list with the children of this node. This list cannot be modified.- Returns:
- a list with the child nodes
-
getChildren
Returns a list with the children of this node.- Parameters:
name
- the node name to find- Returns:
- a list with the child nodes
-
getAttributes
Gets a map with the attributes of this node. This map cannot be modified.- Returns:
- a map with this node's attributes
-
setName
Creates a newImmutableNode
instance which is a copy of this object with the name changed to the passed in value.- Parameters:
name
- the name of the newly created node- Returns:
- the new node with the changed name
-
setValue
Creates a newImmutableNode
instance which is a copy of this object with the value changed to the passed in value.- Parameters:
newValue
- the value of the newly created node- Returns:
- the new node with the changed value
-
addChild
Creates a newImmutableNode
instance which is a copy of this object, but has the given child node added.- Parameters:
child
- the child node to be added (must not be null)- Returns:
- the new node with the child node added
- Throws:
IllegalArgumentException
- if the child node is null
-
removeChild
Returns a newImmutableNode
instance which is a copy of this object, but with the given child node removed. If the child node does not belong to this node, the same node instance is returned.- Parameters:
child
- the child node to be removed- Returns:
- the new node with the child node removed
-
replaceChild
Returns a newImmutableNode
instance which is a copy of this object, but with the given child replaced by the new one. If the child to be replaced cannot be found, the same node instance is returned.- Parameters:
oldChild
- the child node to be replacednewChild
- the replacing child node (must not be null)- Returns:
- the new node with the child replaced
- Throws:
IllegalArgumentException
- if the new child node is null
-
replaceChildren
Returns a newImmutableNode
instance which is a copy of this object, but with the children replaced by the ones in the passed in collection. With this method all children can be replaced in a single step. For the collection the same rules apply as forImmutableNode.Builder.addChildren(Collection)
.- Parameters:
newChildren
- the collection with the new children (may be null)- Returns:
- the new node with replaced children
-
setAttribute
Returns a newImmutableNode
instance which is a copy of this object, but with the specified attribute set to the given value. If an attribute with this name does not exist, it is created now. Otherwise, the new value overrides the old one.- Parameters:
name
- the name of the attributevalue
- the attribute value- Returns:
- the new node with this attribute
-
setAttributes
Returns a newImmutableNode
instance which is a copy of this object, but with all attributes added defined by the given map. This method is analogous tosetAttribute(String, Object)
, but all attributes in the given map are added. If the map is null or empty, this method has no effect.- Parameters:
newAttributes
- the map with attributes to be added- Returns:
- the new node with these attributes
-
removeAttribute
Returns a newImmutableNode
instance which is a copy of this object, but with the specified attribute removed. If there is no attribute with the given name, the same node instance is returned.- Parameters:
name
- the name of the attribute- Returns:
- the new node without this attribute
-
createWithBasicProperties
Initializes the given builder with basic properties (node name and value) and returns the newly created node. This is a helper method for updating a node when only children or attributes are affected.- Parameters:
builder
- the already prepared builder- Returns:
- the newly created node
-
createWithNewAttributes
Creates a newImmutableNode
instance with the same properties as this object, but with the given new attributes.- Parameters:
newAttrs
- the new attributes- Returns:
- the new node instance
-
checkChildNode
Checks whether the given child node is not null. This check is done at multiple places to ensure that newly added child nodes are always defined.- Parameters:
child
- the child node to be checked- Throws:
IllegalArgumentException
- if the child node is null
-
iterator
- Specified by:
iterator
in interfaceIterable<ImmutableNode>
- Returns:
- An iterator of
child nodes.
- Since:
- 2.8.0
-
stream
Returns a sequentialStream
with this node as its source.- Returns:
- a sequential
Stream
over the elements in this node. - Since:
- 2.9.0
-
toString
-