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/02/16 21:15:19 UTC
svn commit: r1446933 - 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: Sat Feb 16 20:15:19 2013
New Revision: 1446933
URL: http://svn.apache.org/r1446933
Log:
Added a method for obtaining a null-safe Lookup object.
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=1446933&r1=1446932&r2=1446933&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 Sat Feb 16 20:15:19 2013
@@ -128,6 +128,7 @@ public class ConfigurationInterpolator
* @return the {@code ConfigurationInterpolator} obtained or created based
* on the given specification
* @throws IllegalArgumentException if the specification is <b>null</b>
+ * @since 2.0
*/
public static ConfigurationInterpolator fromSpecification(
InterpolatorSpecification spec)
@@ -149,6 +150,7 @@ public class ConfigurationInterpolator
*
* @return a map with the default prefix {@code Lookup} objects and their
* prefixes
+ * @since 2.0
*/
public static Map<String, Lookup> getDefaultPrefixLookups()
{
@@ -156,6 +158,26 @@ public class ConfigurationInterpolator
}
/**
+ * Utility method for obtaining a {@code Lookup} object in a safe way. This
+ * method always returns a non-<b>null</b> {@code Lookup} object. If the
+ * passed in {@code Lookup} is not <b>null</b>, it is directly returned.
+ * Otherwise, result is a dummy {@code Lookup} which does not provide any
+ * values.
+ *
+ * @param lookup the {@code Lookup} to check
+ * @return a non-<b>null</b> {@code Lookup} object
+ * @since 2.0
+ */
+ public static Lookup nullSafeLookup(Lookup lookup)
+ {
+ if (lookup == null)
+ {
+ lookup = DummyLookup.INSTANCE;
+ }
+ return lookup;
+ }
+
+ /**
* 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.
@@ -422,12 +444,7 @@ public class ConfigurationInterpolator
*/
protected Lookup fetchLookupForPrefix(String prefix)
{
- Lookup lookup = prefixLookups.get(prefix);
- if (lookup == null)
- {
- lookup = DummyLookup.INSTANCE;
- }
- return lookup;
+ return nullSafeLookup(prefixLookups.get(prefix));
}
/**
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=1446933&r1=1446932&r2=1446933&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 Sat Feb 16 20:15:19 2013
@@ -564,4 +564,26 @@ public class TestConfigurationInterpolat
ConfigurationInterpolator.getDefaultPrefixLookups().put("test",
EasyMock.createMock(Lookup.class));
}
+
+ /**
+ * Tests nullSafeLookup() if a lookup object was provided.
+ */
+ @Test
+ public void testNullSafeLookupExisting()
+ {
+ Lookup look = EasyMock.createMock(Lookup.class);
+ EasyMock.replay(look);
+ assertSame("Wrong result", look,
+ ConfigurationInterpolator.nullSafeLookup(look));
+ }
+
+ /**
+ * Tests whether nullSafeLookup() can handle null input.
+ */
+ @Test
+ public void testNullSafeLookupNull()
+ {
+ Lookup lookup = ConfigurationInterpolator.nullSafeLookup(null);
+ assertNull("Got a lookup result", lookup.lookup("someVar"));
+ }
}