##### Coverage Report - org.apache.commons.configuration.tree.ConfigurationNode

Classes in this File | Line Coverage | Branch Coverage | Complexity
ConfigurationNode |
N/A | N/A
N/A | N/A
| 1.0;1

1 |  |
     /*
2 |  |
      * Licensed to the Apache Software Foundation (ASF) under one or more
3 |  |
      * contributor license agreements.  See the NOTICE file distributed with
4 |  |
      * this work for additional information regarding copyright ownership.
5 |  |
      * The ASF licenses this file to You under the Apache License, Version 2.0
6 |  |
      * (the "License"); you may not use this file except in compliance with
7 |  |
      * the License.  You may obtain a copy of the License at
8 |  |
      *
9 |  |
      *     http://www.apache.org/licenses/LICENSE-2.0
10 |  |
      *
11 |  |
      * Unless required by applicable law or agreed to in writing, software
12 |  |
      * distributed under the License is distributed on an "AS IS" BASIS,
13 |  |
      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 |  |
      * See the License for the specific language governing permissions and
15 |  |
      * limitations under the License.
16 |  |
      */
17 |  |
     package org.apache.commons.configuration.tree;
18 |  |
19 |  |
     import java.util.List;
20 |  |
21 |  |
     /**
22 |  |
      * <p>
23 |  |
      * Definition of an interface for the nodes of a hierarchical configuration.
24 |  |
      * </p>
25 |  |
      * <p>
26 |  |
      * This interface defines a tree like structure for configuration data. A node
27 |  |
      * has a value and can have an arbitrary number of children and attribures.
28 |  |
      * </p>
29 |  |
      *
30 |  |
      * @since 1.3
31 |  |
      * @author Oliver Heger
32 |  |
      * @version $Id: ConfigurationNode.java 439648 2006-09-02 20:42:10Z oheger $
33 |  |
      */
34 |  |
     public interface ConfigurationNode
