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.
*/