From: markt Date: Sun, 13 Dec 2009 22:48:20 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=43656 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=712a59c0b5a5f4d9d2577368e532ceb7412ef0ed;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=43656 Correctly coerce null to zero when Number is the required type. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@890139 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index 4858e4d04..82c0f28ee 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -284,6 +284,9 @@ public class ELSupport { if (Float.TYPE == type || Float.class.equals(type)) { return new Float(number.floatValue()); } + if (Number.class.equals(type)) { + return number; + } throw new IllegalArgumentException(MessageFactory.get("error.convert", number, number.getClass(), type)); diff --git a/test/org/apache/el/lang/TestELSupport.java b/test/org/apache/el/lang/TestELSupport.java index 0ff05b5f4..4851931d8 100644 --- a/test/org/apache/el/lang/TestELSupport.java +++ b/test/org/apache/el/lang/TestELSupport.java @@ -62,6 +62,11 @@ public class TestELSupport extends TestCase { assertEquals(input, output); } + public void testCoerceNullToNumber() { + Object output = ELSupport.coerceToType(null, Number.class); + assertEquals(Long.valueOf(0), output); + } + private static void testIsSame(Object value) { assertEquals(value, ELSupport.coerceToNumber(value, value.getClass())); }