35 |  |
     {
36 |  |
         /**
37 |  |
          * Returns the name of this node.
38 |  |
          *
39 |  |
          * @return the node name
40 |  |
          */
41 |  |
         String getName();
42 |  |
43 |  |
         /**
44 |  |
          * Sets the name of this node.
45 |  |
          *
46 |  |
          * @param name the node name
47 |  |
          */
48 |  |
         void setName(String name);
49 |  |
50 |  |
         /**
51 |  |
          * Returns the value of this node.
52 |  |
          *
53 |  |
          * @return the node's value
54 |  |
          */
55 |  |
         Object getValue();
56 |  |
57 |  |
         /**
58 |  |
          * Sets the value of this node.
59 |  |
          *
60 |  |
          * @param val the node's value
61 |  |
          */
62 |  |
         void setValue(Object val);
63 |  |
64 |  |
         /**
65 |  |
          * Returns this node's reference.
66 |  |
          *
67 |  |
          * @return the reference
68 |  |
          */
69 |  |
         Object getReference();
70 |  |
71 |  |
         /**
72 |  |
          * Sets this node's reference. This reference can be used by concrete
73 |  |
          * Configuration implementations to store data associated with each node. A
74 |  |
          * XML based configuration for instance could here store a reference to the
75 |  |
          * corresponding DOM element.
76 |  |
          *
77 |  |
          * @param ref the reference
78 |  |
          */
79 |  |
         void setReference(Object ref);
80 |  |
81 |  |
         /**
82 |  |
          * Returns this node's parent. Can be <b>null</b>, then this node is the
83 |  |
          * top level node.
84 |  |
          *
85 |  |
          * @return the parent of this node
86 |  |
          */
87 |  |
         ConfigurationNode getParentNode();
88 |  |
89 |  |
         /**
90 |  |
          * Sets the parent of this node.
91 |  |
          *
92 |  |
          * @param parent the parent of this node
93 |  |
          */
94 |  |
         void setParentNode(ConfigurationNode parent);
95 |  |
96 |  |
         /**
97 |  |
          * Adds a child to this node.
98 |  |
          *
99 |  |
          * @param node the new child
100 |  |
          */
101 |  |
         void addChild(ConfigurationNode node);
102 |  |
103 |  |
         /**
104 |  |
          * Returns a list with the child nodes of this node. The nodes in this list
105 |  |
          * should be in the order they were inserted into this node.
106 |  |
          *
107 |  |
          * @return a list with the children of this node (never <b>null</b>)
108 |  |
          */
109 |  |
         List getChildren();
110 |  |
111 |  |
         /**
112 |  |
          * Returns the number of this node's children.
113 |  |
          *
114 |  |
          * @return the number of the children of this node
115 |  |
          */
116 |  |
         int getChildrenCount();
117 |  |
118 |  |
         /**
119 |  |
          * Returns a list with all children of this node with the given name.
120 |  |
          *
121 |  |
          * @param name the name of the searched children
122 |  |
          * @return a list with all child nodes with this name (never <b>null</b>)
123 |  |
          */
124 |  |
         List getChildren(String name);
125 |  |
126 |  |
         /**
127 |  |
          * Returns the number of children with the given name.
128 |  |
          *
129 |  |
          * @param name the name
130 |  |
          * @return the number of children with this name
131 |  |
          */
132 |  |
         int getChildrenCount(String name);
133 |  |
134 |  |
         /**
135 |  |
          * Returns the child node with the given index. If the index does not
136 |  |
          * exist, an exception will be thrown.
137 |  |
          * @param index the index of the child node (0-based)
138 |  |
          * @return the child node with this index
139 |  |
          */
140 |  |
         ConfigurationNode getChild(int index);
141 |  |
142 |  |
         /**
143 |  |
          * Removes the given node from this node's children.
144 |  |
          *
145 |  |
          * @param child the child node to be removed
146 |  |
          * @return a flag if the node could be removed
147 |  |
          */
148 |  |
         boolean removeChild(ConfigurationNode child);
149 |  |
150 |  |
         /**
151 |  |
          * Removes all child nodes of this node with the given name.
152 |  |
          *
153 |  |
          * @param childName the name of the children to be removed
154 |  |
          * @return a flag if at least one child was removed
155 |  |
          */
156 |  |
         boolean removeChild(String childName);
157 |  |
158 |  |
         /**
159 |  |
          * Removes all children from this node.
160 |  |
          */
161 |  |
         void removeChildren();
162 |  |
163 |  |
         /**
164 |  |
          * Returns a flag whether this node is an attribute.
165 |  |
          *
166 |  |
          * @return a flag whether this node is an attribute
167 |  |
          */
168 |  |
         boolean isAttribute();
169 |  |
170 |  |
         /**
171 |  |
          * Sets a flag whether this node is an attribute.
172 |  |
          *
173 |  |
          * @param f the attribute flag
174 |  |
          */
175 |  |
         void setAttribute(boolean f);
176 |  |
177 |  |
         /**
178 |  |
          * Returns a list with this node's attributes. Attributes are also modeled
179 |  |
          * as <code>ConfigurationNode</code> objects.
180 |  |
          *
181 |  |
          * @return a list with the attributes
182 |  |
          */
183 |  |
         List getAttributes();
184 |  |
185 |  |
         /**
186 |  |
          * Returns the number of attributes of this node.
187 |  |
          * @return the number of attributes
188 |  |
          */
189 |  |
         int getAttributeCount();
190 |  |
191 |  |
         /**
192 |  |
          * Returns a list with the attribute nodes with the given name. Attributes
193 |  |
          * with same names can be added multiple times, so the return value of this
194 |  |
          * method is a list.
195 |  |
          *
196 |  |
          * @param name the name of the attribute
197 |  |
          * @return the attribute nodes with this name (never <b>null</b>)
198 |  |
          */
199 |  |
         List getAttributes(String name);
200 |  |
201 |  |
         /**
202 |  |
          * Returns the number of attributes with the given name.
203 |  |
          *
204 |  |
          * @param name the name of the attribute
205 |  |
          * @return the number of attributes with this name
206 |  |
          */
207 |  |
         int getAttributeCount(String name);
208 |  |
209 |  |
         /**
210 |  |
          * Returns the attribute node with the given index. If no such index exists,
211 |  |
          * an exception will be thrown.
212 |  |
          * @param index the index
213 |  |
          * @return the attribute node with this index
214 |  |
          */
215 |  |
         ConfigurationNode getAttribute(int index);
216 |  |
217 |  |
         /**
218 |  |
          * Removes the specified attribute from this node.
219 |  |
          *
220 |  |
          * @param node the attribute to remove
221 |  |
          * @return a flag if the node could be removed
222 |  |
          */
223 |  |
         boolean removeAttribute(ConfigurationNode node);
224 |  |
225 |  |
         /**
226 |  |
          * Removes all attributes with the given name.
227 |  |
          *
228 |  |
          * @param name the name of the attributes to be removed
229 |  |
          * @return a flag if at least one attribute was removed
230 |  |
          */
231 |  |
         boolean removeAttribute(String name);
232 |  |
233 |  |
         /**
234 |  |
          * Removes all attributes of this node.
235 |  |
          */
236 |  |
         void removeAttributes();
237 |  |
238 |  |
         /**
239 |  |
          * Adds the specified attribute to this node
240 |  |
          *
241 |  |
          * @param attr the attribute node
242 |  |
          */
243 |  |
         void addAttribute(ConfigurationNode attr);
244 |  |
245 |  |
         /**
246 |  |
          * Returns a flag if this node is defined. This means that the node contains
247 |  |
          * some data.
248 |  |
          *
249 |  |
          * @return a flag whether this node is defined
250 |  |
          */
251 |  |
         boolean isDefined();
252 |  |
253 |  |
         /**
254 |  |
          * Visits this node and all its sub nodes. This method provides a simple
255 |  |
          * means for going through a hierarchical structure of configuration nodes.
256 |  |
          *
257 |  |
          * @see ConfigurationNodeVisitor
258 |  |
          * @param visitor the visitor
259 |  |
          */
260 |  |
         void visit(ConfigurationNodeVisitor visitor);
261 |  |
262 |  |
         /**
263 |  |
          * Returns a copy of this node.
264 |  |
          * @return the copy
265 |  |
          */
266 |  |
         Object clone();
267 |  |
     }