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/07/13 21:27:20 UTC

svn commit: r1502845 - 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/ test/java/org/apache...

Author: oheger
Date: Sat Jul 13 19:27:19 2013
New Revision: 1502845

URL: http://svn.apache.org/r1502845
Log:
BasicBuilderParameters now supports the new listDelimiterHandler property.

The properties for the list delimiter character and for disabling list
delimiter parsing were removed. This caused a bunch of changes in several test
classes.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderParameters.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderProperties.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilderProvider.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicConfigurationBuilder.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedBuilderParameters.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestJndiBuilderParametersImpl.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestBaseConfigurationBuilderProvider.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedBuilderParametersImpl.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiFileConfigurationBuilder.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/fluent/TestParameters.java
    commons/proper/configuration/trunk/src/test/resources/testCCMultiTenent.xml
    commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder4.xml
    commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder5.xml

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderParameters.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderParameters.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderParameters.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderParameters.java Sat Jul 13 19:27:19 2013
@@ -21,6 +21,8 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.configuration.AbstractConfiguration;
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.interpol.ConfigurationInterpolator;
 import org.apache.commons.configuration.interpol.InterpolatorSpecification;
 import org.apache.commons.configuration.interpol.Lookup;
@@ -54,12 +56,8 @@ public class BasicBuilderParameters impl
     private static final String PROP_THROW_EXCEPTION_ON_MISSING =
             "throwExceptionOnMissing";
 
-    /** The key of the <em>delimiterParsingDisabled</em> property. */
-    private static final String PROP_DELIMITER_PARSING_DISABLED =
-            "delimiterParsingDisabled";
-
-    /** The key of the <em>listDelimiter</em> property. */
-    private static final String PROP_LIST_DELIMITER = "listDelimiter";
+    /** The key of the <em>listDelimiterHandler</em> property. */
+    private static final String PROP_LIST_DELIMITER_HANDLER = "listDelimiterHandler";
 
     /** The key of the <em>logger</em> property. */
     private static final String PROP_LOGGER = "logger";
@@ -88,7 +86,6 @@ public class BasicBuilderParameters impl
     public BasicBuilderParameters()
     {
         properties = new HashMap<String, Object>();
-        initDefaults();
     }
 
     /**
@@ -127,21 +124,6 @@ public class BasicBuilderParameters impl
     }
 
     /**
-     * Sets the value of the <em>delimiterParsingDisabled</em> property. This
-     * property controls whether the configuration should look for list
-     * delimiter characters in the values of newly added properties. If the
-     * property value is <b>true</b> and such characters are encountered,
-     * multiple values are stored for the affected property.
-     *
-     * @param b the value of the property
-     * @return a reference to this object for method chaining
-     */
-    public BasicBuilderParameters setDelimiterParsingDisabled(boolean b)
-    {
-        return setProperty(PROP_DELIMITER_PARSING_DISABLED, Boolean.valueOf(b));
-    }
-
-    /**
      * Sets the value of the <em>throwExceptionOnMissing</em> property. This
      * property controls the configuration's behavior if missing properties are
      * queried: a value of <b>true</b> causes the configuration to throw an
@@ -158,17 +140,20 @@ public class BasicBuilderParameters impl
     }
 
     /**
-     * Sets the value of the <em>listDelimiter</em> property. This property
-     * defines the list delimiter character. It is evaluated only if the
-     * <em>delimiterParsingDisabled</em> property is set to <b>false</b>.
+     * Sets the value of the <em>listDelimiterHandler</em> property. This
+     * property defines the object responsible for dealing with list delimiter
+     * and escaping characters. Note: {@link AbstractConfiguration} does not
+     * allow setting this property to <b>null</b>. If the default
+     * {@code ListDelimiterHandler} is to be used, do not call this method.
      *
-     * @param c the list delimiter character
+     * @param handler the {@code ListDelimiterHandler}
      * @return a reference to this object for method chaining
-     * @see #setDelimiterParsingDisabled(boolean)
+     * @see AbstractConfiguration#setListDelimiterHandler(ListDelimiterHandler)
      */
