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/01/17 22:17:39 UTC

svn commit: r1434918 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/builder/combined/ test/java/org/apache/commons/configuration/builder/combined/

Author: oheger
Date: Thu Jan 17 21:17:38 2013
New Revision: 1434918

URL: http://svn.apache.org/viewvc?rev=1434918&view=rev
Log:
Implemented a special clone() implementation for CombinedBuilderParametersImpl.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedBuilderParametersImpl.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedBuilderParametersImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedBuilderParametersImpl.java?rev=1434918&r1=1434917&r2=1434918&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedBuilderParametersImpl.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedBuilderParametersImpl.java Thu Jan 17 21:17:38 2013
@@ -20,6 +20,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.configuration.ConfigurationUtils;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.builder.BasicBuilderParameters;
 import org.apache.commons.configuration.builder.BuilderParameters;
@@ -318,4 +319,18 @@ public class CombinedBuilderParametersIm
         params.put(PARAM_KEY, this);
         return params;
     }
+
+    /**
+     * {@inheritDoc} This implementation also clones the parameters object for
+     * the definition builder if possible.
+     */
+    @Override
+    public CombinedBuilderParametersImpl clone()
+    {
+        CombinedBuilderParametersImpl copy =
+                (CombinedBuilderParametersImpl) super.clone();
+        copy.setDefinitionBuilderParameters((BuilderParameters) ConfigurationUtils
+                .cloneIfPossible(getDefinitionBuilderParameters()));
+        return copy;
+    }
 }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java?rev=1434918&r1=1434917&r2=1434918&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java Thu Jan 17 21:17:38 2013
@@ -18,6 +18,7 @@ package org.apache.commons.configuration
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
@@ -31,6 +32,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.builder.BasicConfigurationBuilder;
 import org.apache.commons.configuration.builder.BuilderParameters;
 import org.apache.commons.configuration.builder.ConfigurationBuilder;
+import org.apache.commons.configuration.builder.XMLBuilderParametersImpl;
 import org.easymock.EasyMock;
 import org.junit.Test;
 
@@ -319,4 +321,30 @@ public class TestCombinedBuilderParamete
         assertSame("Wrong def parameters", defparams,
                 params.getDefinitionBuilderParameters());
     }
+
+    /**
+     * Tests whether cloning works as expected.
+     */
+    @Test
+    public void testClone()
+    {
+        CombinedBuilderParametersImpl params =
+                new CombinedBuilderParametersImpl();
+        params.setBasePath("some base path");
+        XMLBuilderParametersImpl defParams = new XMLBuilderParametersImpl();
+        defParams.setSystemID("someSysID");
+        params.setDefinitionBuilderParameters(defParams);
+        CombinedBuilderParametersImpl clone = params.clone();
+        assertEquals("Wrong field value", params.getBasePath(),
+                clone.getBasePath());
+        assertNotSame("Parameters object not cloned",
+                params.getDefinitionBuilderParameters(),
+                clone.getDefinitionBuilderParameters());
+        assertEquals(
+                "Wrong field value in parameters object",
+                params.getDefinitionBuilderParameters().getParameters()
+                        .get("systemID"),
+                clone.getDefinitionBuilderParameters().getParameters()
+                        .get("systemID"));
+    }
 }