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 2014/03/23 21:35:25 UTC

svn commit: r1580603 - in /commons/proper/configuration/branches/immutableNodes/src: main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java

Author: oheger
Date: Sun Mar 23 20:35:25 2014
New Revision: 1580603

URL: http://svn.apache.org/r1580603
Log:
Fixed a problem with list delimiter handling in hierarchical configurations.

AbstractHierarchicalConfiguration must override addPropertyInternal() rather
than addPropertyDirect() to guarantee correct list delimiter handling.

Modified:
    commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java
    commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java

Modified: commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java?rev=1580603&r1=1580602&r2=1580603&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java Sun Mar 23 20:35:25 2014
@@ -348,11 +348,16 @@ public abstract class AbstractHierarchic
      * @param obj the value of the new property
      */
     @Override
-    protected void addPropertyDirect(String key, Object obj)
+    protected void addPropertyInternal(String key, Object obj)
     {
         getModel().addProperty(key, getListDelimiterHandler().parse(obj), this);
     }
 
+    @Override
+    protected void addPropertyDirect(String key, Object value) {
+        // will not be called
+    }
+
     /**
      * Adds a collection of nodes at the specified position of the configuration
      * tree. This method works similar to {@code addProperty()}, but

Modified: commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java?rev=1580603&r1=1580602&r2=1580603&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java Sun Mar 23 20:35:25 2014
@@ -803,6 +803,20 @@ public class TestAbstractHierarchicalCon
     }
 
     /**
+     * Tests whether list handling works correctly when adding properties.
+     */
+    @Test
+    public void testAddPropertyWithListHandling()
+    {
+        config.setListDelimiterHandler(new DefaultListDelimiterHandler(','));
+        final String key = "list.delimiter.value";
+        config.addProperty(key + ".escaped", "3\\,1415");
+        config.addProperty(key + ".elements", "3,1415");
+        assertEquals("Wrong escaped property", "3,1415", config.getString(key + ".escaped"));
+        assertEquals("Wrong list property", "3", config.getString(key + ".elements"));
+    }
+
+    /**
      * Tests whether node keys can be resolved.
      */
     @Test