-    public BasicBuilderParameters setListDelimiter(char c)
+    public BasicBuilderParameters setListDelimiterHandler(
+            ListDelimiterHandler handler)
     {
-        return setProperty(PROP_LIST_DELIMITER, Character.valueOf(c));
+        return setProperty(PROP_LIST_DELIMITER_HANDLER, handler);
     }
 
     /**
@@ -360,14 +345,6 @@ public class BasicBuilderParameters impl
     }
 
     /**
-     * Sets default parameter values.
-     */
-    private void initDefaults()
-    {
-        properties.put(PROP_DELIMITER_PARSING_DISABLED, Boolean.TRUE);
-    }
-
-    /**
      * Helper method for setting a property value.
      *
      * @param key the key of the property

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderProperties.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderProperties.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderProperties.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/BasicBuilderProperties.java Sat Jul 13 19:27:19 2013
@@ -19,6 +19,8 @@ package org.apache.commons.configuration
 import java.util.Collection;
 import java.util.Map;
 
+import org.apache.commons.configuration.AbstractConfiguration;
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.interpol.ConfigurationInterpolator;
 import org.apache.commons.configuration.interpol.Lookup;
 import org.apache.commons.configuration.sync.Synchronizer;
@@ -53,18 +55,6 @@ public interface BasicBuilderProperties<
     T setLogger(Log log);
 
     /**
-     * Sets the value of the <em>delimiterParsingDisabled</em> property. This
-     * property controls whether the configuration should look for list
-     * delimiter characters in the values of newly added properties. If the
-     * property value is <b>true</b> and such characters are encountered,
-     * multiple values are stored for the affected property.
-     *
-     * @param b the value of the property
-     * @return a reference to this object for method chaining
-     */
-    T setDelimiterParsingDisabled(boolean b);
-
-    /**
      * Sets the value of the <em>throwExceptionOnMissing</em> property. This
      * property controls the configuration's behavior if missing properties are
      * queried: a value of <b>true</b> causes the configuration to throw an
@@ -78,15 +68,17 @@ public interface BasicBuilderProperties<
     T setThrowExceptionOnMissing(boolean b);
 
     /**
-     * Sets the value of the <em>listDelimiter</em> property. This property
-     * defines the list delimiter character. It is evaluated only if the
-     * <em>delimiterParsingDisabled</em> property is set to <b>false</b>.
+     * Sets the value of the <em>listDelimiterHandler</em> property. This
+     * property defines the object responsible for dealing with list delimiter
+     * and escaping characters. Note: {@link AbstractConfiguration} does not
+     * allow setting this property to <b>null</b>. If the default
+     * {@code ListDelimiterHandler} is to be used, do not call this method.
      *
-     * @param c the list delimiter character
+     * @param handler the {@code ListDelimiterHandler}
      * @return a reference to this object for method chaining
-     * @see #setDelimiterParsingDisabled(boolean)
+     * @see AbstractConfiguration#setListDelimiterHandler(ListDelimiterHandler)
      */
-    T setListDelimiter(char c);
+    T setListDelimiterHandler(ListDelimiterHandler handler);
 
     /**
      * Sets the {@code ConfigurationInterpolator} to be used for this

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilderProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilderProvider.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilderProvider.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilderProvider.java Sat Jul 13 19:27:19 2013
@@ -126,8 +126,7 @@ public class CombinedConfigurationBuilde
     private static void setUpBasicParameters(CombinedConfiguration config,
             BasicBuilderParameters params)
     {
-        params.setDelimiterParsingDisabled(config.isDelimiterParsingDisabled())
-                .setListDelimiter(config.getListDelimiter())
+        params.setListDelimiterHandler(config.getListDelimiterHandler())
                 .setLogger(config.getLogger())
                 .setThrowExceptionOnMissing(config.isThrowExceptionOnMissing());
     }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java Sat Jul 13 19:27:19 2013
@@ -29,6 +29,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.interpol.ConfigurationInterpolator;
 import org.apache.commons.configuration.interpol.InterpolatorSpecification;
 import org.apache.commons.configuration.interpol.Lookup;
@@ -61,9 +62,7 @@ public class TestBasicBuilderParameters
     public void testDefaults()
     {
         Map<String, Object> paramMap = params.getParameters();
-        assertEquals("Wrong number of parameters", 1, paramMap.size());
-        assertEquals("Delimiter flag not set", Boolean.TRUE,
-                paramMap.get("delimiterParsingDisabled"));
+        assertTrue("Got parameters", paramMap.isEmpty());
     }
 
     /**
@@ -95,18 +94,6 @@ public class TestBasicBuilderParameters
     }
 
     /**
-     * Tests whether the delimiter parsing disabled property can be set.
-     */
-    @Test
-    public void testSetDelimiterParsingDisabled()
-    {
-        assertSame("Wrong result", params,
-                params.setDelimiterParsingDisabled(false));
-        assertEquals("Wrong flag value", Boolean.FALSE, params.getParameters()
-                .get("delimiterParsingDisabled"));
-    }
-
-    /**
      * Tests whether the throw exception on missing property can be set.
      */
     @Test
