You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2008/03/02 21:35:04 UTC
svn commit: r632836 -
/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java
Author: oheger
Date: Sun Mar 2 12:35:03 2008
New Revision: 632836
URL: http://svn.apache.org/viewvc?rev=632836&view=rev
Log:
Added generic NodeVisitor interface
Added:
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java (with props)
Added: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java?rev=632836&view=auto
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java (added)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java Sun Mar 2 12:35:03 2008
@@ -0,0 +1,75 @@
+/*
+ * 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.configuration2.expr;
+
+/**
+ * <p>
+ * Definition of a <em>visitor</em> interface for a node structure used by a
+ * configuration.
+ * </p>
+ * <p>
+ * Hierarchical configurations often need to traverse their internal nodes in a
+ * structured manner. While the concrete type of the nodes used differs for
+ * specific configuration implementations, the overall structure is always
+ * similar: The nodes form a tree-like structure, each node can have a value and
+ * an arbitrary number of attributes.
+ * </p>
+ * <p>
+ * This interface defines a generic visitor (according to the GoF
+ * <em>Visitor</em> pattern) that can deal with such structures. It defines
+ * methods for visiting each node of a structure before or after its children
+ * have been processed. These methods are also passed a
+ * <code>{@link NodeHandler}</code> reference, which can be used for accessing
+ * further properties of the node (e.g. its attributes) or manipulating it. With
+ * an additional method the traversal process can be aborted.
+ * </p>
+ *
+ * @author Oliver Heger
+ * @version $Id$
+ * @param <T> the type of the involved nodes
+ */
+public interface NodeVisitor<T>
+{
+ /**
+ * Visits the specified node before its children are processed. This method
+ * is called for all nodes in the currently processed hierarchy.
+ *
+ * @param node the node to be visited
+ * @param handler the node handler
+ */
+ void visitBeforeChildren(T node, NodeHandler<T> handler);
+
+ /**
+ * Visits the specified node after its children have been processed. This
+ * method is called for all nodes in the currently processed hierarchy.
+ *
+ * @param node the node to be visited
+ * @param handler the node handler
+ */
+ void visitAfterChildren(T node, NodeHandler<T> handler);
+
+ /**
+ * Returns a flag whether the actual visit process should be aborted. This
+ * method allows a visitor implementation to state that it does not need any
+ * further data. It may be used e.g. by visitors that search for a certain
+ * node in the hierarchy. After that node was found, there is no need to
+ * process the remaining nodes, too.
+ *
+ * @return a flag if the visit process should be stopped
+ */
+ boolean terminate();
+}
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/expr/NodeVisitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain