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 2007/10/25 22:01:32 UTC
svn commit: r588329 - in /commons/proper/configuration/trunk:
src/java/org/apache/commons/configuration/interpol/ConstantLookup.java
src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java
xdocs/changes.xml
Author: oheger
Date: Thu Oct 25 13:01:31 2007
New Revision: 588329
URL: http://svn.apache.org/viewvc?rev=588329&view=rev
Log:
CONFIGURATION-299: Fix for ClassCastExceptions in ConstantLookup when resolving non-String variables
Modified:
commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/interpol/ConstantLookup.java
commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java
commons/proper/configuration/trunk/xdocs/changes.xml
Modified: commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/interpol/ConstantLookup.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/interpol/ConstantLookup.java?rev=588329&r1=588328&r2=588329&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/interpol/ConstantLookup.java (original)
+++ commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/interpol/ConstantLookup.java Thu Oct 25 13:01:31 2007
@@ -107,9 +107,8 @@
{
// In worst case, the value will be fetched multiple times
// because of this lax synchronisation, but for constant
- // values
- // this shouldn't be a problem.
- constantCache.put(var, value);
+ // values this shouldn't be a problem.
+ constantCache.put(var, String.valueOf(value));
}
result = value.toString();
}
Modified: commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java?rev=588329&r1=588328&r2=588329&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java (original)
+++ commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/interpol/TestConstantLookup.java Thu Oct 25 13:01:31 2007
@@ -16,6 +16,8 @@
*/
package org.apache.commons.configuration.interpol;
+import java.awt.event.KeyEvent;
+
import junit.framework.TestCase;
/**
@@ -119,5 +121,18 @@
{
testLookupConstant();
testLookupConstant();
+ }
+
+ /**
+ * Tests resolving a non string constant. Then looks the same variable up
+ * from the cache.
+ */
+ public void testLookupNonStringFromCache()
+ {
+ final String var = KeyEvent.class.getName() + ".VK_ESCAPE";
+ final String expected = String.valueOf(KeyEvent.VK_ESCAPE);
+ assertEquals("Wrong result of first lookup", expected, lookup
+ .lookup(var));
+ assertEquals("Wrong result of 2nd lookup", expected, lookup.lookup(var));
}
}
Modified: commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/xdocs/changes.xml?rev=588329&r1=588328&r2=588329&view=diff
==============================================================================
--- commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ commons/proper/configuration/trunk/xdocs/changes.xml Thu Oct 25 13:01:31 2007
@@ -23,6 +23,11 @@
<body>
<release version="1.5-SNAPSHOT" date="in SVN" description="">
+ <action dev="oheger" type="fix" issue="CONFIGURATION-299">
+ Resolving of variables with the prefix const (constant fields) caused
+ a ClassCastException under certain circumstances if non-String fields
+ were involved. This has been fixed.
+ </action>
<action dev="oheger" type="update" due-to="Nicolas De Loof">
The dependencies to commons-codec and commons-jxpath have been marked
as optional. They are not required by the core classes.