@@ -119,14 +106,18 @@ public class TestBasicBuilderParameters
     }
 
     /**
-     * Tests whether the list delimiter property can be set.
+     * Tests whether the list delimiter handler property can be set.
      */
     @Test
     public void testSetListDelimiter()
     {
-        assertSame("Wrong result", params, params.setListDelimiter(';'));
-        assertEquals("Wrong delimiter", Character.valueOf(';'), params
-                .getParameters().get("listDelimiter"));
+        ListDelimiterHandler handler =
+                EasyMock.createMock(ListDelimiterHandler.class);
+        EasyMock.replay(handler);
+        assertSame("Wrong result", params,
+                params.setListDelimiterHandler(handler));
+        assertSame("Wrong delimiter handler", handler, params.getParameters()
+                .get("listDelimiterHandler"));
     }
 
     /**
@@ -256,20 +247,22 @@ public class TestBasicBuilderParameters
     @Test
     public void testMerge()
     {
+        ListDelimiterHandler handler1 = EasyMock.createMock(ListDelimiterHandler.class);
+        ListDelimiterHandler handler2 = EasyMock.createMock(ListDelimiterHandler.class);
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("throwExceptionOnMissing", Boolean.TRUE);
-        props.put("listDelimiter", Character.valueOf('-'));
+        props.put("listDelimiterHandler", handler1);
         props.put("other", "test");
         props.put(BuilderParameters.RESERVED_PARAMETER_PREFIX + "test",
                 "reserved");
         BuilderParameters p = EasyMock.createMock(BuilderParameters.class);
         EasyMock.expect(p.getParameters()).andReturn(props);
         EasyMock.replay(p);
-        params.setListDelimiter('+');
+        params.setListDelimiterHandler(handler2);
         params.merge(p);
         Map<String, Object> map = params.getParameters();
-        assertEquals("Wrong list delimiter", Character.valueOf('+'),
-                map.get("listDelimiter"));
+        assertEquals("Wrong list delimiter handler", handler2,
+                map.get("listDelimiterHandler"));
         assertEquals("Wrong exception flag", Boolean.TRUE,
                 map.get("throwExceptionOnMissing"));
         assertEquals("Wrong other property", "test", map.get("other"));
@@ -410,18 +403,20 @@ public class TestBasicBuilderParameters
         Log log = EasyMock.createMock(Log.class);
         ConfigurationInterpolator ci =
                 EasyMock.createMock(ConfigurationInterpolator.class);
-        params.setListDelimiter('#');
+        ListDelimiterHandler handler1 = EasyMock.createMock(ListDelimiterHandler.class);
+        ListDelimiterHandler handler2 = EasyMock.createMock(ListDelimiterHandler.class);
+        params.setListDelimiterHandler(handler1);
         params.setLogger(log);
         params.setInterpolator(ci);
         params.setThrowExceptionOnMissing(true);
         BasicBuilderParameters clone = params.clone();
-        params.setListDelimiter('.');
+        params.setListDelimiterHandler(handler2);
         params.setThrowExceptionOnMissing(false);
         Map<String, Object> map = clone.getParameters();
         assertSame("Wrong logger", log, map.get("logger"));
         assertSame("Wrong interpolator", ci, map.get("interpolator"));
-        assertEquals("Wrong list delimiter", Character.valueOf('#'),
-                map.get("listDelimiter"));
+        assertEquals("Wrong list delimiter handler", handler1,
+                map.get("listDelimiterHandler"));
         assertEquals("Wrong exception flag", Boolean.TRUE,
                 map.get("throwExceptionOnMissing"));
     }

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=1502845&r1=1502844&r2=1502845&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 Jul 13 19:27:19 2013
@@ -35,7 +35,9 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.ConfigurationRuntimeException;
+import org.apache.commons.configuration.DefaultListDelimiterHandler;
 import org.apache.commons.configuration.Initializable;
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.beanutils.BeanDeclaration;
@@ -43,6 +45,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.event.ConfigurationErrorListener;
 import org.apache.commons.configuration.event.ConfigurationListener;
 import org.easymock.EasyMock;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -52,6 +55,15 @@ import org.junit.Test;
  */
 public class TestBasicConfigurationBuilder
 {
+    /** A test list delimiter handler. */
+    private static ListDelimiterHandler listHandler;
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception
+    {
+        listHandler = new DefaultListDelimiterHandler(';');
+    }
+
     /**
      * Tries to create an instance without a result class.
      */
@@ -71,8 +83,7 @@ public class TestBasicConfigurationBuild
     {
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("throwExceptionOnMissing", Boolean.TRUE);
-        params.put("delimiterParsingDisabled", Boolean.TRUE);
-        params.put("listDelimiter", Character.valueOf('.'));
+        params.put("listDelimiterHandler", listHandler);
         return params;
     }
 
@@ -141,8 +152,7 @@ public class TestBasicConfigurationBuild
                 new BasicConfigurationBuilder<PropertiesConfiguration>(
                         PropertiesConfiguration.class)
                         .configure(new BasicBuilderParameters()
-                                .setDelimiterParsingDisabled(true)
-                                .setListDelimiter('.')
+                                .setListDelimiterHandler(listHandler)
                                 .setThrowExceptionOnMissing(true));
         Map<String, Object> params2 =
                 new HashMap<String, Object>(builder.getParameters());
@@ -223,13 +233,12 @@ public class TestBasicConfigurationBuild
         PropertiesConfiguration config =
                 new BasicConfigurationBuilder<PropertiesConfiguration>(
                         PropertiesConfiguration.class).configure(
-                        new BasicBuilderParameters().setListDelimiter('*')
-                                .setThrowExceptionOnMissing(true))
+                        new BasicBuilderParameters().setListDelimiterHandler(
+                                listHandler).setThrowExceptionOnMissing(true))
                         .getConfiguration();
