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: [email protected]
For additional commands, e-mail: [email protected]