Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=43656
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 13 Dec 2009 22:48:20 +0000 (22:48 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 13 Dec 2009 22:48:20 +0000 (22:48 +0000)
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

java/org/apache/el/lang/ELSupport.java
test/org/apache/el/lang/TestELSupport.java

index 4858e4d..82c0f28 100644 (file)
@@ -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));
index 0ff05b5..4851931 100644 (file)
@@ -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()));
     }