-        assertTrue("Delimiter parsing not disabled",
-                config.isDelimiterParsingDisabled());
         assertTrue("Wrong exception flag", config.isThrowExceptionOnMissing());
-        assertEquals("Wrong list delimiter", '*', config.getListDelimiter());
+        assertEquals("Wrong list delimiter handler", listHandler,
+                config.getListDelimiterHandler());
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedBuilderParameters.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedBuilderParameters.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedBuilderParameters.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedBuilderParameters.java Sat Jul 13 19:27:19 2013
@@ -200,13 +200,11 @@ public class TestFileBasedBuilderParamet
         FileBasedBuilderParametersImpl params =
                 new FileBasedBuilderParametersImpl()
                         .setReloadingRefreshDelay(1000L);
-        params.setListDelimiter('*');
+        params.setThrowExceptionOnMissing(true);
         Map<String, Object> map = params.getParameters();
         assertTrue("Object not stored", map.values().contains(params));
-        assertEquals("Wrong delimiter parsing flag", Boolean.TRUE,
-                map.get("delimiterParsingDisabled"));
-        assertEquals("Wrong delimiter", Character.valueOf('*'), params
-                .getParameters().get("listDelimiter"));
+        assertEquals("Wrong exception flag", Boolean.TRUE, params
+                .getParameters().get("throwExceptionOnMissing"));
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestJndiBuilderParametersImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestJndiBuilderParametersImpl.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestJndiBuilderParametersImpl.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestJndiBuilderParametersImpl.java Sat Jul 13 19:27:19 2013
@@ -76,12 +76,10 @@ public class TestJndiBuilderParametersIm
     public void testGetParametersBaseProperties()
     {
         params.setPrefix("somePrefix");
-        params.setListDelimiter('?');
+        params.setThrowExceptionOnMissing(true);
         Map<String, Object> paramsMap = params.getParameters();
-        assertEquals("Wrong delimiter parsing flag", Boolean.TRUE,
-                paramsMap.get("delimiterParsingDisabled"));
-        assertEquals("Wrong list delimiter", Character.valueOf('?'),
-                paramsMap.get("listDelimiter"));
+        assertEquals("Wrong exception flag", Boolean.TRUE,
+                paramsMap.get("throwExceptionOnMissing"));
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestBaseConfigurationBuilderProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestBaseConfigurationBuilderProvider.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestBaseConfigurationBuilderProvider.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestBaseConfigurationBuilderProvider.java Sat Jul 13 19:27:19 2013
@@ -25,6 +25,8 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationAssert;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.DefaultListDelimiterHandler;
+import org.apache.commons.configuration.DisabledListDelimiterHandler;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.builder.BasicBuilderParameters;
@@ -54,11 +56,14 @@ public class TestBaseConfigurationBuilde
         HierarchicalConfiguration config = new BaseHierarchicalConfiguration();
         config.addProperty(CombinedConfigurationBuilder.ATTR_RELOAD,
                 Boolean.valueOf(reload));
-        config.addProperty("[@delimiterParsingDisabled]", Boolean.TRUE);
-        config.addProperty("[@listDelimiter]", ';');
+        config.addProperty("[@throwExceptionOnMissing]", Boolean.TRUE);
         config.addProperty("[@path]",
                 ConfigurationAssert.getTestFile("test.properties")
                         .getAbsolutePath());
+        config.addProperty("listDelimiterHandler[@config-class]",
+                DefaultListDelimiterHandler.class.getName());
+        config.addProperty(
+                "listDelimiterHandler.config-constrarg[@config-value]", ";");
         return config;
     }
 
