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/01/22 22:19:59 UTC
svn commit: r1437179 - in /commons/proper/configuration/trunk/src:
main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java
test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java
Author: oheger
Date: Tue Jan 22 21:19:59 2013
New Revision: 1437179
URL: http://svn.apache.org/viewvc?rev=1437179&view=rev
Log:
Added a method for obtaining all default prefix Lookups as a map.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java?rev=1437179&r1=1437178&r2=1437179&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/interpol/ConfigurationInterpolator.java Tue Jan 22 21:19:59 2013
@@ -91,6 +91,9 @@ public class ConfigurationInterpolator
/** Constant for the prefix separator. */
private static final char PREFIX_SEPARATOR = ':';
+ /** A map containing the default prefix lookups. */
+ private static final Map<String, Lookup> DEFAULT_PREFIX_LOOKUPS;
+
/** A map with the currently registered lookup objects. */
private final Map<String, Lookup> prefixLookups;
@@ -139,6 +142,20 @@ public class ConfigurationInterpolator
}
/**
+ * Returns a map containing the default prefix lookups. Every configuration
+ * object derived from {@code AbstractConfiguration} is by default
+ * initialized with a {@code ConfigurationInterpolator} containing these
+ * {@code Lookup} objects and their prefixes. The map cannot be modified
+ *
+ * @return a map with the default prefix {@code Lookup} objects and their
+ * prefixes
+ */
+ public static Map<String, Lookup> getDefaultPrefixLookups()
+ {
+ return DEFAULT_PREFIX_LOOKUPS;
+ }
+
+ /**
* Returns a map with the currently registered {@code Lookup} objects and
* their prefixes. This is a snapshot copy of the internally used map. So
* modifications of this map do not effect this instance.
@@ -450,4 +467,14 @@ public class ConfigurationInterpolator
ci.setParentInterpolator(spec.getParentInterpolator());
return ci;
}
+
+ static
+ {
+ Map<String, Lookup> lookups = new HashMap<String, Lookup>();
+ for (DefaultLookups l : DefaultLookups.values())
+ {
+ lookups.put(l.getPrefix(), l.getLookup());
+ }
+ DEFAULT_PREFIX_LOOKUPS = Collections.unmodifiableMap(lookups);
+ }
}
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java?rev=1437179&r1=1437178&r2=1437179&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/interpol/TestConfigurationInterpolator.java Tue Jan 22 21:19:59 2013
@@ -537,4 +537,31 @@ public class TestConfigurationInterpolat
assertSame("Wrong prefix lookup", preLookup, ci.getLookups().get("p"));
assertSame("Wrong parent", interpolator, ci.getParentInterpolator());
}
+
+ /**
+ * Tests whether default prefix lookups can be queried as a map.
+ */
+ @Test
+ public void testGetDefaultPrefixLookups()
+ {
+ Map<String, Lookup> lookups =
+ ConfigurationInterpolator.getDefaultPrefixLookups();
+ assertEquals("Wrong number of lookups", DefaultLookups.values().length,
+ lookups.size());
+ for (DefaultLookups l : DefaultLookups.values())
+ {
+ assertSame("Wrong entry for " + l, l.getLookup(),
+ lookups.get(l.getPrefix()));
+ }
+ }
+
+ /**
+ * Tests that the map with default lookups cannot be modified.
+ */
+ @Test(expected = UnsupportedOperationException.class)
+ public void testGetDefaultPrefixLookupsModify()
+ {
+ ConfigurationInterpolator.getDefaultPrefixLookups().put("test",
+ EasyMock.createMock(Lookup.class));
+ }
}