You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/04/05 03:44:47 UTC

svn commit: r1790173 - in /commons/proper/configuration/trunk/src: changes/ main/java/org/apache/commons/configuration2/ test/java/org/apache/commons/configuration2/

Author: ggregory
Date: Wed Apr  5 03:44:47 2017
New Revision: 1790173

URL: http://svn.apache.org/viewvc?rev=1790173&view=rev
Log:
[CONFIGURATION-658] Add API org.apache.commons.configuration2.ImmutableConfiguration.getURI(String).

Modified:
    commons/proper/configuration/trunk/src/changes/changes.xml
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestBaseConfiguration.java

Modified: commons/proper/configuration/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/changes/changes.xml?rev=1790173&r1=1790172&r2=1790173&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/changes/changes.xml (original)
+++ commons/proper/configuration/trunk/src/changes/changes.xml Wed Apr  5 03:44:47 2017
@@ -35,6 +35,9 @@
         INIConfiguration can now be configured to use a custom separator
         between properties and values when writing an ini file.
       </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-658">
+        Add API org.apache.commons.configuration2.ImmutableConfiguration.getURI(String).
+      </action>
     </release>
 
     <release version="2.1.1" date="2017-02-05"

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java?rev=1790173&r1=1790172&r2=1790173&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java Wed Apr  5 03:44:47 2017
@@ -19,6 +19,7 @@ package org.apache.commons.configuration
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -1355,6 +1356,18 @@ public abstract class AbstractConfigurat
     }
 
     @Override
+    public URI getURI(String key)
+    {
+        return convert(URI.class, key, null, true);
+    }
+
+    @Override
+    public URI getURI(String key, URI defaultValue)
+    {
+        return convert(URI.class, key, defaultValue, false);
+    }
+
+    @Override
     public String getString(String key, String defaultValue)
     {
         String result = convert(String.class, key, null, false);

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java?rev=1790173&r1=1790172&r2=1790173&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java Wed Apr  5 03:44:47 2017
@@ -18,6 +18,7 @@ package org.apache.commons.configuration
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.net.URI;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -461,6 +462,32 @@ public interface ImmutableConfiguration
     String getString(String key, String defaultValue);
 
     /**
+     * Gets a URI associated with the given configuration key.
+     *
+     * @param key The configuration key.
+     * @return The associated string.
+     *
+     * @throws org.apache.commons.configuration2.ex.ConversionException is thrown if the key maps to an object that
+     *         is not a String.
+     */
+    URI getURI(String key);
+
+    /**
+     * Gets a URI associated with the given configuration key.
+     * If the key doesn't map to an existing object, the default value
+     * is returned.
+     *
+     * @param key The configuration key.
+     * @param defaultValue The default value.
+     * @return The associated URI if key is found and has valid
+     *         format, default value otherwise.
+     *
+     * @throws org.apache.commons.configuration2.ex.ConversionException is thrown if the key maps to an object that
+     *         is not a String.
+     */
+    URI getURI(String key, URI defaultValue);
+
+    /**
      * Get the value of a string property that is stored in encoded form in this
      * configuration. This method obtains the value of the string property
      * identified by the given key. This value is then passed to the provided
@@ -723,4 +750,6 @@ public interface ImmutableConfiguration
      * @return a subset immutable configuration
      */
     ImmutableConfiguration immutableSubset(String prefix);
+
+
 }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestBaseConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestBaseConfiguration.java?rev=1790173&r1=1790172&r2=1790173&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestBaseConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestBaseConfiguration.java Wed Apr  5 03:44:47 2017
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertTru
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -35,7 +36,6 @@ import java.util.NoSuchElementException;
 import java.util.Properties;
 import java.util.StringTokenizer;
 
-import junitx.framework.ListAssert;
 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
 import org.apache.commons.configuration2.event.ConfigurationEvent;
 import org.apache.commons.configuration2.event.EventListener;
@@ -47,6 +47,8 @@ import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Test;
 
+import junitx.framework.ListAssert;
+
 /**
  * Tests some basic functions of the BaseConfiguration class. Missing keys will
  * throw Exceptions
@@ -276,6 +278,18 @@ public class TestBaseConfiguration
         assertEquals("Missing key with default value", defaultValue, config.getString("stringNotInConfig", defaultValue));
     }
 
+    @Test
+    public void testGetURI()
+    {
+        config.setProperty("testURI", URI.create("http://example.com"));
+        URI uri = URI.create("http://example.com");
+        URI defaultValue = URI.create("http://localhost");
+
+        assertEquals("Existing key", uri, config.getURI("testURI"));
+        assertEquals("Existing key with default value", uri, config.getURI("testURI", defaultValue));
+        assertEquals("Missing key with default value", defaultValue, config.getURI("stringNotInConfig", defaultValue));
+    }
+
     @Test(expected = NoSuchElementException.class)
     public void testGetStringUnknown()
     {