You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jo...@apache.org on 2009/03/09 22:00:26 UTC
svn commit: r751830 - in
/commons/proper/configuration/branches/configuration2_experimental/src:
main/java/org/apache/commons/configuration2/
main/java/org/apache/commons/configuration2/interpol/
test/java/org/apache/commons/configuration2/
Author: joehni
Date: Mon Mar 9 21:00:26 2009
New Revision: 751830
URL: http://svn.apache.org/viewvc?rev=751830&view=rev
Log:
Fix local lookups for SubsetConfiguration (CONFIGURATION-369).
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java
Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java?rev=751830&r1=751829&r2=751830&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java Mon Mar 9 21:00:26 2009
@@ -17,7 +17,12 @@
package org.apache.commons.configuration2;
+import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
+import org.apache.commons.lang.text.StrLookup;
+
import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
/**
* <p>A subset of another configuration. The new Configuration object contains
@@ -195,7 +200,7 @@
{
return new SubsetIterator(parent.getKeys(prefix));
}
-
+
@Override
protected Object interpolate(Object base)
{
@@ -206,6 +211,7 @@
else
{
SubsetConfiguration config = new SubsetConfiguration(parent, "");
+ getInterpolator().registerLocalLookups(config.getInterpolator());
return config.interpolate(base);
}
}
@@ -323,7 +329,7 @@
/**
* A specialized iterator to be returned by the <code>getKeys()</code>
* methods. This implementation wraps an iterator from the parent
- * configuration. The keys returned by this iterator are correspondigly
+ * configuration. The keys returned by this iterator are correspondingly
* transformed.
*/
private class SubsetIterator implements Iterator<String>
Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java?rev=751830&r1=751829&r2=751830&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java Mon Mar 9 21:00:26 2009
@@ -16,6 +16,7 @@
*/
package org.apache.commons.configuration2.interpol;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -229,7 +230,7 @@
*
* @return a set with the registered variable prefixes
*/
- public Set prefixSet()
+ public Set<String> prefixSet()
{
return localLookups.keySet();
}
@@ -313,13 +314,23 @@
*/
protected StrLookup fetchLookupForPrefix(String prefix)
{
- StrLookup lookup = (StrLookup) localLookups.get(prefix);
+ StrLookup lookup = localLookups.get(prefix);
if (lookup == null)
{
lookup = StrLookup.noneLookup();
}
return lookup;
}
+
+ /**
+ * Registers the local lookup instances for the given interpolator.
+ *
+ * @param interpolator the instance receiving the local lookups
+ * @since upcoming
+ */
+ public void registerLocalLookups(ConfigurationInterpolator interpolator) {
+ interpolator.localLookups.putAll(localLookups);
+ }
// static initializer, sets up the map with the standard lookups
static
Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java?rev=751830&r1=751829&r2=751830&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java Mon Mar 9 21:00:26 2009
@@ -26,6 +26,8 @@
import java.util.Set;
import org.apache.commons.configuration2.flat.BaseConfiguration;
+import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
+import org.apache.commons.lang.text.StrLookup;
import junit.framework.TestCase;
@@ -160,7 +162,7 @@
assertEquals("prefix", "prefix", subset.getPrefix());
}
- public void testThrowtExceptionOnMissing()
+ public void testThrowExceptionOnMissing()
{
BaseConfiguration config = new BaseConfiguration();
config.setThrowExceptionOnMissing(true);
@@ -208,7 +210,7 @@
keys.add("type");
while(itKeys.hasNext())
{
- String k = (String) itKeys.next();
+ String k = itKeys.next();
assertTrue(keys.contains(k));
keys.remove(k);
}
@@ -283,4 +285,33 @@
assertFalse("Wrong value of list parsing flag in parent", config
.isDelimiterParsingDisabled());
}
+
+ /**
+ * Tests manipulating the interpolator.
+ */
+ public void testInterpolator()
+ {
+ BaseConfiguration config = new BaseConfiguration();
+ AbstractConfiguration subset = (AbstractConfiguration) config
+ .subset("prefix");
+ InterpolationTestHelper.testGetInterpolator(subset);
+ }
+
+ // TODO: Next step
+ public void todoTestLocalLookupsInInterpolorAreInherited() {
+ BaseConfiguration config = new BaseConfiguration();
+ ConfigurationInterpolator interpolator = config.getInterpolator();
+ interpolator.registerLookup("brackets", new StrLookup(){
+
+ @Override
+ public String lookup(String key) {
+ return "(" + key +")";
+ }
+
+ });
+ config.setProperty("prefix.var", "${brackets:x}");
+ AbstractConfiguration subset = (AbstractConfiguration) config
+ .subset("prefix");
+ assertEquals("Local lookup was not inherited", "(x)", subset.getString("var", ""));
+ }
}