kinman 2002/06/13 15:56:11 Modified: jasper2/src/share/org/apache/jasper/compiler Collector.java Generator.java Node.java Log: - Moved the logc for detecting scripting variables in tags to Collector, and fixed a bug in the logic. Revision Changes Path 1.2 +16 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Collector.java Index: Collector.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Collector.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Collector.java 5 Jun 2002 22:01:33 -0000 1.1 +++ Collector.java 13 Jun 2002 22:56:11 -0000 1.2 @@ -88,6 +88,7 @@ private boolean usebeanSeen = false; private boolean includeActionSeen = false; private boolean setPropertySeen = false; + private boolean hasScriptingVars = false; public void visit(Node.ParamAction n) throws JasperException { if (n.getValue().isExpression()) { @@ -151,6 +152,8 @@ includeActionSeen = false; boolean setPropertySeenSave = setPropertySeen; setPropertySeen = false; + boolean hasScriptingVarsSave = hasScriptingVars; + hasScriptingVars = false; // Scan attribute list for expressions Node.JspAttribute[] attrs = n.getJspAttributes(); @@ -163,17 +166,28 @@ visitBody(n); + if (!hasScriptingVars) { + // For some reason, varInfos is null when var is not defined + // in TEI, but tagVarInfos is empty array when var is not + // defined in tld. + hasScriptingVars = n.getVariableInfos() != null || + (n.getTagVariableInfos() != null + && n.getTagVariableInfos().length > 0); + } + // Record if the tag element and its body contains any scriptlet. n.setScriptless(! scriptingElementSeen); n.setHasUsebean(usebeanSeen); n.setHasIncludeAction(includeActionSeen); n.setHasSetProperty(setPropertySeen); + n.setHasScriptingVars(hasScriptingVars); // Propagate value of scriptingElementSeen up. scriptingElementSeen = scriptingElementSeen || scriptingElementSeenSave; usebeanSeen = usebeanSeen || usebeanSeenSave; setPropertySeen = setPropertySeen || setPropertySeenSave; includeActionSeen = includeActionSeen || includeActionSeenSave; + hasScriptingVars = hasScriptingVars || hasScriptingVarsSave; curTagNesting--; } 1.30 +5 -12 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.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- Generator.java 13 Jun 2002 18:56:18 -0000 1.29 +++ Generator.java 13 Jun 2002 22:56:11 -0000 1.30 @@ -1101,18 +1101,11 @@ // to a method. ServletWriter outSave = null; MethodsBuffer methodsBufferSave = null; - boolean generateTagMethod = false; - if (n.isScriptless() && n.getVariableInfos() == null && - (n.getTagVariableInfos() == null - || n.getTagVariableInfos().length == 0)) { + if (n.isScriptless() && !n.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. - // For some reason, varInfos is null when var is not defined - // in TEI, but tagVarInfos is empty array when var is not - // defined in tld. - generateTagMethod = true; String tagMethod = "_jspx_meth_" + baseVar; // Generate a call to this method @@ -1177,7 +1170,7 @@ generateCustomEnd(n, handlerInfo.getTagHandlerClass(), tagHandlerVar, tagEvalVar); - if (generateTagMethod) { + if (n.isScriptless() && !n.hasScriptingVars()) { // Generate end of method if (methodNesting > 0) { out.printil("return false;"); 1.14 +12 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java Index: Node.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Node.java 13 Jun 2002 18:56:18 -0000 1.13 +++ Node.java 13 Jun 2002 22:56:11 -0000 1.14 @@ -669,6 +669,7 @@ private boolean hasUsebean; private boolean hasIncludeAction; private boolean hasSetProperty; + private boolean hasScriptingVars; private String tagHandlerPoolName; private TagInfo tagInfo; private VariableInfo[] varInfos; @@ -757,6 +758,14 @@ public boolean isHasSetProperty() { return hasSetProperty; + } + + public void setHasScriptingVars(boolean s) { + hasScriptingVars = s; + } + + public boolean hasScriptingVars() { + return hasScriptingVars; } public void setTagHandlerPoolName(String s) {
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>