Author: markt Date: Fri Dec 3 21:49:54 2010 New Revision: 1042021 URL: http://svn.apache.org/viewvc?rev=1042021&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50408 Fix <code>NoSuchMethodException</code> when using scoped variables with EL method invocation.
Added: tomcat/trunk/test/javax/el/ tomcat/trunk/test/javax/el/TestCompositeELResolver.java (with props) tomcat/trunk/test/webapp-3.0/bug50408.jsp (with props) Modified: tomcat/trunk/java/javax/el/CompositeELResolver.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/javax/el/CompositeELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/CompositeELResolver.java?rev=1042021&r1=1042020&r2=1042021&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/CompositeELResolver.java (original) +++ tomcat/trunk/java/javax/el/CompositeELResolver.java Fri Dec 3 21:49:54 2010 @@ -21,6 +21,8 @@ import java.beans.FeatureDescriptor; import java.util.Iterator; import java.util.NoSuchElementException; +import javax.servlet.jsp.el.ScopedAttributeELResolver; + public class CompositeELResolver extends ELResolver { private int size; @@ -118,6 +120,14 @@ public class CompositeELResolver extends for (int i = 0; i < sz; i++) { type = this.resolvers[i].getType(context, base, property); if (context.isPropertyResolved()) { + if (resolvers[i] instanceof ScopedAttributeELResolver) { + // Special case since this will always return Object.class + Object value = + resolvers[i].getValue(context, base, property); + if (value != null) { + return value.getClass(); + } + } return type; } } Added: tomcat/trunk/test/javax/el/TestCompositeELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestCompositeELResolver.java?rev=1042021&view=auto ============================================================================== --- tomcat/trunk/test/javax/el/TestCompositeELResolver.java (added) +++ tomcat/trunk/test/javax/el/TestCompositeELResolver.java Fri Dec 3 21:49:54 2010 @@ -0,0 +1,33 @@ +package javax.el; + +import java.io.File; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.catalina.core.StandardContext; +import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.tomcat.util.buf.ByteChunk; + +public class TestCompositeELResolver extends TomcatBaseTest { + + public void testBug50408() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + File appDir = new File("test/webapp-3.0"); + // app dir is relative to server home + StandardContext ctxt = (StandardContext) tomcat.addWebapp(null, + "/test", appDir.getAbsolutePath()); + + // This test needs the JSTL libraries + File lib = new File("webapps/examples/WEB-INF/lib"); + ctxt.setAliases("/WEB-INF/lib=" + lib.getCanonicalPath()); + + tomcat.start(); + + int rc = getUrl("http://localhost:" + getPort() + + "/test/bug50408.jsp", new ByteChunk(), null); + + assertEquals(HttpServletResponse.SC_OK, rc); + } +} Propchange: tomcat/trunk/test/javax/el/TestCompositeELResolver.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/test/webapp-3.0/bug50408.jsp URL: http://svn.apache.org/viewvc/tomcat/trunk/test/webapp-3.0/bug50408.jsp?rev=1042021&view=auto ============================================================================== --- tomcat/trunk/test/webapp-3.0/bug50408.jsp (added) +++ tomcat/trunk/test/webapp-3.0/bug50408.jsp Fri Dec 3 21:49:54 2010 @@ -0,0 +1,26 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<%...@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<html> + <body> + <c:forEach items="${pageContext.response.headerNames}" var="name"> + <c:forEach items="${pageContext.response.getHeaders(name)}" var="value"> + <p>${name} : ${value}</p> + </c:forEach> + </c:forEach> + </body> +</html> \ No newline at end of file Propchange: tomcat/trunk/test/webapp-3.0/bug50408.jsp ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1042021&r1=1042020&r2=1042021&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Fri Dec 3 21:49:54 2010 @@ -109,6 +109,14 @@ </add> </changelog> </subsection> + <subsection name="Jasper"> + <changelog> + <fix> + <bug>50408</bug>: Fix <code>NoSuchMethodException</code> when using + scoped variables with EL method invocation. (markt) + </fix> + </changelog> + </subsection> <subsection name="Cluster"> <changelog> <add> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org