You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2002/11/01 03:09:15 UTC
cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java
luehe 2002/10/31 18:09:15
Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java
Log:
- All variable synchronization and restoration that
occurs at the end of a tag file must occur regardless of whether
an exception is thrown inside the tag file.
- All variable synchronization that occurs after the invocation
of a fragment must occur regardless of whether an exception
occured while invoking the fragment.
Revision Changes Path
1.115 +30 -17 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
Index: Generator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -r1.114 -r1.115
--- Generator.java 31 Oct 2002 02:11:40 -0000 1.114
+++ Generator.java 1 Nov 2002 02:09:15 -0000 1.115
@@ -1831,17 +1831,22 @@
String varAttr = n.getTextAttribute("var");
if (varReaderAttr != null || varAttr != null) {
out.printil("_jspx_sout = new java.io.StringWriter();");
- out.printin(toGetterMethod(n.getTextAttribute("fragment")));
- out.println(".invoke(_jspx_sout);");
} else {
- out.printin(toGetterMethod(n.getTextAttribute("fragment")));
- out.println(".invoke(null);");
+ out.printil("_jspx_sout = null;");
}
-
+ out.printil("try {");
+ out.pushIndent();
+ out.printin(toGetterMethod(n.getTextAttribute("fragment")));
+ out.println(".invoke(_jspx_sout);");
+ out.popIndent();
+ out.printil( "} finally {" );
+ out.pushIndent();
// Copy page scope of invoking page back to virtual page scope of
// tag file
out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyPageToTagScope(javax.servlet.jsp.tagext.VariableInfo.NESTED);");
out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyPageToTagScope(javax.servlet.jsp.tagext.VariableInfo.AT_BEGIN);");
+ out.popIndent();
+ out.printil("}");
// Store varReader in appropriate scope
if (varReaderAttr != null || varAttr != null) {
@@ -1874,15 +1879,21 @@
String varAttr = n.getTextAttribute("var");
if (varReaderAttr != null || varAttr != null) {
out.printil("_jspx_sout = new java.io.StringWriter();");
- out.printil("getJspBody().invoke(_jspx_sout);");
} else {
- out.printil("getJspBody().invoke(null);");
+ out.printil("_jspx_sout = null;");
}
-
+ out.printil("try {");
+ out.pushIndent();
+ out.printil("getJspBody().invoke(_jspx_sout);");
+ out.popIndent();
+ out.printil( "} finally {" );
+ out.pushIndent();
// Copy page scope of invoking page back to virtual page scope of
// tag file
out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyPageToTagScope(javax.servlet.jsp.tagext.VariableInfo.NESTED);");
out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyPageToTagScope(javax.servlet.jsp.tagext.VariableInfo.AT_BEGIN);");
+ out.popIndent();
+ out.printil("}");
// Store varReader in appropriate scope
if (varReaderAttr != null || varAttr != null) {
@@ -2941,11 +2952,7 @@
out.pushIndent();
}
- private void generateTagHandlerPostamble( TagInfo tagInfo ) {
- out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyTagToPageScope(javax.servlet.jsp.tagext.VariableInfo.AT_BEGIN);");
- out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyTagToPageScope(javax.servlet.jsp.tagext.VariableInfo.AT_END);");
- out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).restoreNestedVariables();");
-
+ private void generateTagHandlerPostamble( TagInfo tagInfo ) {
out.popIndent();
// Have to catch Throwable because a classic tag handler
@@ -2960,8 +2967,14 @@
out.printil( " throw (javax.servlet.jsp.JspException) t;" );
out.printil("throw new javax.servlet.jsp.JspException(t);" );
out.popIndent();
+ out.printil( "} finally {" );
+ out.pushIndent();
+ out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyTagToPageScope(javax.servlet.jsp.tagext.VariableInfo.AT_BEGIN);");
+ out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).copyTagToPageScope(javax.servlet.jsp.tagext.VariableInfo.AT_END);");
+ out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).restoreNestedVariables();");
+ out.popIndent();
out.printil( "}" );
-
+
// Close the doTag method
out.popIndent();
out.printil("}");
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>