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>