@@ -83,7 +88,7 @@ public class TestBaseConfigurationBuilde
                         if (params instanceof BasicBuilderParameters)
                         {
                             ((BasicBuilderParameters) params)
-                                    .setListDelimiter('!');
+                                    .setListDelimiterHandler(DisabledListDelimiterHandler.INSTANCE);
                         }
                     }
                 };
@@ -132,9 +137,11 @@ public class TestBaseConfigurationBuilde
         assertEquals("Wrong configuration class",
                 PropertiesConfiguration.class, config.getClass());
         PropertiesConfiguration pconfig = (PropertiesConfiguration) config;
-        assertTrue("Wrong delimiter parsing flag",
-                pconfig.isDelimiterParsingDisabled());
-        assertEquals("Wrong list delimiter", ';', pconfig.getListDelimiter());
+        assertTrue("Wrong exception flag",
+                pconfig.isThrowExceptionOnMissing());
+        DefaultListDelimiterHandler listHandler =
+                (DefaultListDelimiterHandler) pconfig.getListDelimiterHandler();
+        assertEquals("Wrong list delimiter", ';', listHandler.getDelimiter());
         assertTrue("Configuration not loaded",
                 pconfig.getBoolean("configuration.loaded"));
         return builder;

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=1502845&r1=1502844&r2=1502845&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 Sat Jul 13 19:27:19 2013
@@ -96,8 +96,6 @@ public class TestCombinedBuilderParamete
         Map<String, Object> map = params.getParameters();
         assertEquals("Exception flag not found", Boolean.TRUE,
                 map.get("throwExceptionOnMissing"));
-        assertEquals("Wrong delimiter parsing flag", Boolean.TRUE,
-                map.get("delimiterParsingDisabled"));
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java Sat Jul 13 19:27:19 2013
@@ -45,9 +45,11 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.ConfigurationRuntimeException;
 import org.apache.commons.configuration.ConfigurationUtils;
 import org.apache.commons.configuration.DefaultFileSystem;
+import org.apache.commons.configuration.DefaultListDelimiterHandler;
 import org.apache.commons.configuration.DynamicCombinedConfiguration;
 import org.apache.commons.configuration.FileSystem;
 import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.SubnodeConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
