Class ImmutableNode.Builder
java.lang.Object
org.apache.commons.configuration2.tree.ImmutableNode.Builder
- Enclosing class:
- ImmutableNode
A builder class for creating instances of ImmutableNode
.
This class can be used to set all properties of an immutable node instance. Eventually call the create()
method to obtain the resulting instance.
Implementation note: This class is not thread-safe. It is intended to be used to define a single node instance only.
-
Field Summary
FieldsModifier and TypeFieldDescriptionA map for storing the attributes of the new node.private List<ImmutableNode>
A list for the children of the new node.The direct map of attributes of the new node.private final List<ImmutableNode>
The direct list of children of the new node.private String
The name of the node.private Object
The value of the node. -
Constructor Summary
ConstructorsModifierConstructorDescriptionBuilder()
Creates a new instance ofBuilder
which does not contain any property definitions yet.Builder
(int childCount) Creates a new instance ofBuilder
and sets the number of expected child nodes.private
Creates a new instance ofBuilder
and initializes the attributes of the new node and prepares the collection for the children.private
Creates a new instance ofBuilder
and initializes the children and attributes of the new node. -
Method Summary
Modifier and TypeMethodDescriptionaddAttribute
(String name, Object value) Adds an attribute to this builder.addAttributes
(Map<String, ?> attrs) Adds all attributes of the given map to this builder.Adds a child node to this builder.addChildren
(Collection<? extends ImmutableNode> children) Adds multiple child nodes to this builder.create()
Creates a newImmutableNode
instance based on the properties set for this builder.Creates a map with the attributes of the newly created node.(package private) List<ImmutableNode>
Creates a list with the children of the newly created node.private void
Ensures that the map for the attributes exists.private void
Ensures that the collection for the child nodes exists.private static Collection<? extends ImmutableNode>
filterNull
(Collection<? extends ImmutableNode> children) Filters null entries from the passed in collection with child nodes.private void
initChildrenCollection
(int childCount) Creates the collection for child nodes based on the expected number of children.Sets the name of the node to be created.Sets the value of the node to be created.
-
Field Details
-
directChildren
The direct list of children of the new node. -
directAttributes
The direct map of attributes of the new node. -
children
A list for the children of the new node. This list is populated by theaddChild()
method. -
attributes
A map for storing the attributes of the new node. This map is populated byaddAttribute()
. -
name
The name of the node. -
value
The value of the node.
-
-
Constructor Details
-
Builder
public Builder()Creates a new instance ofBuilder
which does not contain any property definitions yet. -
Builder
public Builder(int childCount) Creates a new instance ofBuilder
and sets the number of expected child nodes. Using this constructor helps the class to create a properly sized list for the child nodes to be added.- Parameters:
childCount
- the number of child nodes
-
Builder
Creates a new instance ofBuilder
and initializes the children and attributes of the new node. This constructor is used internally by theImmutableNode
class for creating instances derived from another node. The passed in collections are passed directly to the newly created instance; thus they already need to be immutable. (Background is that the creation of intermediate objects is to be avoided.)- Parameters:
dirChildren
- the children of the new nodedirAttrs
- the attributes of the new node
-
Builder
Creates a new instance ofBuilder
and initializes the attributes of the new node and prepares the collection for the children. This constructor is used internally by methods ofImmutableNode
which update the node and change the children. The new number of child nodes can be passed so that the collection for the new children can be created with an appropriate size.- Parameters:
childCount
- the expected number of new childrendirAttrs
- the attributes of the new node
-
-
Method Details
-
name
Sets the name of the node to be created.- Parameters:
n
- the node name- Returns:
- a reference to this object for method chaining
-
value
Sets the value of the node to be created.- Parameters:
v
- the value- Returns:
- a reference to this object for method chaining
-
addChild
Adds a child node to this builder. The passed in node becomes a child of the newly created node. If it is null, it is ignored.- Parameters:
c
- the child node (must not be null)- Returns:
- a reference to this object for method chaining
-
addChildren
Adds multiple child nodes to this builder. This method works likeaddChild(ImmutableNode)
, but it allows setting a number of child nodes at once.- Parameters:
children
- a collection with the child nodes to be added- Returns:
- a reference to this object for method chaining
-
addAttribute
Adds an attribute to this builder. The passed in attribute key and value are stored in an internal map. If there is already an attribute with this name, it is overridden.- Parameters:
name
- the attribute namevalue
- the attribute value- Returns:
- a reference to this object for method chaining
-
addAttributes
Adds all attributes of the given map to this builder. This method works likeaddAttribute(String, Object)
, but it allows setting multiple attributes at once.- Parameters:
attrs
- the map with attributes to be added (may be null- Returns:
- a reference to this object for method chaining
-
create
Creates a newImmutableNode
instance based on the properties set for this builder.- Returns:
- the newly created
ImmutableNode
-
createChildren
List<ImmutableNode> createChildren()Creates a list with the children of the newly created node. The list returned here is always immutable. It depends on the way this builder was populated.- Returns:
- the list with the children of the new node
-
createAttributes
Creates a map with the attributes of the newly created node. This is an immutable map. If direct attributes were set, they are returned. Otherwise an unmodifiable map from the attributes passed to this builder is constructed.- Returns:
- a map with the attributes for the new node
-
ensureChildrenExist
private void ensureChildrenExist()Ensures that the collection for the child nodes exists. It is created on demand. -
ensureAttributesExist
private void ensureAttributesExist()Ensures that the map for the attributes exists. It is created on demand. -
initChildrenCollection
private void initChildrenCollection(int childCount) Creates the collection for child nodes based on the expected number of children.- Parameters:
childCount
- the expected number of new children
-
filterNull
private static Collection<? extends ImmutableNode> filterNull(Collection<? extends ImmutableNode> children) Filters null entries from the passed in collection with child nodes.- Parameters:
children
- the collection to be filtered- Returns:
- the collection with null entries removed
-