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 2001/10/19 03:42:36 UTC

cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler Parser.java ServletWriter.java TagBeginGenerator.java TagEndGenerator.java

kinman      01/10/18 18:42:36

  Modified:    jasper/src/share/org/apache/jasper/compiler Parser.java
                        ServletWriter.java TagBeginGenerator.java
                        TagEndGenerator.java
  Log:
  PR: Bugzilla 2622
  
  - For tag handlers with empty body, generate simpler codes.
  - Don't call doInitBody() when doStartTag doesn't return EVAL_BODY_BUFFERED
  - Cleanup format of generated Java codes.
  
  Revision  Changes    Path
  1.16      +2 -2      jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/Parser.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Parser.java	2001/10/03 19:29:28	1.15
  +++ Parser.java	2001/10/19 01:42:36	1.16
  @@ -838,9 +838,9 @@
   		reader.advance(CLOSE_1.length());
   		listener.setTemplateInfo(parser.tmplStart, parser.tmplStop);
   		listener.handleTagBegin(start, reader.mark(), attrs, prefix,
  -					shortTagName, tli, ti, true);
  +					shortTagName, tli, ti, false);
   		listener.handleTagEnd(start, reader.mark(), prefix, 
  -				      shortTagName, attrs, tli, ti, true);
  +				      shortTagName, attrs, tli, ti, false);
   	    } else { 
   		// Body can be either
   		//     - empty
  
  
  
  1.3       +12 -9     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ServletWriter.java
  
  Index: ServletWriter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ServletWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ServletWriter.java	2001/07/12 21:40:51	1.2
  +++ ServletWriter.java	2001/10/19 01:42:36	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ServletWriter.java,v 1.2 2001/07/12 21:40:51 horwat Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/07/12 21:40:51 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ServletWriter.java,v 1.3 2001/10/19 01:42:36 kinman Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/10/19 01:42:36 $
    *
    * ====================================================================
    * 
  @@ -71,11 +71,12 @@
    * @author Anil K. Vijendran
    */
   public class ServletWriter {
  -    public static int TAB_WIDTH = 4;
  +    public static int TAB_WIDTH = 2;
       public static String SPACES = "                              ";
   
       // Current indent level:
  -    int indent = 0;
  +    private int indent = 0;
  +    private int virtual_indent = 0;
   
       // The sink writer:
       PrintWriter writer;
  @@ -110,13 +111,15 @@
       // -------------------- Formatting --------------------
   
       public void pushIndent() {
  -	if ((indent += TAB_WIDTH) > SPACES.length())
  -	    indent = SPACES.length();
  +	virtual_indent += TAB_WIDTH;
  +	if (virtual_indent >= 0 && virtual_indent <= SPACES.length())
  +	    indent = virtual_indent;
       }
   
       public void popIndent() {
  -	if ((indent -= TAB_WIDTH) <= 0 )
  -	    indent = 0;
  +	virtual_indent -= TAB_WIDTH;
  +	if (virtual_indent >= 0 && virtual_indent <= SPACES.length())
  +	    indent = virtual_indent;
       }
   
       /**
  
  
  
  1.17      +12 -4     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagBeginGenerator.java
  
  Index: TagBeginGenerator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagBeginGenerator.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- TagBeginGenerator.java	2001/09/26 02:37:13	1.16
  +++ TagBeginGenerator.java	2001/10/19 01:42:36	1.17
  @@ -68,6 +68,7 @@
   import javax.servlet.jsp.tagext.TagData;
   import javax.servlet.jsp.tagext.Tag;
   import javax.servlet.jsp.tagext.BodyTag;
  +import javax.servlet.jsp.tagext.IterationTag;
   
   import org.apache.jasper.JasperException;
   import org.apache.jasper.JspCompilationContext;
  @@ -347,6 +348,10 @@
           // Need to update AT_BEGIN variables here
           declareVariables(writer, vi, tvi, tagData, false, true, VariableInfo.AT_BEGIN);
   
  +/* The following check is unnecssary, becuase tag handlers that do not
  + * implement BodyTag can be assumed to return EVAL_BODY_INCLUDE when
  + * doStartTag returns anything other than SKIP_BODY, without bad side-effect.
  +
           // FIXME: I'm not too sure if this is the right approach. I don't like
           //        throwing English language strings into the generated servlet.
           //        Perhaps, I'll just define an inner classes as necessary for these
  @@ -359,6 +364,7 @@
                              " does not implement BodyTag, it can't return BodyTag.EVAL_BODY_TAG\");");
               writer.popIndent();
           }
  +*/
   
           if (hasBody) {
               writer.println("if ("+evalVar+" != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {");
  @@ -369,19 +375,21 @@
                   writer.pushIndent();
   
   	        writer.println("if ("+evalVar+" != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {");
  +		// Assumes that equals EVAL_BODY_BUFFERED
   	        writer.pushIndent();
   
   	        writer.println("out = pageContext.pushBody();");
   	        writer.println(thVarName+".setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);");
  +	        writer.println(thVarName+".doInitBody();");
   
   	        writer.popIndent();
   	        writer.println("}");
  -
  -	        writer.println(thVarName+".doInitBody();");
   	    }
   
  -	    writer.println("do {");
  -	    writer.pushIndent();
  +            if (IterationTag.class.isAssignableFrom(tc.getTagHandlerClass())) {
  +	        writer.println("do {");
  +	        writer.pushIndent();
  +            }
           }
           // Need to declare and update NESTED variables here
           declareVariables(writer, vi, tvi, tagData, true, true, VariableInfo.NESTED);
  
  
  
  1.10      +3 -4      jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagEndGenerator.java
  
  Index: TagEndGenerator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagEndGenerator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- TagEndGenerator.java	2001/07/23 19:57:32	1.9
  +++ TagEndGenerator.java	2001/10/19 01:42:36	1.10
  @@ -123,13 +123,12 @@
           boolean implementsTryCatchFinally = 
   	    TryCatchFinally.class.isAssignableFrom(tagHandlerClass);
   
  -	writer.popIndent();
   
           if (hasBody) {
  -            if (implementsIterationTag)
  +            if (implementsIterationTag) {
  +		writer.popIndent();
                   writer.println("} while ("+thVarName+".doAfterBody() == javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN);");
  -            else
  -                writer.println("} while (false);");
  +	    }
           }
   
           declareVariables(writer, vi, tvi, tagData, false, true, VariableInfo.AT_BEGIN);