Author: oheger
Date: Fri Dec 28 20:25:44 2012
New Revision: 1426620
URL: http://svn.apache.org/viewvc?rev=1426620&view=rev
Log:
BasicBuilderParameters now support a property for the parent
ConfigurationInterpolator.
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/test/java/org/apache/commons/configuration/builder/TestBasicBuilderParameters.java
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=1426620&r1=1426619&r2=1426620&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
Fri Dec 28 20:25:44 2012
@@ -71,6 +71,9 @@ public class BasicBuilderParameters impl
/** The key for the <em>defaultLookups</em> property. */
private static final String PROP_DEFAULT_LOOKUPS = "defaultLookups";
+ /** The key for the <em>parentInterpolator</em> property. */
+ private static final String PROP_PARENT_INTERPOLATOR =
"parentInterpolator";
+
/** The map for storing the current property values. */
private final Map<String, Object> properties;
@@ -96,6 +99,7 @@ public class BasicBuilderParameters impl
// A custom ConfigurationInterpolator overrides lookups
result.remove(PROP_PREFIX_LOOKUPS);
result.remove(PROP_DEFAULT_LOOKUPS);
+ result.remove(PROP_PARENT_INTERPOLATOR);
}
return result;
}
@@ -208,6 +212,16 @@ public class BasicBuilderParameters impl
}
/**
+ * {@inheritDoc} This implementation stores the passed in
+ * {@code ConfigurationInterpolator} object in the internal parameters map.
+ */
+ public BasicBuilderParameters setParentInterpolator(
+ ConfigurationInterpolator parent)
+ {
+ return setProperty(PROP_PARENT_INTERPOLATOR, parent);
+ }
+
+ /**
* Merges this object with the given parameters object. This method adds
all
* property values defined by the passed in parameters object to the
* internal storage which are not already in. So properties already defined
@@ -238,15 +252,23 @@ public class BasicBuilderParameters impl
/**
* Sets a property for this parameters object. Properties are stored in an
- * internal map. With this method a new entry can be added to this map. It
- * can be used by sub classes which also store properties in a map.
+ * internal map. With this method a new entry can be added to this map. If
+ * the value is <b>null</b>, the key is removed from the internal map. This
+ * method can be used by sub classes which also store properties in a map.
*
* @param key the key of the property
* @param value the value of the property
*/
protected void storeProperty(String key, Object value)
{
- properties.put(key, value);
+ if (value == null)
+ {
+ properties.remove(key);
+ }
+ else
+ {
+ properties.put(key, value);
+ }
}
/**
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=1426620&r1=1426619&r2=1426620&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
Fri Dec 28 20:25:44 2012
@@ -128,4 +128,16 @@ public interface BasicBuilderProperties<
* @see ConfigurationInterpolator#addDefaultLookups(Collection)
*/
T setDefaultLookups(Collection<? extends Lookup> lookups);
+
+ /**
+ * Sets the parent {@code ConfigurationInterpolator} for this
+ * configuration's {@code ConfigurationInterpolator}. Setting a parent
+ * {@code ConfigurationInterpolator} can be used for defining a default
+ * behavior for variables which cannot be resolved.
+ *
+ * @param parent the new parent {@code ConfigurationInterpolator}
+ * @return a reference to this object for method chaining
+ * @see
ConfigurationInterpolator#setParentInterpolator(ConfigurationInterpolator)
+ */
+ T setParentInterpolator(ConfigurationInterpolator parent);
}
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=1426620&r1=1426619&r2=1426620&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
Fri Dec 28 20:25:44 2012
@@ -195,6 +195,20 @@ public class TestBasicBuilderParameters
}
/**
+ * Tests whether a parent {@code ConfigurationInterpolator} can be set.
+ */
+ @Test
+ public void testSetParentInterpolator()
+ {
+ ConfigurationInterpolator parent =
+ EasyMock.createMock(ConfigurationInterpolator.class);
+ EasyMock.replay(parent);
+ assertSame("Wrong result", params,
params.setParentInterpolator(parent));
+ assertSame("Wrong parent", parent,
+ params.getParameters().get("parentInterpolator"));
+ }
+
+ /**
* Tests whether a custom {@code ConfigurationInterpolator} overrides
* settings for custom lookups.
*/
@@ -203,14 +217,19 @@ public class TestBasicBuilderParameters
{
Lookup look1 = EasyMock.createMock(Lookup.class);
Lookup look2 = EasyMock.createMock(Lookup.class);
+ ConfigurationInterpolator parent =
+ EasyMock.createMock(ConfigurationInterpolator.class);
ConfigurationInterpolator ci =
EasyMock.createMock(ConfigurationInterpolator.class);
params.setDefaultLookups(Collections.singleton(look1));
params.setPrefixLookups(Collections.singletonMap("test", look2));
params.setInterpolator(ci);
+ params.setParentInterpolator(parent);
Map<String, Object> map = params.getParameters();
assertFalse("Got prefix lookups", map.containsKey("prefixLookups"));
assertFalse("Got default lookups", map.containsKey("defaultLookups"));
+ assertFalse("Got a parent interpolator",
+ map.containsKey("parentInterpolator"));
}
/**