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 22:09:54 UTC
svn commit: r1612685 - in /commons/proper/configuration/trunk/src:
main/java/org/apache/commons/configuration/builder/
main/java/org/apache/commons/configuration/builder/combined/
test/java/org/apache/commons/configuration/builder/
Author: oheger
Date: Tue Jul 22 20:09:54 2014
New Revision: 1612685
URL: http://svn.apache.org/r1612685
Log:
Removed BUILDER_OPTIONAL literal from EventSourceSupport.
As ConfigurationBuilder extends EventSource and now all listeners are
registered via the event source methods, all configuration builders provide a
valid EventSource implementation. Thus, the code in
BuilderConfigurationWrapperFactory could be simplified.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BuilderConfigurationWrapperFactory.java
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiFileConfigurationBuilderProvider.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBuilderConfigurationWrapperFactory.java
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BuilderConfigurationWrapperFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BuilderConfigurationWrapperFactory.java?rev=1612685&r1=1612684&r2=1612685&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BuilderConfigurationWrapperFactory.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BuilderConfigurationWrapperFactory.java Tue Jul 22 20:09:54 2014
@@ -210,26 +210,10 @@ public class BuilderConfigurationWrapper
* associated {@code ConfigurationBuilder} object. If this option is
* used, generated {@code Configuration} objects provide a fully
* functional implementation of {@code EventSource} by delegating to the
- * builder. It is expected that the builder defines the methods
- * {@code addConfigurationListener()} and
- * {@code removeConfigurationListener()}, to which the methods of the
- * {@code EventSource} interface are mapped. This is the case for all
- * builder implementations derived from
- * {@code BasicConfigurationBuilder}. If these methods are not
- * available, an exception is thrown.
+ * builder. Because the {@code ConfigurationBuilder} interface extends
+ * {@code EventSource} this delegation is always possible.
*/
- BUILDER,
-
- /**
- * {@code EventSource} support is implemented by delegating to the
- * associated {@code ConfigurationBuilder} object like for the type
- * {@code BUILDER}. However, if the builder does not define the methods
- * {@code addConfigurationListener()} and
- * {@code removeConfigurationListener()}, the builder is used as event
- * source itself (i.e. the methods {@code addEventListener()} or
- * {@code removeEventListener()} are called.
- */
- BUILDER_OPTIONAL
+ BUILDER
}
/**
@@ -240,18 +224,6 @@ public class BuilderConfigurationWrapper
private static class BuilderConfigurationWrapperInvocationHandler implements
InvocationHandler
{
- /** The name of the event source method for removing a listener. */
- private static final String METHOD_SOURCE_REMOVE =
- "removeEventListener";
-
- /** The name of the builder method for adding a listener. */
- private static final String METHOD_BUILDER_ADD =
- "addConfigurationListener";
-
- /** The name of the builder method for removing a listener. */
- private static final String METHOD_BUILDER_REMOVE =
- "removeConfigurationListener";
-
/** The wrapped builder. */
private final ConfigurationBuilder<? extends Configuration> builder;
@@ -331,53 +303,10 @@ public class BuilderConfigurationWrapper
private Object handleEventSourceInvocation(Method method, Object[] args)
throws Exception
{
- Object target;
- Method methodToInvoke;
- if (EventSourceSupport.DUMMY == eventSourceSupport)
- {
- target = ConfigurationUtils.asEventSource(this, true);
- methodToInvoke = method;
- }
- else
- {
- target = builder;
- methodToInvoke = findBuilderMethod(method);
- if (methodToInvoke == null)
- {
- if (EventSourceSupport.BUILDER == eventSourceSupport)
- {
- throw new ConfigurationRuntimeException(
- "Could not delegate event source operation to builder!");
- }
- methodToInvoke = method;
- }
- }
-
- return methodToInvoke.invoke(target, args);
- }
-
- /**
- * Determines the method on the builder to be called for the specified
- * event source method. If no such method can be found, result is
- * <b>null</b>.
- *
- * @param method the event source method to be called
- * @return the corresponding builder method or <b>null</b>
- */
- private Method findBuilderMethod(Method method)
- {
- String builderMethodName =
- METHOD_SOURCE_REMOVE.equals(method.getName()) ? METHOD_BUILDER_REMOVE
- : METHOD_BUILDER_ADD;
- try
- {
- return builder.getClass().getMethod(builderMethodName,
- method.getParameterTypes());
- }
- catch (NoSuchMethodException e)
- {
- return null;
- }
+ Object target =
+ (EventSourceSupport.DUMMY == eventSourceSupport) ? ConfigurationUtils
+ .asEventSource(this, true) : builder;
+ return method.invoke(target, args);
}
}
}
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiFileConfigurationBuilderProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiFileConfigurationBuilderProvider.java?rev=1612685&r1=1612684&r2=1612685&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiFileConfigurationBuilderProvider.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiFileConfigurationBuilderProvider.java Tue Jul 22 20:09:54 2014
@@ -120,7 +120,7 @@ public class MultiFileConfigurationBuild
: Configuration.class;
return BuilderConfigurationWrapperFactory
.createBuilderConfigurationWrapper(ifcClass, builder,
- EventSourceSupport.BUILDER_OPTIONAL);
+ EventSourceSupport.BUILDER);
}
/**
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBuilderConfigurationWrapperFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBuilderConfigurationWrapperFactory.java?rev=1612685&r1=1612684&r2=1612685&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBuilderConfigurationWrapperFactory.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBuilderConfigurationWrapperFactory.java Tue Jul 22 20:09:54 2014
@@ -34,7 +34,6 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.event.EventListenerTestImpl;
import org.apache.commons.configuration.event.EventSource;
import org.apache.commons.configuration.ex.ConfigurationException;
-import org.apache.commons.configuration.ex.ConfigurationRuntimeException;
import org.easymock.EasyMock;
import org.junit.Test;
@@ -144,31 +143,10 @@ public class TestBuilderConfigurationWra
}
/**
- * Tests EventSource support level 'builder'.
- */
- @Test(expected = ConfigurationRuntimeException.class)
- public void testEventSourceSupportBuilder()
- {
- BaseHierarchicalConfiguration conf =
- new BaseHierarchicalConfiguration();
- ConfigurationBuilder<BaseHierarchicalConfiguration> builder =
- createBuilderMock(conf);
- EasyMock.replay(builder);
- BuilderConfigurationWrapperFactory factory =
- new BuilderConfigurationWrapperFactory(
- EventSourceSupport.BUILDER);
- EventSource src =
- (EventSource) factory.createBuilderConfigurationWrapper(
- HierarchicalConfiguration.class, builder);
- src.addEventListener(ConfigurationEvent.ANY, null);
- }
-
- /**
* Tests whether EventSource methods can be delegated to the builder.
*/
@Test
- public void testEventSourceSupportBuilderOptionalSupported()
- throws ConfigurationException
+ public void testEventSourceSupportBuilder() throws ConfigurationException
{
BasicConfigurationBuilder<PropertiesConfiguration> builder =
new BasicConfigurationBuilder<PropertiesConfiguration>(
@@ -177,7 +155,7 @@ public class TestBuilderConfigurationWra
EventListener<ConfigurationEvent> l2 = new EventListenerTestImpl(null);
BuilderConfigurationWrapperFactory factory =
new BuilderConfigurationWrapperFactory(
- EventSourceSupport.BUILDER_OPTIONAL);
+ EventSourceSupport.BUILDER);
EventSource src =
(EventSource) factory.createBuilderConfigurationWrapper(
Configuration.class, builder);
@@ -198,26 +176,25 @@ public class TestBuilderConfigurationWra
}
/**
- * Tests EventSource support level 'builder optional' if the builder does
- * not provide support.
+ * Tests whether event source support of level builder is possible even for a
+ * mock builder.
*/
@Test
- public void testEventSourceSupportBuilderOptionalNotSupported()
+ public void testEventSourceSupportMockBuilder()
{
BaseHierarchicalConfiguration conf =
new BaseHierarchicalConfiguration();
- EventListener<ConfigurationEvent> listener = new EventListenerTestImpl(null);
ConfigurationBuilder<BaseHierarchicalConfiguration> builder =
createBuilderMock(conf);
+ EventListenerTestImpl listener = new EventListenerTestImpl(null);
builder.addEventListener(ConfigurationEvent.ANY, listener);
EasyMock.replay(builder);
+
BuilderConfigurationWrapperFactory factory =
- new BuilderConfigurationWrapperFactory(
- EventSourceSupport.BUILDER_OPTIONAL);
+ new BuilderConfigurationWrapperFactory(EventSourceSupport.BUILDER);
EventSource src =
(EventSource) factory.createBuilderConfigurationWrapper(
HierarchicalConfiguration.class, builder);
-
src.addEventListener(ConfigurationEvent.ANY, listener);
EasyMock.verify(builder);
}
@@ -230,7 +207,7 @@ public class TestBuilderConfigurationWra
{
BuilderConfigurationWrapperFactory factory =
new BuilderConfigurationWrapperFactory(
- EventSourceSupport.BUILDER_OPTIONAL);
+ EventSourceSupport.BUILDER);
factory.createBuilderConfigurationWrapper(null,
createBuilderMock(new BaseHierarchicalConfiguration()));
}