From 54b4d6f4dcfe4d7817f0a59c1cf25f4ac20a85d4 Mon Sep 17 00:00:00 2001 From: markt Date: Tue, 7 Oct 2008 20:48:45 +0000 Subject: [PATCH] Revert patch - it caused a regression. Correct patch to follow. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@702628 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/el/lang/ELSupport.java | 11 +++++++---- test/org/apache/el/lang/TestELSupport.java | 6 ------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index d65a6b3f6..51e364990 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -224,18 +224,18 @@ public class ELSupport { return ((BigDecimal) number).toBigInteger(); } if (number instanceof BigInteger) { - return number; + return new BigInteger(number.toString()); } return BigInteger.valueOf(number.longValue()); } if (BigDecimal.class.equals(type)) { if (number instanceof BigDecimal) { - return number; + return new BigDecimal(number.toString()); } if (number instanceof BigInteger) { return new BigDecimal((BigInteger) number); } - return new BigDecimal(number.toString()); + return new BigDecimal(number.doubleValue()); } if (Byte.TYPE == type || Byte.class.equals(type)) { return new Byte(number.byteValue()); @@ -341,7 +341,7 @@ public class ELSupport { public final static Object coerceToType(final Object obj, final Class type) throws IllegalArgumentException { if (type == null || Object.class.equals(type) || - (obj != null && type.isAssignableFrom(obj.getClass()))) { + (obj != null && type.equals(obj.getClass()))) { return obj; } if (String.class.equals(type)) { @@ -356,6 +356,9 @@ public class ELSupport { 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); } diff --git a/test/org/apache/el/lang/TestELSupport.java b/test/org/apache/el/lang/TestELSupport.java index 0563e7811..c824b19b6 100644 --- a/test/org/apache/el/lang/TestELSupport.java +++ b/test/org/apache/el/lang/TestELSupport.java @@ -56,12 +56,6 @@ public class TestELSupport extends TestCase { 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())); } -- 2.11.0