Author: markt Date: Tue Oct 7 13:54:47 2008 New Revision: 702632 URL: http://svn.apache.org/viewvc?rev=702632&view=rev Log: Better fix for 45636
Modified: tomcat/trunk/java/org/apache/el/lang/ELSupport.java tomcat/trunk/test/org/apache/el/lang/TestELSupport.java Modified: tomcat/trunk/java/org/apache/el/lang/ELSupport.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/lang/ELSupport.java?rev=702632&r1=702631&r2=702632&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/lang/ELSupport.java (original) +++ tomcat/trunk/java/org/apache/el/lang/ELSupport.java Tue Oct 7 13:54:47 2008 @@ -224,13 +224,13 @@ return ((BigDecimal) number).toBigInteger(); } if (number instanceof BigInteger) { - return new BigInteger(number.toString()); + return number; } return BigInteger.valueOf(number.longValue()); } if (BigDecimal.class.equals(type)) { if (number instanceof BigDecimal) { - return new BigDecimal(number.toString()); + return number; } if (number instanceof BigInteger) { return new BigDecimal((BigInteger) number); @@ -341,7 +341,7 @@ public final static Object coerceToType(final Object obj, final Class type) throws IllegalArgumentException { if (type == null || Object.class.equals(type) || - (obj != null && type.equals(obj.getClass()))) { + (obj != null && type.isAssignableFrom(obj.getClass()))) { return obj; } if (String.class.equals(type)) { @@ -356,9 +356,6 @@ if (Boolean.class.equals(type) || Boolean.TYPE == type) { return coerceToBoolean(obj); } - if (obj != null && type.isAssignableFrom(obj.getClass())) { - return obj; - } if (type.isEnum()) { return coerceToEnum(obj, type); } Modified: tomcat/trunk/test/org/apache/el/lang/TestELSupport.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/lang/TestELSupport.java?rev=702632&r1=702631&r2=702632&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/el/lang/TestELSupport.java (original) +++ tomcat/trunk/test/org/apache/el/lang/TestELSupport.java Tue Oct 7 13:54:47 2008 @@ -56,6 +56,12 @@ testIsSame(Float.valueOf(0.123456F)); } + public void testCoerceIntegerToNumber() { + Integer input = 4390241; + Object output = ELSupport.coerceToType(input, Number.class); + assertEquals(input, output); + } + private static void testIsSame(Object value) { assertEquals(value, ELSupport.coerceToNumber(value, value.getClass())); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]