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 2012/12/15 22:03:26 UTC

svn commit: r1422355 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java

Author: oheger
Date: Sat Dec 15 21:03:25 2012
New Revision: 1422355

URL: http://svn.apache.org/viewvc?rev=1422355&view=rev
Log:
Added missing synchronized keywords.
Added a method for copying configuration and error listeners.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java?rev=1422355&r1=1422354&r2=1422355&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicConfigurationBuilder.java Sat Dec 15 21:03:25 2012
@@ -329,7 +329,7 @@ public class BasicConfigurationBuilder<T
      * @param l the listener to be registered
      * @return a reference to this builder for method chaining
      */
-    public BasicConfigurationBuilder<T> addErrorListener(
+    public synchronized BasicConfigurationBuilder<T> addErrorListener(
             ConfigurationErrorListener l)
     {
         errorListeners.add(l);
@@ -345,7 +345,7 @@ public class BasicConfigurationBuilder<T
      * @param l the listener to be removed
      * @return a reference to this builder for method chaining
      */
-    public BasicConfigurationBuilder<T> removeErrorListener(
+    public synchronized BasicConfigurationBuilder<T> removeErrorListener(
             ConfigurationErrorListener l)
     {
         errorListeners.remove(l);
@@ -599,6 +599,29 @@ public class BasicConfigurationBuilder<T
     }
 
     /**
+     * Copies all {@code ConfigurationListener} and
+     * {@code ConfigurationErrorListener} objects to the specified target
+     * configuration builder. This method is intended to be used by derived
+     * classes which support inheritance of their properties to other builder
+     * objects.
+     *
+     * @param target the target configuration builder (must not be <b>null</b>)
+     * @throws NullPointerException if the target builder is <b>null</b>
+     */
+    protected synchronized void copyEventListeners(
+            BasicConfigurationBuilder<?> target)
+    {
+        for (ConfigurationListener l : configListeners)
+        {
+            target.addConfigurationListener(l);
+        }
+        for (ConfigurationErrorListener l : errorListeners)
+        {
+            target.addErrorListener(l);
+        }
+    }
+
+    /**
      * Replaces the current map with parameters by a new one.
      *
      * @param newParams the map with new parameters (may be <b>null</b>)

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java?rev=1422355&r1=1422354&r2=1422355&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java Sat Dec 15 21:03:25 2012
@@ -34,6 +34,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.ConfigurationRuntimeException;
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.beanutils.BeanDeclaration;
 import org.apache.commons.configuration.event.ConfigurationErrorListener;
 import org.apache.commons.configuration.event.ConfigurationListener;
@@ -444,6 +445,31 @@ public class TestBasicConfigurationBuild
     }
 
     /**
+     * Tests whether event listeners can be copied to another builder.
+     */
+    @Test
+    public void testCopyEventListeners() throws ConfigurationException
+    {
+        ConfigurationListener cl =
+                EasyMock.createMock(ConfigurationListener.class);
+        ConfigurationErrorListener el =
+                EasyMock.createMock(ConfigurationErrorListener.class);
+        BasicConfigurationBuilder<PropertiesConfiguration> builder =
+                new BasicConfigurationBuilder<PropertiesConfiguration>(
+                        PropertiesConfiguration.class);
+        builder.addConfigurationListener(cl).addErrorListener(el);
+        BasicConfigurationBuilder<XMLConfiguration> builder2 =
+                new BasicConfigurationBuilder<XMLConfiguration>(
+                        XMLConfiguration.class);
+        builder.copyEventListeners(builder2);
+        XMLConfiguration config = builder2.getConfiguration();
+        assertTrue("Configuration listener not found", config
+                .getConfigurationListeners().contains(cl));
+        assertTrue("Error listener not found", config.getErrorListeners()
+                .contains(el));
+    }
+
+    /**
      * Tests whether parameters starting with a reserved prefix are filtered out
      * before result objects are initialized.
      */