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/01/03 16:39:42 UTC

svn commit: r1428408 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/el/util/ReflectionUtil.java test/org/apache/el/util/ webapps/docs/changelog.xml

Author: markt
Date: Thu Jan  3 15:39:41 2013
New Revision: 1428408

URL: http://svn.apache.org/viewvc?rev=1428408&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54370
Improve handling of nulls when trying to match sets of parameters to a method in EL.

Added:
    tomcat/tc7.0.x/trunk/test/org/apache/el/util/
      - copied from r1428403, tomcat/trunk/test/org/apache/el/util/
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/el/util/ReflectionUtil.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1428403

Modified: tomcat/tc7.0.x/trunk/java/org/apache/el/util/ReflectionUtil.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/el/util/ReflectionUtil.java?rev=1428408&r1=1428407&r2=1428408&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/el/util/ReflectionUtil.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/el/util/ReflectionUtil.java Thu Jan  3 15:39:41 2013
@@ -250,7 +250,6 @@ public class ReflectionUtil {
         return match;
     }
 
-    @SuppressWarnings("null")
     private static Method resolveAmbiguousMethod(Set<Method> candidates,
             Class<?>[] paramTypes) {
         // Identify which parameter isn't an exact match
@@ -267,6 +266,11 @@ public class ReflectionUtil {
             }
         }
         
+        if (nonMatchClass == null) {
+            // Null will always be ambiguous
+            return null;
+        }
+
         for (Method c : candidates) {
            if (c.getParameterTypes()[nonMatchIndex] ==
                    paramTypes[nonMatchIndex]) {
@@ -294,6 +298,12 @@ public class ReflectionUtil {
 
     // src will always be an object
     private static boolean isAssignableFrom(Class<?> src, Class<?> target) {
+        // Short-cut. null is always assignable to an object and in EL null
+        // can always be coerced to a valid value for a primitive
+        if (src == null) {
+            return true;
+        }
+
         Class<?> targetClass;
         if (target.isPrimitive()) {
             if (target == Boolean.TYPE) {
@@ -334,7 +344,11 @@ public class ReflectionUtil {
         if (types != null) {
             StringBuilder sb = new StringBuilder();
             for (int i = 0; i < types.length; i++) {
-                sb.append(types[i].getName()).append(", ");
+                if (types[i] == null) {
+                    sb.append("null, ");
+                } else {
+                    sb.append(types[i].getName()).append(", ");
+                }
             }
             if (sb.length() > 2) {
                 sb.setLength(sb.length() - 2);

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1428408&r1=1428407&r2=1428408&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Thu Jan  3 15:39:41 2013
@@ -92,6 +92,10 @@
         <bug>54260</bug>: Avoid <code>NullPointerException</code> when using
         JSP unloading and tag files. (markt)  
       </fix>
+      <fix>
+        <bug>54370</bug>: Improve handling of nulls when trying to match sets of
+        parameters to a method in EL. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>



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