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 2016/02/14 20:05:12 UTC
svn commit: r1730384 - in /commons/proper/configuration/trunk/src:
main/java/org/apache/commons/configuration2/builder/combined/
test/java/org/apache/commons/configuration2/builder/combined/
Author: oheger
Date: Sun Feb 14 19:05:12 2016
New Revision: 1730384
URL: http://svn.apache.org/viewvc?rev=1730384&view=rev
Log:
[CONFIGURATION-619] CombinedConfigurationBuilder now supports inheritance.
If the corresponding flag in the parameters is set, the builder's
parameters are inherited by the builders for child configurations.
This simplifies the construction of a CombinedConfigurationBuilder in
cases where the configuration sources to be loaded have similar
conventions and requirements.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/builder/combined/TestCombinedConfigurationBuilder.java
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java?rev=1730384&r1=1730383&r2=1730384&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java Sun Feb 14 19:05:12 2016
@@ -1157,6 +1157,10 @@ public class CombinedConfigurationBuilde
{
params.setPrefixLookups(fetchPrefixLookups());
params.setParentInterpolator(parentInterpolator);
+ if (currentParameters.isInheritSettings())
+ {
+ params.inheritFrom(getParameters());
+ }
}
/**
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/builder/combined/TestCombinedConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/builder/combined/TestCombinedConfigurationBuilder.java?rev=1730384&r1=1730383&r2=1730384&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/builder/combined/TestCombinedConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/builder/combined/TestCombinedConfigurationBuilder.java Sun Feb 14 19:05:12 2016
@@ -58,8 +58,10 @@ import org.apache.commons.configuration2
import org.apache.commons.configuration2.builder.ReloadingFileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.XMLBuilderParametersImpl;
import org.apache.commons.configuration2.builder.XMLBuilderProperties;
+import org.apache.commons.configuration2.builder.fluent.CombinedBuilderParameters;
import org.apache.commons.configuration2.builder.fluent.FileBasedBuilderParameters;
import org.apache.commons.configuration2.builder.fluent.Parameters;
+import org.apache.commons.configuration2.builder.fluent.XMLBuilderParameters;
import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
import org.apache.commons.configuration2.convert.ListDelimiterHandler;
import org.apache.commons.configuration2.event.ConfigurationEvent;
@@ -75,6 +77,8 @@ import org.apache.commons.configuration2
import org.apache.commons.configuration2.reloading.ReloadingController;
import org.apache.commons.configuration2.reloading.ReloadingControllerSupport;
import org.apache.commons.configuration2.resolver.CatalogResolver;
+import org.apache.commons.configuration2.tree.DefaultExpressionEngine;
+import org.apache.commons.configuration2.tree.DefaultExpressionEngineSymbols;
import org.apache.commons.configuration2.tree.ImmutableNode;
import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine;
import org.easymock.EasyMock;
@@ -1328,6 +1332,64 @@ public class TestCombinedConfigurationBu
}
/**
+ * Prepares a parameters object for a test for properties inheritance.
+ * @param params the {@code Parameters} object
+ * @return the builder parameters
+ */
+ private static XMLBuilderParameters prepareParamsForInheritanceTest(Parameters params) {
+ DefaultExpressionEngineSymbols symbols = new DefaultExpressionEngineSymbols.Builder(
+ DefaultExpressionEngineSymbols.DEFAULT_SYMBOLS)
+ .setPropertyDelimiter("/").create();
+ DefaultExpressionEngine engine = new DefaultExpressionEngine(symbols);
+ DefaultListDelimiterHandler listDelimiterHandler = new DefaultListDelimiterHandler(',');
+ return params.xml()
+ .setExpressionEngine(engine)
+ .setListDelimiterHandler(listDelimiterHandler).setFile(TEST_FILE);
+ }
+
+ /**
+ * Tests whether builder properties can be inherited by child builders.
+ */
+ @Test
+ public void testInheritProperties() throws ConfigurationException
+ {
+ Parameters params = new Parameters();
+ XMLBuilderParameters xmlParams =
+ prepareParamsForInheritanceTest(params);
+ builder.configure(xmlParams);
+ CombinedConfiguration config = builder.getConfiguration();
+
+ List<String> list = config.getList(String.class, "test/mixed/array");
+ assertTrue("Wrong number of elements in list", list.size() > 2);
+ String[] stringArray = config.getStringArray("test/mixed/array");
+ assertTrue("Wrong number of elements in array", stringArray.length > 2);
+ XMLConfiguration xmlConfig =
+ (XMLConfiguration) config.getConfiguration("xml");
+ list = xmlConfig.getList(String.class, "split/list1");
+ assertEquals("Wrong number of elements in XML list", 3, list.size());
+ }
+
+ /**
+ * Tests whether the inheritance of builder properties can be disabled.
+ */
+ @Test
+ public void testSuppressChildBuilderPropertyInheritance()
+ throws ConfigurationException
+ {
+ Parameters params = new Parameters();
+ CombinedBuilderParameters combinedParams =
+ params.combined().setInheritSettings(false);
+ builder.configure(combinedParams,
+ prepareParamsForInheritanceTest(params));
+ CombinedConfiguration config = builder.getConfiguration();
+
+ XMLConfiguration xmlConfig =
+ (XMLConfiguration) config.getConfiguration("xml");
+ List<String> list = xmlConfig.getList(String.class, "split.list1");
+ assertEquals("Wrong number of elements in XML list", 1, list.size());
+ }
+
+ /**
* A test builder provider implementation for testing whether providers can
* be defined in the definition file.
*/