Author: markt
Date: Mon Jul 25 16:23:39 2011
New Revision: 1150767

URL: http://svn.apache.org/viewvc?rev=1150767&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51544
Correctly resolve bean methods in EL so accessible methods that are overridden 
by inaccessible methods do not cause an IllegalAccessException.
Modify test case to catch this problem on Oracle and OpenJDK JREs.

Modified:
    tomcat/trunk/java/javax/el/BeanELResolver.java
    tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/javax/el/BeanELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanELResolver.java?rev=1150767&r1=1150766&r2=1150767&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/BeanELResolver.java (original)
+++ tomcat/trunk/java/javax/el/BeanELResolver.java Mon Jul 25 16:23:39 2011
@@ -402,7 +402,8 @@ public class BeanELResolver extends ELRe
         Class<?> clazz = base.getClass();
         if (paramTypes != null) {
             try {
-                matchingMethod = clazz.getMethod(methodName, paramTypes);
+                matchingMethod =
+                    getMethod(clazz, clazz.getMethod(methodName, paramTypes));
             } catch (NoSuchMethodException e) {
                 throw new MethodNotFoundException(e);
             }
@@ -416,11 +417,11 @@ public class BeanELResolver extends ELRe
                 if (methodName.equals(m.getName()) && 
                         m.getParameterTypes().length == paramCount) {
                     // Same number of parameters - use the first match
-                    matchingMethod = m;
+                    matchingMethod = getMethod(clazz, m);
                     break;
                 }
                 if (m.isVarArgs()) {
-                    matchingMethod = m;
+                    matchingMethod = getMethod(clazz, m);
                 }
             }
             if (matchingMethod == null) {

Modified: tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java?rev=1150767&r1=1150766&r2=1150767&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java (original)
+++ tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java Mon Jul 25 
16:23:39 2011
@@ -186,10 +186,10 @@ public class TestValueExpressionImpl {
         context.getVariableMapper().setVariable("beanA", var);
 
         ValueExpression ve = factory.createValueExpression(
-                context, "${beanA.valList.isEmpty()}", String.class);
+                context, "${beanA.valList.size()}", Integer.class);
 
-        String result = (String) ve.getValue(context);
-        assertEquals("true", result);
+        Integer result = (Integer) ve.getValue(context);
+        assertEquals(Integer.valueOf(0), result);
     }
 
 
@@ -208,9 +208,9 @@ public class TestValueExpressionImpl {
         context.getVariableMapper().setVariable("list", var);
 
         ValueExpression ve = factory.createValueExpression(
-                context, "${list.isEmpty()}", Boolean.class);
+                context, "${list.size()}", Integer.class);
 
-        Boolean result = (Boolean) ve.getValue(context);
-        assertEquals(Boolean.TRUE, result);
+        Integer result = (Integer) ve.getValue(context);
+        assertEquals(Integer.valueOf(0), result);
     }
 }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1150767&r1=1150766&r2=1150767&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Jul 25 16:23:39 2011
@@ -109,6 +109,11 @@
         <bug>51532</bug>: JSP files with dependencies in JARs were recompiled 
on
         every access leading to poor performance. (markt)
       </fix>
+      <fix>
+        <bug>51544</bug>: Correctly resolve bean methods in EL so accessible
+        methods that are overridden by inaccessible methods do not cause an
+        IllegalAccessException. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Web applications">



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

Reply via email to