Author: oheger Date: Sat Mar 17 20:10:46 2012 New Revision: 1301990 URL: http://svn.apache.org/viewvc?rev=1301990&view=rev Log: [CONFIGURATION-487] DataConfiguration.get() now also works for data types that do not require a type conversion.
Modified: commons/proper/configuration/trunk/src/changes/changes.xml commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PropertyConverter.java commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDataConfiguration.java commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestPropertyConverter.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=1301990&r1=1301989&r2=1301990&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/changes/changes.xml (original) +++ commons/proper/configuration/trunk/src/changes/changes.xml Sat Mar 17 20:10:46 2012 @@ -27,6 +27,10 @@ <body> <release version="1.9" date="in SVN" description="TBD"> + <action dev="oheger" type="fix" issue="CONFIGURATION-487"> + DataConfiguration.get() now also works with String properties and if no + data type conversion is required. + </action> <action dev="oheger" type="fix" issue="CONFIGURATION-481"> Variable substitution in configuration sources declared in a definition file for DefaultConfigurationBuilder now works across multiple sources. Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PropertyConverter.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PropertyConverter.java?rev=1301990&r1=1301989&r2=1301990&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PropertyConverter.java (original) +++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PropertyConverter.java Sat Mar 17 20:10:46 2012 @@ -97,6 +97,11 @@ public final class PropertyConverter */ static Object to(Class<?> cls, Object value, Object[] params) throws ConversionException { + if (cls.isInstance(value)) + { + return value; // no conversion needed + } + if (Boolean.class.equals(cls) || Boolean.TYPE.equals(cls)) { return toBoolean(value); Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDataConfiguration.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDataConfiguration.java?rev=1301990&r1=1301989&r2=1301990&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDataConfiguration.java (original) +++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDataConfiguration.java Sat Mar 17 20:10:46 2012 @@ -2386,4 +2386,17 @@ public class TestDataConfiguration // expected } } + + /** + * Tests whether a string property can be obtained through get() if no type + * conversion is required. + */ + @Test + public void testGetPropertyWithoutConversion() + { + String key = "test.str"; + String value = "someTestValue"; + conf.addProperty(key, value); + assertEquals("Wrong result", value, conf.get(String.class, key)); + } } Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestPropertyConverter.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestPropertyConverter.java?rev=1301990&r1=1301989&r2=1301990&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestPropertyConverter.java (original) +++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestPropertyConverter.java Sat Mar 17 20:10:46 2012 @@ -338,4 +338,15 @@ public class TestPropertyConverter { PropertyConverter.toEnum(Integer.valueOf(-1), ENUM_CLASS); } + + /** + * Tests a trivial conversion: the value has already the desired type. + */ + @Test + public void testToNoConversionNeeded() + { + String value = "testValue"; + assertEquals("Wrong conversion result", value, + PropertyConverter.to(String.class, value, null)); + } }