T - the type of the nodes managed by this modelpublic interface NodeModel<T>
Definition of an interface describing a model based on a nodes structure.
This interface can be used for dealing with hierarchical, tree-like data. It defines basic operations for manipulating the tree structure which use keys to select the nodes affected.
The idea behind this interface is that concrete implementations can be used
by hierarchical configurations. This makes it possible to integrate various
hierarchical structures with the API of a hierarchical configuration, e.g.
configuration nodes stored in memory, JNDI contexts, or other structures. The
configuration object interacts with the underlying data structure via this
interface. For more complex operations access to an ExpressionEngine
may be required in order to interpret the passed in keys. For these purposes
a NodeKeyResolver has to be provided which knows how to deal with
keys.
| Modifier and Type | Method and Description |
|---|---|
void |
addNodes(String key,
Collection<? extends T> nodes,
NodeKeyResolver<T> resolver)
Adds a collection of new nodes to this model.
|
void |
addProperty(String key,
Iterable<?> values,
NodeKeyResolver<T> resolver)
Adds a new property to this node model consisting of an arbitrary number
of values.
|
void |
clear(NodeKeyResolver<T> resolver)
Removes all data from this model.
|
void |
clearProperty(String key,
NodeKeyResolver<T> resolver)
Clears the value of a property.
|
Object |
clearTree(String key,
NodeKeyResolver<T> resolver)
Removes the sub trees defined by the given key from this model.
|
ImmutableNode |
getInMemoryRepresentation()
Returns a representation of the data stored in this model in form of a
nodes hierarchy of
ImmutableNode objects. |
NodeHandler<T> |
getNodeHandler()
Returns a
NodeHandler for dealing with the nodes managed by this
model. |
void |
setProperty(String key,
Object value,
NodeKeyResolver<T> resolver)
Changes the value of a property.
|
void |
setRootNode(T newRoot)
Sets a new root node for this model.
|
void setRootNode(T newRoot)
newRoot - the new root node to be set (can be null, then an
empty root node is set)NodeHandler<T> getNodeHandler()
NodeHandler for dealing with the nodes managed by this
model.NodeHandlervoid addProperty(String key, Iterable<?> values, NodeKeyResolver<T> resolver)
NodeAddData object defining the add operation to be performed.key - the keyvalues - the values to be added at the position defined by the keyresolver - the NodeKeyResolvervoid addNodes(String key, Collection<? extends T> nodes, NodeKeyResolver<T> resolver)
addNodes() method of the HierarchicalConfiguration
interface. The new nodes are either added to an existing node (if the
passed in key selects exactly one node) or to a newly created node. The
passed in NodeKeyResolver is used to interpret the given key.key - the keynodes - the collection of nodes to be added (may be null)resolver - the NodeKeyResolverIllegalArgumentException - if the key references an attribute (of
course, it is not possible to add something to an attribute)void setProperty(String key, Object value, NodeKeyResolver<T> resolver)
NodeKeyResolver which will produce a corresponding
NodeUpdateData object. Based on the content of this object,
update operations are performed.key - the keyvalue - the new value for this property (to be evaluated by the
NodeKeyResolver)resolver - the NodeKeyResolverObject clearTree(String key, NodeKeyResolver<T> resolver)
NodeKeyResolver and removed from the model.key - the key selecting the properties to be removedresolver - the NodeKeyResolvervoid clearProperty(String key, NodeKeyResolver<T> resolver)
clearTree(String, NodeKeyResolver): However, the nodes
referenced by the passed in key are not removed completely, but only
their value is set to null.key - the key selecting the properties to be clearedresolver - the NodeKeyResolvervoid clear(NodeKeyResolver<T> resolver)
resolver - the NodeKeyResolverImmutableNode getInMemoryRepresentation()
ImmutableNode objects. A concrete model
implementation can use an arbitrary means to store its data. When a
model's data is to be used together with other functionality of the
Configuration library (e.g. when combining multiple
configuration sources) it has to be transformed into a common format.
This is done by this method. ImmutableNode is a generic
representation of a hierarchical structure. Thus, it should be possible
to generate a corresponding structure from arbitrary model data.Copyright © 2001–2020 The Apache Software Foundation. All rights reserved.