1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration.tree;
18
19 /***
20 * <p>
21 * Definition of a <em>Visitor</em> interface for a configuration node
22 * structure.
23 * </p>
24 * <p>
25 * The <code>ConfigurationNode</code> interface defines a <code>visit()</code>,
26 * which simplifies traversal of a complex node hierarchy. A configuration node
27 * implementation must provide a way of visiting all nodes in the current
28 * hierarchy. This is a typical application of the GoF <em>Visitor</em>
29 * pattern.
30 * </p>
31 *
32 * @since 1.3
33 * @see ConfigurationNode
34 * @author Oliver Heger
35 */
36 public interface ConfigurationNodeVisitor
37 {
38 /***
39 * Visits the specified node. This method is called before eventually
40 * existing children of this node are processed.
41 *
42 * @param node the node to be visited
43 */
44 void visitBeforeChildren(ConfigurationNode node);
45
46 /***
47 * Visits the specified node. This method is called after eventually
48 * existing children of this node have been processed.
49 *
50 * @param node the node to be visited
51 */
52 void visitAfterChildren(ConfigurationNode node);
53
54 /***
55 * Returns a flag whether the actual visit process should be aborted. This
56 * method allows a visitor implementation to state that it does not need any
57 * further data. It may be used e.g. by visitors that search for a certain
58 * node in the hierarchy. After that node was found, there is no need to
59 * process the remaining nodes, too.
60 *
61 * @return a flag if the visit process should be stopped
62 */
63 boolean terminate();
64 }