This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.0.x by this push: new d6a869e Fix BZ 65387 - fix regression in generated code clean-up d6a869e is described below commit d6a869e681200a3d2c2279a789db8eb669021085 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Jun 18 14:45:55 2021 +0100 Fix BZ 65387 - fix regression in generated code clean-up Local variable out is required for TryCatchFinally tags https://bz.apache.org/bugzilla/show_bug.cgi?id=65387 --- java/org/apache/jasper/compiler/Generator.java | 7 ++++--- test/org/apache/jasper/compiler/TestGenerator.java | 24 ++++++++++++++++++++-- test/webapp/WEB-INF/bugs.tld | 5 +++++ test/webapp/jsp/generator/customtag-02.jsp | 4 ++-- ...-catch-finally.jsp => try-catch-finally-01.jsp} | 9 ++++---- ...-catch-finally.jsp => try-catch-finally-02.jsp} | 5 +---- webapps/docs/changelog.xml | 9 ++++++++ 7 files changed, 48 insertions(+), 15 deletions(-) diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java index 198632e..66ff231 100644 --- a/java/org/apache/jasper/compiler/Generator.java +++ b/java/org/apache/jasper/compiler/Generator.java @@ -1859,9 +1859,10 @@ class Generator { if (!isTagFile) { out.printil("jakarta.servlet.jsp.PageContext pageContext = _jspx_page_context;"); } - // Only need to define out if the tag has a non-empty body or - // uses <jsp:attribute>...</jsp:attribute> nodes - if (!n.hasEmptyBody() || n.getNamedAttributeNodes().size() > 0) { + // Only need to define out if the tag has a non-empty body, + // implements TryCtachFinally or uses + // <jsp:attribute>...</jsp:attribute> nodes + if (!n.hasEmptyBody() || n.implementsTryCatchFinally() || n.getNamedAttributeNodes().size() > 0) { out.printil("jakarta.servlet.jsp.JspWriter out = _jspx_page_context.getOut();"); } generateLocalVariables(out, n); diff --git a/test/org/apache/jasper/compiler/TestGenerator.java b/test/org/apache/jasper/compiler/TestGenerator.java index d55e5f9..c37451c 100644 --- a/test/org/apache/jasper/compiler/TestGenerator.java +++ b/test/org/apache/jasper/compiler/TestGenerator.java @@ -434,6 +434,11 @@ public class TestGenerator extends TomcatBaseTest { Assert.assertNotEquals(ids[0], ids[1]); } + @Test + public void testTryCtachFinally02 () throws Exception { + doTestJsp("try-catch-finally-02.jsp"); + } + public static class JspIdTag extends TagSupport implements JspIdConsumer { private static final long serialVersionUID = 1L; @@ -456,7 +461,7 @@ public class TestGenerator extends TomcatBaseTest { } } - public static class TryCatchFinallyTag extends BodyTagSupport implements TryCatchFinally { + public static class TryCatchFinallyBodyTag extends BodyTagSupport implements TryCatchFinally { private static final long serialVersionUID = 1L; @@ -481,6 +486,21 @@ public class TestGenerator extends TomcatBaseTest { } } + public static class TryCatchFinallyTag extends TagSupport implements TryCatchFinally { + + private static final long serialVersionUID = 1L; + + @Override + public void doCatch(Throwable t) throws Throwable { + // NO-OP + } + + @Override + public void doFinally() { + // NO-OP + } + } + public static class TesterBodyTag extends BodyTagSupport { private static final long serialVersionUID = 1L; @@ -820,7 +840,7 @@ public class TestGenerator extends TomcatBaseTest { @Test public void testCustomTag01() throws Exception { - doTestJsp("try-catch-finally.jsp"); + doTestJsp("try-catch-finally-01.jsp"); } @Test diff --git a/test/webapp/WEB-INF/bugs.tld b/test/webapp/WEB-INF/bugs.tld index 6428e87..1fff162 100644 --- a/test/webapp/WEB-INF/bugs.tld +++ b/test/webapp/WEB-INF/bugs.tld @@ -90,6 +90,11 @@ <body-content>JSP</body-content> </tag> <tag> + <name>TryCatchFinallyBodyTag</name> + <tag-class>org.apache.jasper.compiler.TestGenerator$TryCatchFinallyBodyTag</tag-class> + <body-content>JSP</body-content> + </tag> + <tag> <name>TesterBodyTag</name> <tag-class>org.apache.jasper.compiler.TestGenerator$TesterBodyTag</tag-class> <body-content>JSP</body-content> diff --git a/test/webapp/jsp/generator/customtag-02.jsp b/test/webapp/jsp/generator/customtag-02.jsp index 14e33eb..57cd254 100644 --- a/test/webapp/jsp/generator/customtag-02.jsp +++ b/test/webapp/jsp/generator/customtag-02.jsp @@ -16,8 +16,8 @@ --%> <%@ taglib uri="http://tomcat.apache.org/bugs" prefix="bugs" %> <bugs:TesterBodyTag> - <bugs:TryCatchFinallyTag> + <bugs:TryCatchFinallyBodyTag> <bugs:TesterBodyTag> </bugs:TesterBodyTag> - </bugs:TryCatchFinallyTag> + </bugs:TryCatchFinallyBodyTag> </bugs:TesterBodyTag> \ No newline at end of file diff --git a/test/webapp/jsp/generator/try-catch-finally.jsp b/test/webapp/jsp/generator/try-catch-finally-01.jsp similarity index 85% copy from test/webapp/jsp/generator/try-catch-finally.jsp copy to test/webapp/jsp/generator/try-catch-finally-01.jsp index 73ac9d8..d715c34 100644 --- a/test/webapp/jsp/generator/try-catch-finally.jsp +++ b/test/webapp/jsp/generator/try-catch-finally-01.jsp @@ -15,7 +15,8 @@ limitations under the License. --%> <%@ taglib uri="http://tomcat.apache.org/bugs" prefix="bugs" %> -<bugs:TryCatchFinallyTag> - <bugs:TryCatchFinallyTag> - </bugs:TryCatchFinallyTag> -</bugs:TryCatchFinallyTag> +<bugs:TryCatchFinallyBodyTag> + <bugs:TryCatchFinallyBodyTag> + <p>OK</p> + </bugs:TryCatchFinallyBodyTag> +</bugs:TryCatchFinallyBodyTag> diff --git a/test/webapp/jsp/generator/try-catch-finally.jsp b/test/webapp/jsp/generator/try-catch-finally-02.jsp similarity index 88% rename from test/webapp/jsp/generator/try-catch-finally.jsp rename to test/webapp/jsp/generator/try-catch-finally-02.jsp index 73ac9d8..f2bd7d9 100644 --- a/test/webapp/jsp/generator/try-catch-finally.jsp +++ b/test/webapp/jsp/generator/try-catch-finally-02.jsp @@ -15,7 +15,4 @@ limitations under the License. --%> <%@ taglib uri="http://tomcat.apache.org/bugs" prefix="bugs" %> -<bugs:TryCatchFinallyTag> - <bugs:TryCatchFinallyTag> - </bugs:TryCatchFinallyTag> -</bugs:TryCatchFinallyTag> +<bugs:TryCatchFinallyTag/> diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index b1c87fe..510d2f4 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -177,6 +177,15 @@ </fix> </changelog> </subsection> + <subsection name="Jasper"> + <changelog> + <fix> + <bug>65387</bug>: Correct a regression in the fix for <bug>65124</bug> + and restore the local definition of <code>out</code> for tags that + implement <code>TryCatchFinally</code>. (markt) + </fix> + </changelog> + </subsection> <subsection name="Web applications"> <changelog> <fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org