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/07/22 21:58:28 UTC

svn commit: r1612664 - 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: Tue Jul 22 19:58:27 2014
New Revision: 1612664

URL: http://svn.apache.org/r1612664
Log:
BasicConfigurationBuilder now support the EventListenerProvider interface.

If a parameters object passed to the configure() method implements this
interface, the listeners it contains are added to the configuration builder.

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=1612664&r1=1612663&r2=1612664&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 Tue Jul 22 19:58:27 2014
@@ -262,6 +262,7 @@ public class BasicConfigurationBuilder<T
         for (BuilderParameters p : params)
         {
             newParams.putAll(p.getParameters());
+            handleEventListenerProviders(p);
         }
 
         return setParameters(newParams);
@@ -663,6 +664,22 @@ public class BasicConfigurationBuilder<T
     }
 
     /**
+     * Checks whether the specified parameters object implements the
+     * {@code EventListenerProvider} interface. If so, the event listeners it
+     * provides are added to this builder.
+     *
+     * @param params the parameters object
+     */
+    private void handleEventListenerProviders(BuilderParameters params)
+    {
+        if (params instanceof EventListenerProvider)
+        {
+            configListeners.addAll(((EventListenerProvider) params)
+                    .getListeners());
+        }
+    }
+
+    /**
      * Checks whether the class of the result configuration is compatible with
      * this builder's result class. This is done to ensure that only objects of
      * the expected result class are created.

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=1612664&r1=1612663&r2=1612664&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 Tue Jul 22 19:58:27 2014
@@ -48,6 +48,8 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.event.ConfigurationEvent;
 import org.apache.commons.configuration.event.ErrorListenerTestImpl;
 import org.apache.commons.configuration.event.EventListener;
+import org.apache.commons.configuration.event.EventListenerRegistrationData;
+import org.apache.commons.configuration.event.EventListenerTestImpl;
 import org.apache.commons.configuration.ex.ConfigurationException;
 import org.apache.commons.configuration.ex.ConfigurationRuntimeException;
 import org.apache.commons.configuration.reloading.ReloadingController;
@@ -434,6 +436,33 @@ public class TestBasicConfigurationBuild
     }
 
     /**
+     * Tests whether configuration listeners can be defined via the configure()
+     * method.
+     */
+    @Test
+    public void testEventListenerConfiguration() throws ConfigurationException
+    {
+        EventListenerTestImpl listener1 = new EventListenerTestImpl(null);
+        EventListenerRegistrationData<ConfigurationErrorEvent> regData =
+                new EventListenerRegistrationData<ConfigurationErrorEvent>(
+                        ConfigurationErrorEvent.WRITE,
+                        new ErrorListenerTestImpl(null));
+        BasicConfigurationBuilder<PropertiesConfiguration> builder =
+                new BasicConfigurationBuilder<PropertiesConfiguration>(
+                        PropertiesConfiguration.class)
+                        .configure(new EventListenerParameters()
+                                .addEventListener(ConfigurationEvent.ANY,
+                                        listener1).addEventListener(regData));
+        PropertiesConfiguration config = builder.getConfiguration();
+        assertTrue("Configuration listener not found", config
+                .getEventListeners(ConfigurationEvent.ANY).contains(listener1));
+        assertTrue(
+                "Error listener not found",
+                config.getEventListeners(regData.getEventType()).contains(
+                        regData.getListener()));
+    }
+
+    /**
      * Tests whether parameters starting with a reserved prefix are filtered out
      * before result objects are initialized.
      */