@@ -842,15 +844,18 @@ public class TestCombinedConfigurationBu
     {
         File testFile =
                 ConfigurationAssert.getTestFile("testCCResultClass.xml");
+        ListDelimiterHandler listHandler = new DefaultListDelimiterHandler('.');
         builder.configure(new CombinedBuilderParametersImpl()
                 .setDefinitionBuilderParameters(
                         new XMLBuilderParametersImpl().setFile(testFile))
-                .setListDelimiter('.').setThrowExceptionOnMissing(false));
+                .setListDelimiterHandler(listHandler)
+                .setThrowExceptionOnMissing(false));
         CombinedConfiguration cc = builder.getConfiguration();
         assertTrue("Wrong configuration class: " + cc.getClass(),
                 cc instanceof CombinedConfigurationTestImpl);
         assertTrue("Wrong exception flag", cc.isThrowExceptionOnMissing());
-        assertEquals("Wrong list delimiter", '.', cc.getListDelimiter());
+        assertEquals("Wrong list delimiter handler", listHandler,
+                cc.getListDelimiterHandler());
     }
 
     /**
@@ -885,15 +890,17 @@ public class TestCombinedConfigurationBu
         File testFile =
                 ConfigurationAssert
                         .getTestFile("testCCCombinedChildBuilder.xml");
+        ListDelimiterHandler listHandler = new DefaultListDelimiterHandler('*');
         builder.configure(new CombinedBuilderParametersImpl()
                 .setDefinitionBuilderParameters(
                         new XMLBuilderParametersImpl().setFile(testFile))
-                .setListDelimiter('*'));
+                .setListDelimiterHandler(listHandler));
         CombinedConfiguration cc = builder.getConfiguration();
         CombinedConfiguration cc2 =
                 (CombinedConfiguration) cc.getConfiguration("subcc");
         assertFalse("Wrong exception flag", cc2.isThrowExceptionOnMissing());
-        assertEquals("Wrong list delimiter", '*', cc2.getListDelimiter());
+        assertEquals("Wrong list delimiter handler", listHandler,
+                cc2.getListDelimiterHandler());
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiFileConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiFileConfigurationBuilder.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiFileConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiFileConfigurationBuilder.java Sat Jul 13 19:27:19 2013
@@ -30,6 +30,7 @@ import java.util.Collections;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.ConfigurationLookup;
+import org.apache.commons.configuration.DefaultListDelimiterHandler;
 import org.apache.commons.configuration.DynamicCombinedConfiguration;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
@@ -162,18 +163,22 @@ public class TestMultiFileConfigurationB
         ExpressionEngine engine = new XPathExpressionEngine();
         BuilderParameters xmlParams =
                 new XMLBuilderParametersImpl().setExpressionEngine(engine)
-                        .setListDelimiter(';');
+                        .setListDelimiterHandler(
+                                new DefaultListDelimiterHandler(';'));
         MultiFileBuilderParametersImpl params =
                 new MultiFileBuilderParametersImpl().setFilePattern(PATTERN)
                         .setManagedBuilderParameters(xmlParams);
         ConfigurationInterpolator ci = createInterpolator();
-        params.setInterpolator(ci).setListDelimiter('#');
+        params.setInterpolator(ci).setListDelimiterHandler(
+                new DefaultListDelimiterHandler('#'));
         builder.configure(params);
         switchToConfig(1);
         XMLConfiguration config = builder.getConfiguration();
         assertSame("Wrong expression engine", engine,
                 config.getExpressionEngine());
-        assertEquals("Wrong list delimiter", ';', config.getListDelimiter());
+        DefaultListDelimiterHandler listHandler =
+                (DefaultListDelimiterHandler) config.getListDelimiterHandler();
+        assertEquals("Wrong list delimiter", ';', listHandler.getDelimiter());
         assertNotSame("Interpolator was copied", ci, config.getInterpolator());
     }
 

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java Sat Jul 13 19:27:19 2013
@@ -28,6 +28,8 @@ import java.util.Map;
 import org.apache.commons.beanutils.DynaClass;
 import org.apache.commons.beanutils.LazyDynaBean;
 import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.configuration.DefaultListDelimiterHandler;
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.builder.BasicBuilderParameters;
 import org.apache.commons.configuration.builder.FileBasedBuilderParametersImpl;
 import org.junit.Test;
@@ -224,15 +226,16 @@ public class TestMultiWrapDynaBean
             beans.add(new BasicBuilderParameters());
         }
         MultiWrapDynaBean bean = new MultiWrapDynaBean(beans);
+        ListDelimiterHandler listHandler = new DefaultListDelimiterHandler('+');
         PropertyUtils
                 .setProperty(bean, "throwExceptionOnMissing", Boolean.TRUE);
         PropertyUtils
-                .setProperty(bean, "listDelimiter", Character.valueOf('+'));
+                .setProperty(bean, "listDelimiterHandler", listHandler);
         Map<String, Object> map = params.getParameters();
         assertEquals("Exception flag not set", Boolean.TRUE,
                 map.get("throwExceptionOnMissing"));
-        assertEquals("List delimiter not set", Character.valueOf('+'),
-                map.get("listDelimiter"));
+        assertEquals("List delimiter handler not set", listHandler,
+                map.get("listDelimiterHandler"));
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/fluent/TestParameters.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/fluent/TestParameters.java?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/fluent/TestParameters.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/fluent/TestParameters.java Sat Jul 13 19:27:19 2013
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru
 
 import java.util.Map;
 
+import org.apache.commons.configuration.ListDelimiterHandler;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.builder.BasicBuilderParameters;
 import org.apache.commons.configuration.builder.BuilderParameters;
@@ -31,6 +32,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.builder.combined.MultiFileBuilderParametersImpl;
 import org.apache.commons.configuration.tree.ExpressionEngine;
 import org.easymock.EasyMock;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -40,6 +42,15 @@ import org.junit.Test;
  */
 public class TestParameters
 {
+    /** A test list delimiter handler. */
+    private static ListDelimiterHandler listHandler;
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception
+    {
+        listHandler = EasyMock.createMock(ListDelimiterHandler.class);
+    }
+
     /**
      * Tests whether a basic parameters object can be created.
      */
@@ -58,10 +69,8 @@ public class TestParameters
      */
     private static void checkBasicProperties(Map<String, Object> map)
     {
-        assertEquals("Delimiter flag not set", Boolean.TRUE,
-                map.get("delimiterParsingDisabled"));
-        assertEquals("Wrong delimiter", Character.valueOf('#'),
-                map.get("listDelimiter"));
+        assertEquals("Wrong delimiter handler", listHandler,
+                map.get("listDelimiterHandler"));
         assertEquals("Wrong exception flag value", Boolean.TRUE,
                 map.get("throwExceptionOnMissing"));
     }
@@ -74,7 +83,7 @@ public class TestParameters
     {
         Map<String, Object> map =
                 Parameters.fileBased().setThrowExceptionOnMissing(true)
-                        .setEncoding("UTF-8").setListDelimiter('#')
+                        .setEncoding("UTF-8").setListDelimiterHandler(listHandler)
                         .setFileName("test.xml").getParameters();
         FileBasedBuilderParametersImpl fbparams =
                 FileBasedBuilderParametersImpl.fromParameters(map);
@@ -108,7 +117,7 @@ public class TestParameters
     {
         Map<String, Object> map =
                 Parameters.combined().setThrowExceptionOnMissing(true)
-                        .setBasePath("test").setListDelimiter('#')
+                        .setBasePath("test").setListDelimiterHandler(listHandler)
                         .getParameters();
         CombinedBuilderParametersImpl cparams =
                 CombinedBuilderParametersImpl.fromParameters(map);
@@ -124,7 +133,7 @@ public class TestParameters
     {
         Map<String, Object> map =
                 Parameters.jndi().setThrowExceptionOnMissing(true)
-                        .setPrefix("test").setListDelimiter('#')
+                        .setPrefix("test").setListDelimiterHandler(listHandler)
                         .getParameters();
         assertEquals("Wrong prefix", "test", map.get("prefix"));
         checkBasicProperties(map);
@@ -141,7 +150,7 @@ public class TestParameters
         Map<String, Object> map =
                 Parameters.hierarchical().setThrowExceptionOnMissing(true)
                         .setExpressionEngine(engine).setFileName("test.xml")
-                        .setListDelimiter('#').getParameters();
+                        .setListDelimiterHandler(listHandler).getParameters();
         checkBasicProperties(map);
         FileBasedBuilderParametersImpl fbp =
                 FileBasedBuilderParametersImpl.fromParameters(map);
@@ -162,7 +171,7 @@ public class TestParameters
         Map<String, Object> map =
                 Parameters.xml().setThrowExceptionOnMissing(true)
                         .setFileName("test.xml").setValidating(true)
-                        .setExpressionEngine(engine).setListDelimiter('#')
+                        .setExpressionEngine(engine).setListDelimiterHandler(listHandler)
                         .setSchemaValidation(true).getParameters();
         checkBasicProperties(map);
         FileBasedBuilderParametersImpl fbp =
@@ -189,7 +198,7 @@ public class TestParameters
         Map<String, Object> map =
                 Parameters.properties().setThrowExceptionOnMissing(true)
                         .setFileName("test.properties").setIOFactory(factory)
-                        .setListDelimiter('#').setIncludesAllowed(false)
+                        .setListDelimiterHandler(listHandler).setIncludesAllowed(false)
                         .getParameters();
         checkBasicProperties(map);
         FileBasedBuilderParametersImpl fbp =
@@ -211,7 +220,7 @@ public class TestParameters
         String pattern = "a pattern";
         Map<String, Object> map =
                 Parameters.multiFile().setThrowExceptionOnMissing(true)
-                        .setFilePattern(pattern).setListDelimiter('#')
+                        .setFilePattern(pattern).setListDelimiterHandler(listHandler)
                         .setManagedBuilderParameters(bp).getParameters();
         checkBasicProperties(map);
         MultiFileBuilderParametersImpl params =
@@ -231,7 +240,7 @@ public class TestParameters
         Map<String, Object> map =
                 Parameters.database().setThrowExceptionOnMissing(true)
                         .setAutoCommit(true).setTable("table")
-                        .setListDelimiter('#').setKeyColumn("keyColumn")
+                        .setListDelimiterHandler(listHandler).setKeyColumn("keyColumn")
                         .getParameters();
         checkBasicProperties(map);
         assertEquals("Wrong table name", "table", map.get("table"));

Modified: commons/proper/configuration/trunk/src/test/resources/testCCMultiTenent.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/resources/testCCMultiTenent.xml?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/resources/testCCMultiTenent.xml (original)
+++ commons/proper/configuration/trunk/src/test/resources/testCCMultiTenent.xml Sat Jul 13 19:27:19 2013
@@ -36,7 +36,7 @@
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </multiXml>
     <xml fileName="testMultiConfiguration_default.xml"
-         config-name="defaultConfig" delimiterParsingDisabled="true">
+         config-name="defaultConfig">
       <expressionEngine
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </xml>

Modified: commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder4.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder4.xml?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder4.xml (original)
+++ commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder4.xml Sat Jul 13 19:27:19 2013
@@ -36,13 +36,13 @@
   <override>
     <multiXml filePattern="testMultiConfiguration_$${test:Id}.xml"
                config-name="clientConfig" config-optional="true"
-               config-forceCreate="true" delimiterParsingDisabled="true"
+               config-forceCreate="true"
                schemaValidation="true">
        <expressionEngine
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </multiXml>
     <xml fileName="testMultiConfiguration_default.xml"
-         config-name="defaultConfig" delimiterParsingDisabled="true" schemaValidation="true">
+         config-name="defaultConfig" schemaValidation="true">
       <expressionEngine
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </xml>

Modified: commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder5.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder5.xml?rev=1502845&r1=1502844&r2=1502845&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder5.xml (original)
+++ commons/proper/configuration/trunk/src/test/resources/testMultiTenentConfigurationBuilder5.xml Sat Jul 13 19:27:19 2013
@@ -34,14 +34,13 @@
   <override>
     <multiXml filePattern="testwrite/testMultiConfiguration_$${sys:Id}.xml"
                config-name="clientConfig" config-optional="true"
-               config-forceCreate="true" delimiterParsingDisabled="true"
-               schemaValidation="false">
+               config-forceCreate="true" schemaValidation="false">
        <expressionEngine
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </multiXml>
     <xml fileName="testwrite/testMultiDynamic_default.xml"
          config-name="defaultConfig" config-reload="true" 
-         delimiterParsingDisabled="true" schemaValidation="false">
+         schemaValidation="false">
       <expressionEngine
           config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
     </xml>