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 2013/04/12 22:25:24 UTC

svn commit: r1467447 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/MapConfiguration.java test/java/org/apache/commons/configuration/TestMapConfiguration.java

Author: oheger
Date: Fri Apr 12 20:25:24 2013
New Revision: 1467447

URL: http://svn.apache.org/r1467447
Log:
[CONFIGURATION-524] MapConfiguration.clone() now ensures that the
configuration's interpolator is cloned, too.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestMapConfiguration.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java?rev=1467447&r1=1467446&r2=1467447&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java Fri Apr 12 20:25:24 2013
@@ -239,6 +239,7 @@ public class MapConfiguration extends Ab
             @SuppressWarnings("unchecked")
             Map<String, Object> clonedMap = (Map<String, Object>) ConfigurationUtils.clone(map);
             copy.map = clonedMap;
+            copy.cloneInterpolator(this);
             return copy;
         }
         catch (CloneNotSupportedException cex)

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestMapConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestMapConfiguration.java?rev=1467447&r1=1467446&r2=1467447&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestMapConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestMapConfiguration.java Fri Apr 12 20:25:24 2013
@@ -108,6 +108,25 @@ public class TestMapConfiguration extend
     }
 
     /**
+     * Tests whether interpolation works as expected after cloning.
+     */
+    @Test
+    public void testCloneInterpolation()
+    {
+        final String keyAnswer = "answer";
+        final String keyValue = "value";
+        MapConfiguration config = (MapConfiguration) getConfiguration();
+        config.addProperty(keyAnswer, "The answer is ${" + keyValue + "}.");
+        config.addProperty(keyValue, 42);
+        MapConfiguration clone = (MapConfiguration) config.clone();
+        clone.setProperty(keyValue, 43);
+        assertEquals("Wrong interpolation in original", "The answer is 42.",
+                config.getString(keyAnswer));
+        assertEquals("Wrong interpolation in clone", "The answer is 43.",
+                clone.getString(keyAnswer));
+    }
+
+    /**
      * Tests adding another value to an existing property.
      */
     @Test