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