Author: oheger
Date: Sat Mar 24 19:57:23 2018
New Revision: 1827667

URL: http://svn.apache.org/viewvc?rev=1827667&view=rev
Log:
CONFIGURATION-692: The cause of conversion exceptions is retained.

ConversionExceptions thrown when accessing properties are caught and
rethrown with an improved error message. Now the new exception
contains the cause of the original one.

Modified:
    
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
    
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java

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=1827667&r1=1827666&r2=1827667&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
 Sat Mar 24 19:57:23 2018
@@ -1769,7 +1769,7 @@ public abstract class AbstractConfigurat
             throw new ConversionException(
                     String.format(
                             "Key '%s' cannot be converted to class %s. Value 
is: '%s'.",
-                            key, cls.getName(), String.valueOf(value)));
+                            key, cls.getName(), String.valueOf(value)), 
cex.getCause());
         }
     }
 

Modified: 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java?rev=1827667&r1=1827666&r2=1827667&view=diff
==============================================================================
--- 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
 (original)
+++ 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
 Sat Mar 24 19:57:23 2018
@@ -2598,4 +2598,22 @@ public class TestDataConfiguration
         conf.clearPropertyDirect(key);
         EasyMock.verify(wrapped);
     }
+
+    /**
+     * Tests that the cause of a conversion exception is kept.
+     */
+    @Test
+    public void testConversionExceptionCause()
+    {
+        try
+        {
+            conf.get(Integer.TYPE, "uri.string");
+            fail("No conversion exception thrown!");
+        }
+        catch (ConversionException cex)
+        {
+            assertTrue("Wrong cause",
+                    cex.getCause() instanceof NumberFormatException);
+        }
+    }
 }


Reply via email to