/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.configuration.tree;
import java.util.List;
Definition of an interface for the nodes of a hierarchical configuration.
This interface defines a tree like structure for configuration data. A node
has a value and can have an arbitrary number of children and attributes.
Author: Commons
Configuration team Since: 1.3 Version: $Id: ConfigurationNode.java 1234988 2012-01-23 21:12:15Z oheger $
/**
* <p>
* Definition of an interface for the nodes of a hierarchical configuration.
* </p>
* <p>
* This interface defines a tree like structure for configuration data. A node
* has a value and can have an arbitrary number of children and attributes.
* </p>
*
* @since 1.3
* @author <a
* href="http://commons.apache.org/configuration/team-list.html">Commons
* Configuration team</a>
* @version $Id: ConfigurationNode.java 1234988 2012-01-23 21:12:15Z oheger $
*/
public interface ConfigurationNode
{
Returns the name of this node.
Returns: the node name
/**
* Returns the name of this node.
*
* @return the node name
*/
String getName();
Sets the name of this node.
Params: - name – the node name
/**
* Sets the name of this node.
*
* @param name the node name
*/
void setName(String name);
Returns the value of this node.
Returns: the node's value
/**
* Returns the value of this node.
*
* @return the node's value
*/
Object getValue();
Sets the value of this node.
Params: - val – the node's value
/**
* Sets the value of this node.
*
* @param val the node's value
*/
void setValue(Object val);
Returns this node's reference.
Returns: the reference
/**
* Returns this node's reference.
*
* @return the reference
*/
Object getReference();
Sets this node's reference. This reference can be used by concrete
Configuration implementations to store data associated with each node. A
XML based configuration for instance could here store a reference to the
corresponding DOM element.
Params: - ref – the reference
/**
* Sets this node's reference. This reference can be used by concrete
* Configuration implementations to store data associated with each node. A
* XML based configuration for instance could here store a reference to the
* corresponding DOM element.
*
* @param ref the reference
*/
void setReference(Object ref);
Returns this node's parent. Can be null, then this node is the
top level node.
Returns: the parent of this node
/**
* Returns this node's parent. Can be <b>null</b>, then this node is the
* top level node.
*
* @return the parent of this node
*/
ConfigurationNode getParentNode();
Sets the parent of this node.
Params: - parent – the parent of this node
/**
* Sets the parent of this node.
*
* @param parent the parent of this node
*/
void setParentNode(ConfigurationNode parent);
Adds a child to this node.
Params: - node – the new child
/**
* Adds a child to this node.
*
* @param node the new child
*/
void addChild(ConfigurationNode node);
Returns a list with the child nodes of this node. The nodes in this list
should be in the order they were inserted into this node.
Returns: a list with the children of this node (never null)
/**
* Returns a list with the child nodes of this node. The nodes in this list
* should be in the order they were inserted into this node.
*
* @return a list with the children of this node (never <b>null</b>)
*/
List<ConfigurationNode> getChildren();
Returns the number of this node's children.
Returns: the number of the children of this node
/**
* Returns the number of this node's children.
*
* @return the number of the children of this node
*/
int getChildrenCount();
Returns a list with all children of this node with the given name.
Params: - name – the name of the searched children
Returns: a list with all child nodes with this name (never null)
/**
* Returns a list with all children of this node with the given name.
*
* @param name the name of the searched children
* @return a list with all child nodes with this name (never <b>null</b>)
*/
List<ConfigurationNode> getChildren(String name);
Returns the number of children with the given name.
Params: - name – the name
Returns: the number of children with this name
/**
* Returns the number of children with the given name.
*
* @param name the name
* @return the number of children with this name
*/
int getChildrenCount(String name);
Returns the child node with the given index. If the index does not
exist, an exception will be thrown.
Params: - index – the index of the child node (0-based)
Returns: the child node with this index
/**
* Returns the child node with the given index. If the index does not
* exist, an exception will be thrown.
* @param index the index of the child node (0-based)
* @return the child node with this index
*/
ConfigurationNode getChild(int index);
Removes the given node from this node's children.
Params: - child – the child node to be removed
Returns: a flag if the node could be removed
/**
* Removes the given node from this node's children.
*
* @param child the child node to be removed
* @return a flag if the node could be removed
*/
boolean removeChild(ConfigurationNode child);
Removes all child nodes of this node with the given name.
Params: - childName – the name of the children to be removed
Returns: a flag if at least one child was removed
/**
* Removes all child nodes of this node with the given name.
*
* @param childName the name of the children to be removed
* @return a flag if at least one child was removed
*/
boolean removeChild(String childName);
Removes all children from this node.
/**
* Removes all children from this node.
*/
void removeChildren();
Returns a flag whether this node is an attribute.
Returns: a flag whether this node is an attribute
/**
* Returns a flag whether this node is an attribute.
*
* @return a flag whether this node is an attribute
*/
boolean isAttribute();
Sets a flag whether this node is an attribute.
Params: - f – the attribute flag
/**
* Sets a flag whether this node is an attribute.
*
* @param f the attribute flag
*/
void setAttribute(boolean f);
Returns a list with this node's attributes. Attributes are also modeled as ConfigurationNode
objects. Returns: a list with the attributes
/**
* Returns a list with this node's attributes. Attributes are also modeled
* as {@code ConfigurationNode} objects.
*
* @return a list with the attributes
*/
List<ConfigurationNode> getAttributes();
Returns the number of attributes of this node.
Returns: the number of attributes
/**
* Returns the number of attributes of this node.
* @return the number of attributes
*/
int getAttributeCount();
Returns a list with the attribute nodes with the given name. Attributes
with same names can be added multiple times, so the return value of this
method is a list.
Params: - name – the name of the attribute
Returns: the attribute nodes with this name (never null)
/**
* Returns a list with the attribute nodes with the given name. Attributes
* with same names can be added multiple times, so the return value of this
* method is a list.
*
* @param name the name of the attribute
* @return the attribute nodes with this name (never <b>null</b>)
*/
List<ConfigurationNode> getAttributes(String name);
Returns the number of attributes with the given name.
Params: - name – the name of the attribute
Returns: the number of attributes with this name
/**
* Returns the number of attributes with the given name.
*
* @param name the name of the attribute
* @return the number of attributes with this name
*/
int getAttributeCount(String name);
Returns the attribute node with the given index. If no such index exists,
an exception will be thrown.
Params: - index – the index
Returns: the attribute node with this index
/**
* Returns the attribute node with the given index. If no such index exists,
* an exception will be thrown.
* @param index the index
* @return the attribute node with this index
*/
ConfigurationNode getAttribute(int index);
Removes the specified attribute from this node.
Params: - node – the attribute to remove
Returns: a flag if the node could be removed
/**
* Removes the specified attribute from this node.
*
* @param node the attribute to remove
* @return a flag if the node could be removed
*/
boolean removeAttribute(ConfigurationNode node);
Removes all attributes with the given name.
Params: - name – the name of the attributes to be removed
Returns: a flag if at least one attribute was removed
/**
* Removes all attributes with the given name.
*
* @param name the name of the attributes to be removed
* @return a flag if at least one attribute was removed
*/
boolean removeAttribute(String name);
Removes all attributes of this node.
/**
* Removes all attributes of this node.
*/
void removeAttributes();
Adds the specified attribute to this node
Params: - attr – the attribute node
/**
* Adds the specified attribute to this node
*
* @param attr the attribute node
*/
void addAttribute(ConfigurationNode attr);
Returns a flag if this node is defined. This means that the node contains
some data.
Returns: a flag whether this node is defined
/**
* Returns a flag if this node is defined. This means that the node contains
* some data.
*
* @return a flag whether this node is defined
*/
boolean isDefined();
Visits this node and all its sub nodes. This method provides a simple
means for going through a hierarchical structure of configuration nodes.
Params: - visitor – the visitor
See Also: - ConfigurationNodeVisitor
/**
* Visits this node and all its sub nodes. This method provides a simple
* means for going through a hierarchical structure of configuration nodes.
*
* @see ConfigurationNodeVisitor
* @param visitor the visitor
*/
void visit(ConfigurationNodeVisitor visitor);
Returns a copy of this node.
Returns: the copy
/**
* Returns a copy of this node.
* @return the copy
*/
Object clone();
}