You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/09/12 12:06:17 UTC

svn commit: r1522512 - /tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java

Author: markt
Date: Thu Sep 12 10:06:16 2013
New Revision: 1522512

URL: http://svn.apache.org/r1522512
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55552
Separate the return type (which must be an object) from the expected type which may be a primitive. This is necessary for EL 3.0 onwards as the default handling of nulls is now different for primitives and objects. The expression engine needs to know what the true expected type is in order to correctly coerce the result to the right type.

Modified:
    tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java

Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java?rev=1522512&r1=1522511&r2=1522512&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java Thu Sep 12 10:06:16 2013
@@ -357,32 +357,33 @@ public class JspUtil {
          * Determine whether to use the expected type's textual name or, if it's
          * a primitive, the name of its correspondent boxed type.
          */
-        String targetType = expectedType.getCanonicalName();
+        String returnType = expectedType.getCanonicalName();
+        String targetType = returnType;
         String primitiveConverterMethod = null;
         if (expectedType.isPrimitive()) {
             if (expectedType.equals(Boolean.TYPE)) {
-                targetType = Boolean.class.getName();
+                returnType = Boolean.class.getName();
                 primitiveConverterMethod = "booleanValue";
             } else if (expectedType.equals(Byte.TYPE)) {
-                targetType = Byte.class.getName();
+                returnType = Byte.class.getName();
                 primitiveConverterMethod = "byteValue";
             } else if (expectedType.equals(Character.TYPE)) {
-                targetType = Character.class.getName();
+                returnType = Character.class.getName();
                 primitiveConverterMethod = "charValue";
             } else if (expectedType.equals(Short.TYPE)) {
-                targetType = Short.class.getName();
+                returnType = Short.class.getName();
                 primitiveConverterMethod = "shortValue";
             } else if (expectedType.equals(Integer.TYPE)) {
-                targetType = Integer.class.getName();
+                returnType = Integer.class.getName();
                 primitiveConverterMethod = "intValue";
             } else if (expectedType.equals(Long.TYPE)) {
-                targetType = Long.class.getName();
+                returnType = Long.class.getName();
                 primitiveConverterMethod = "longValue";
             } else if (expectedType.equals(Float.TYPE)) {
-                targetType = Float.class.getName();
+                returnType = Float.class.getName();
                 primitiveConverterMethod = "floatValue";
             } else if (expectedType.equals(Double.TYPE)) {
-                targetType = Double.class.getName();
+                returnType = Double.class.getName();
                 primitiveConverterMethod = "doubleValue";
             }
         }
@@ -408,7 +409,7 @@ public class JspUtil {
         targetType = toJavaSourceType(targetType);
         StringBuilder call = new StringBuilder(
                 "("
-                        + targetType
+                        + returnType
                         + ") "
                         + "org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate"
                         + "(" + Generator.quote(expression) + ", " + targetType



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org