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 2009/09/27 22:05:51 UTC

svn commit: r819395 - in /commons/proper/configuration/trunk: src/java/org/apache/commons/configuration/HierarchicalConfiguration.java src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java xdocs/changes.xml

Author: oheger
Date: Sun Sep 27 20:05:50 2009
New Revision: 819395

URL: http://svn.apache.org/viewvc?rev=819395&view=rev
Log:
CONFIGURATION-396: HierarchicalConfiguration.NodeVisitor is now passed the correct key to its visitAfterChildren() method.

Modified:
    commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java
    commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java
    commons/proper/configuration/trunk/xdocs/changes.xml

Modified: commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java?rev=819395&r1=819394&r2=819395&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java Sun Sep 27 20:05:50 2009
@@ -1356,11 +1356,11 @@
                 }
             }
 
+            visitor.visitAfterChildren(this, key);
             if (key != null)
             {
                 key.setLength(length);
             }
-            visitor.visitAfterChildren(this, key);
         }
     }
 

Modified: commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java?rev=819395&r1=819394&r2=819395&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java Sun Sep 27 20:05:50 2009
@@ -766,8 +766,27 @@
     {
         CountVisitor v = new CountVisitor();
         config.getRoot().visit(v, null);
-        assertEquals(28, v.beforeCount);
-        assertEquals(v.beforeCount, v.afterCount);
+        assertEquals("Wrong number of visits", 28, v.beforeCount);
+        assertEquals("Different number of before and after visits",
+                v.beforeCount, v.afterCount);
+    }
+
+    /**
+     * Tests the visitor mechanism if a ConfigurationKey is passed in.
+     */
+    public void testNodeVisitorKeys()
+    {
+        CountVisitor v = new CountVisitor();
+        ConfigurationKey configKey = new ConfigurationKey();
+        config.getRoot().visit(v, configKey);
+        for (Iterator it = config.getKeys(); it.hasNext();)
+        {
+            String key = (String) it.next();
+            assertTrue("Key not found in before keys: " + key, v.beforeKeys
+                    .contains(key));
+            assertTrue("Key not found in after keys: " + key, v.afterKeys
+                    .contains(key));
+        }
     }
 
     /**
@@ -1112,20 +1131,36 @@
      */
     static class CountVisitor extends HierarchicalConfiguration.NodeVisitor
     {
-        public int beforeCount;
+        /** The number of invocations of visitBeforeChildren(). */
+        int beforeCount;
+
+        /** The number of invocations of visitAfterChildren(). */
+        int afterCount;
 
-        public int afterCount;
+        /** A set with the keys passed to visitBeforeChildren(). */
+        final Set beforeKeys = new HashSet();
+
+        /** A set with the keys passed to visitAfterChildren(). */
+        final Set afterKeys = new HashSet();
 
         public void visitAfterChildren(Node node, ConfigurationKey key)
         {
             super.visitAfterChildren(node, key);
             afterCount++;
+            if (key != null)
+            {
+                afterKeys.add(key.toString());
+            }
         }
 
         public void visitBeforeChildren(Node node, ConfigurationKey key)
         {
             super.visitBeforeChildren(node, key);
             beforeCount++;
+            if (key != null)
+            {
+                beforeKeys.add(key.toString());
+            }
         }
     }
 }

Modified: commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/xdocs/changes.xml?rev=819395&r1=819394&r2=819395&view=diff
==============================================================================
--- commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ commons/proper/configuration/trunk/xdocs/changes.xml Sun Sep 27 20:05:50 2009
@@ -23,6 +23,10 @@
 
   <body>
     <release version="1.7" date="in SVN" description="">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-396">
+        HierarchicalConfiguration.NodeVisitor is now passed the correct key to
+        its visitAfterChildren() method.
+      </action>
       <action dev="oheger" type="fix" issue="CONFIGURATION-393">
         BaseConfiguration.clone() now also clones collections stored in the
         internal map. This causes list properties to be handled correctly.