You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ki...@apache.org on 2002/06/14 00:56:11 UTC
cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Collector.java Generator.java Node.java
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: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>