Author: markt
Date: Fri Jan 27 14:36:36 2017
New Revision: 1780563

URL: http://svn.apache.org/viewvc?rev=1780563&view=rev
Log:
Revert r1780530
Moving setters into a separate method didn't work if attribute values used 
scriplets.

Modified:
    tomcat/trunk/java/org/apache/jasper/compiler/Generator.java

Modified: tomcat/trunk/java/org/apache/jasper/compiler/Generator.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/Generator.java?rev=1780563&r1=1780562&r2=1780563&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/Generator.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/Generator.java Fri Jan 27 
14:36:36 2017
@@ -1796,8 +1796,7 @@ class Generator {
             // to a method.
             ServletWriter outSave = null;
             Node.ChildInfo ci = n.getChildInfo();
-            boolean hasNoScriptingElement = ci.isScriptless() && 
!ci.hasScriptingVars();
-            if (hasNoScriptingElement) {
+            if (ci.isScriptless() && !ci.hasScriptingVars()) {
                 // The tag handler and its body code can reside in a separate
                 // method if it is scriptless and does not have any scripting
                 // variable defined.
@@ -1892,14 +1891,14 @@ class Generator {
 
 
             if (n.implementsSimpleTag()) {
-                generateCustomDoTag(n, handlerInfo, tagHandlerVar, 
hasNoScriptingElement);
+                generateCustomDoTag(n, handlerInfo, tagHandlerVar);
             } else {
                 /*
                  * Classic tag handler: Generate code for start element, body,
                  * and end element
                  */
                 generateCustomStart(n, handlerInfo, tagHandlerVar, tagEvalVar,
-                        tagPushBodyCountVar, hasNoScriptingElement);
+                        tagPushBodyCountVar);
 
                 // visit body
                 String tmpParent = parent;
@@ -1927,7 +1926,7 @@ class Generator {
                         tagPushBodyCountVar);
             }
 
-            if (hasNoScriptingElement) {
+            if (ci.isScriptless() && !ci.hasScriptingVars()) {
                 // Generate end of method
                 if (methodNesting > 0) {
                     out.printil("return false;");
@@ -2367,9 +2366,10 @@ class Generator {
             }
         }
 
-        private void generateCustomStart(Node.CustomTag n, TagHandlerInfo 
handlerInfo,
-                String tagHandlerVar, String tagEvalVar, String 
tagPushBodyCountVar,
-                boolean hasNoScriptingElement) throws JasperException {
+        private void generateCustomStart(Node.CustomTag n,
+                TagHandlerInfo handlerInfo, String tagHandlerVar,
+                String tagEvalVar, String tagPushBodyCountVar)
+                throws JasperException {
 
             Class<?> tagHandlerClass =
                 handlerInfo.getTagHandlerClass();
@@ -2407,7 +2407,7 @@ class Generator {
             out.pushIndent();
 
             // includes setting the context
-            generateSetters(n, tagHandlerVar, handlerInfo, false, 
hasNoScriptingElement);
+            generateSetters(n, tagHandlerVar, handlerInfo, false);
 
             if (n.implementsTryCatchFinally()) {
                 out.printin("int[] ");
@@ -2625,8 +2625,9 @@ class Generator {
             restoreScriptingVars(n, VariableInfo.AT_BEGIN);
         }
 
-        private void generateCustomDoTag(Node.CustomTag n, TagHandlerInfo 
handlerInfo,
-                String tagHandlerVar, boolean hasNoScriptingElement) throws 
JasperException {
+        private void generateCustomDoTag(Node.CustomTag n,
+                TagHandlerInfo handlerInfo, String tagHandlerVar)
+                throws JasperException {
 
             Class<?> tagHandlerClass =
                 handlerInfo.getTagHandlerClass();
@@ -2642,7 +2643,7 @@ class Generator {
             String tagHandlerClassName = tagHandlerClass.getCanonicalName();
             writeNewInstance(tagHandlerVar, tagHandlerClassName);
 
-            generateSetters(n, tagHandlerVar, handlerInfo, true, 
hasNoScriptingElement);
+            generateSetters(n, tagHandlerVar, handlerInfo, true);
 
             // Set the body
             if (findJspBody(n) == null) {
@@ -3148,55 +3149,9 @@ class Generator {
         }
 
         private void generateSetters(Node.CustomTag n, String tagHandlerVar,
-                TagHandlerInfo handlerInfo, boolean simpleTag, boolean 
hasNoScriptingElement)
+                TagHandlerInfo handlerInfo, boolean simpleTag)
                 throws JasperException {
 
-            ServletWriter outSave = null;
-            // If the tag contains scripting elements, the setters can still be
-            // generated in a separate method. This reduces the amount of code
-            // required in the _jspService() method
-            if (!hasNoScriptingElement) {
-                outSave = out;
-
-                // Might be better to pass the baseVar
-                String tagSetterMethod = "_jspx_meth_set_" + 
tagHandlerVar.substring(9);
-
-                // Generate a call to the setter method
-                out.printin(tagSetterMethod);
-                out.print("(");
-                out.print(tagHandlerVar);
-                out.print(", _jspx_page_context");
-                if (parent != null) {
-                    out.print(", ");
-                    out.print(parent);
-                }
-                out.println(");");
-
-                // Setup new buffer for the method
-                GenBuffer genBuffer = new GenBuffer(n, null);
-                methodsBuffered.add(genBuffer);
-                out = genBuffer.getOut();
-
-                // Generate code for method declaration
-                out.println();
-                out.pushIndent();
-                out.printin("private void ");
-                out.print(tagSetterMethod);
-                out.print("(");
-                out.print(handlerInfo.getTagHandlerClass().getCanonicalName());
-                out.print(" ");
-                out.print(tagHandlerVar);
-                out.print(", javax.servlet.jsp.PageContext 
_jspx_page_context");
-                if (parent != null) {
-                    out.print(", ");
-                    out.print("javax.servlet.jsp.tagext.JspTag ");
-                    out.print(parent);
-                }
-                out.println(")");
-                out.printil("    throws java.lang.Throwable {");
-                out.pushIndent();
-            }
-
             // Set context
             if (simpleTag) {
                 // Generate alias map
@@ -3292,15 +3247,6 @@ class Generator {
                 out.print(createJspId());
                 out.println("\");");
             }
-
-            if (!hasNoScriptingElement) {
-                out.popIndent();
-                out.printil("}");
-                out.popIndent();
-
-                // restore previous writer
-                out = outSave;
-            }
         }
 
         /*



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to