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"));
+    }
 }