cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspDocumentParser.java Node.java Parser.java

2003-02-13 Thread luehe
luehe   2003/02/13 10:15:46

  Modified:jasper2/src/share/org/apache/jasper/compiler Tag:
tomcat_4_branch Generator.java
JspDocumentParser.java Node.java Parser.java
  Log:
  Added support for  to XML syntax
  
  Revision  ChangesPath
  No   revision
  
  
  No   revision
  
  
  1.35.2.19 +5 -11 
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.35.2.18
  retrieving revision 1.35.2.19
  diff -u -r1.35.2.18 -r1.35.2.19
  --- Generator.java10 Feb 2003 17:06:11 -  1.35.2.18
  +++ Generator.java13 Feb 2003 18:15:45 -  1.35.2.19
  @@ -1069,14 +1069,8 @@
 * Fallback
 */
if (n.getBody() != null) {
  - n.getBody().visit(new Node.Visitor() {
  - public void visit(Node.FallBackAction n) {
  - n.setBeginJavaLine(out.getJavaLine());
  - out.printil("out.println(" +
  - quote(new String(n.getText())) + ");");
  - n.setEndJavaLine(out.getJavaLine());
  - }
  - });
  + visitBody(n);
  + out.printil("out.write(\"\\n\");");
}
   
out.printil("out.println(" + quote("") + ");");
  
  
  
  1.4.2.3   +5 -3  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java
  
  Index: JspDocumentParser.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v
  retrieving revision 1.4.2.2
  retrieving revision 1.4.2.3
  diff -u -r1.4.2.2 -r1.4.2.3
  --- JspDocumentParser.java17 Aug 2002 00:14:23 -  1.4.2.2
  +++ JspDocumentParser.java13 Feb 2003 18:15:45 -  1.4.2.3
  @@ -233,6 +233,8 @@
node = new Node.PlugIn(attrsCopy, start, current);
} else if (qName.equals(JSP_TEXT_TAG)) {
node = new Node.JspText(start, current);
  + } else if (qName.equals(JSP_FALLBACK_TAG)) {
  + node = new Node.FallBackAction(start, current);
} else {
node = getCustomTag(qName, attrsCopy, start, current);
if (node == null) {
  
  
  
  1.15.2.5  +5 -5  
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.15.2.4
  retrieving revision 1.15.2.5
  diff -u -r1.15.2.4 -r1.15.2.5
  --- Node.java 6 Nov 2002 23:43:51 -   1.15.2.4
  +++ Node.java 13 Feb 2003 18:15:45 -  1.15.2.5
  @@ -482,8 +482,8 @@
*/
   public static class FallBackAction extends Node {
   
  - public FallBackAction(Mark start, char[] text, Node parent) {
  - super(text, start, parent);
  + public FallBackAction(Mark start, Node parent) {
  + super(start, parent);
}
   
public void accept(Visitor v) throws JasperException {
  
  
  
  1.7.2.4   +5 -10 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java
  
  Index: Parser.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java,v
  retrieving revision 1.7.2.3
  retrieving revision 1.7.2.4
  diff -u -r1.7.2.3 -r1.7.2.4
  --- Parser.java   8 Oct 2002 23:42:06 -   1.7.2.3
  +++ Parser.java   13 Feb 2003 18:15:45 -  1.7.2.4
  @@ -610,13 +610,8 @@
err.jspError(reader.mark(), "jsp.error.fallback.notclosed");
}
   
  - Mark bodyStart = reader.mark();
  -Mark bodyEnd = reader.skipUntilETag("jsp:fallback");
  -if (bodyEnd == null) {
  -err.jspError(start, "jsp.error.unterminated", "");
  - }
  - char[] text = reader.getText(bodyStart, bodyEnd);
  -new Node.FallBackAction(start, text, parent);
  +Node.FallBackAction fallback = new Node.FallBackAction(start, parent);
  + parseBodyText(fallback, "jsp:fallback");
   }
   
   /*
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspDocumentParser.java Node.java Parser.java

2002-12-11 Thread luehe
luehe   2002/12/11 19:30:59

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspDocumentParser.java Node.java Parser.java
  Log:
  - Allow empty  body, and treat it as "".
  - In a JSP document (XML syntax), preserve any leading and trailing
white-space-only textual nodes in a  whose 'trim' attribute
is set to FALSE (these nodes are dropped otherwise).
  
  Revision  ChangesPath
  1.140 +30 -25
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.139
  retrieving revision 1.140
  diff -u -r1.139 -r1.140
  --- Generator.java11 Dec 2002 19:40:45 -  1.139
  +++ Generator.java12 Dec 2002 03:30:58 -  1.140
  @@ -2687,8 +2687,8 @@
* @return The name of the temporary variable the result is stored in.
*/
   public String generateNamedAttributeValue( Node.NamedAttribute n )
  -throws JasperException
  -{
  +throws JasperException {
  +
   String varName = n.getTemporaryVariableName();
   
   // If the only body element for this named attribute node is
  @@ -2696,29 +2696,34 @@
   // pushBody and popBody.  Maybe we can further optimize
   // here by getting rid of the temporary variable, but in
   // reality it looks like javac does this for us.
  -boolean templateTextOptimization = false;
   Node.Nodes body = n.getBody();
  -if( body.size() == 1 ) {
  -Node bodyElement = body.getNode( 0 );
  -if( bodyElement instanceof Node.TemplateText ) {
  -templateTextOptimization = true;
  -out.printil( "String " + varName + " = " +
  -quote( new String(
  -((Node.TemplateText)bodyElement).getText() ) ) + ";" );
  -}
  -}
  + if (body != null) {
  + boolean templateTextOptimization = false;
  + if( body.size() == 1 ) {
  + Node bodyElement = body.getNode( 0 );
  + if( bodyElement instanceof Node.TemplateText ) {
  + templateTextOptimization = true;
  + out.printil("String " + varName + " = "
  + + quote(new 
String(((Node.TemplateText)bodyElement).getText()))
  + + ";");
  + }
  + }
   
  -// XXX - Another possible optimization would be for
  -// lone EL expressions (no need to pushBody here either).
  + // XXX - Another possible optimization would be for
  + // lone EL expressions (no need to pushBody here either).
   
  -if( !templateTextOptimization ) {
  -out.printil( "out = pageContext.pushBody();" );
  -visitBody( n );
  -out.printil( "String " + varName + " = " +
  -  "((javax.servlet.jsp.tagext.BodyContent)" +
  -  "out).getString();" );
  -out.printil( "out = pageContext.popBody();" );
  -}
  + if( !templateTextOptimization ) {
  + out.printil( "out = pageContext.pushBody();" );
  + visitBody( n );
  + out.printil( "String " + varName + " = " +
  +  "((javax.servlet.jsp.tagext.BodyContent)" +
  +  "out).getString();" );
  + out.printil( "out = pageContext.popBody();" );
  + }
  + } else {
  + // Empty body must be treated as ""
  + out.printil("String " + varName + " = \"\";"); 
  + }
   
   return varName;
   }
  
  
  
  1.33  +38 -24
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java
  
  Index: JspDocumentParser.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- JspDocumentParser.java10 Dec 2002 21:33:35 -  1.32
  +++ JspDocumentParser.java12 Dec 2002 03:30:58 -  1.33
  @@ -349,12 +349,15 @@
   int offset,
   int len) throws SAXException {
/*
  -  * All textual nodes that have only white space are to be dropped from
  -  * the document, except for nodes in a jsp:text element, which are 
  -  * kept verbatim (JSP 5.2.1).
  +

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspDocumentParser.java Node.java Parser.java

2002-07-17 Thread luehe

luehe   2002/07/17 13:06:59

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspDocumentParser.java Node.java Parser.java
  Log:
  Do not declare tag handler pools for SimpleTag handlers.
  
  Revision  ChangesPath
  1.40  +43 -72
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.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- Generator.java17 Jul 2002 00:35:30 -  1.39
  +++ Generator.java17 Jul 2002 20:06:58 -  1.40
  @@ -196,15 +196,16 @@
 * already contained in it.
 */
public void visit(Node.CustomTag n) throws JasperException {
  - 
  - String name = createTagHandlerPoolName(n.getPrefix(),
  -n.getShortName(),
  -n.getAttributes());
  - n.setTagHandlerPoolName(name);
  - if (!names.contains(name)) {
  - names.add(name);
  - }
   
  + if (!n.implementsSimpleTag()) {
  + String name = createTagHandlerPoolName(n.getPrefix(),
  +n.getShortName(),
  +n.getAttributes());
  + n.setTagHandlerPoolName(name);
  + if (!names.contains(name)) {
  + names.add(name);
  + }
  + }
visitBody(n);
}
   
  @@ -1453,11 +1454,9 @@
TagHandlerInfo handlerInfo = (TagHandlerInfo)
handlerInfosByShortName.get(n.getShortName());
if (handlerInfo == null) {
  - handlerInfo = new TagHandlerInfo(
  - n,
  - n.getTagInfo().getTagClassName(),
  - ctxt.getClassLoader(),
  - err);
  + handlerInfo = new TagHandlerInfo(n,
  +  n.getTagHandlerClass(),
  +  err);
handlerInfosByShortName.put(n.getShortName(), handlerInfo);
}
   
  @@ -1467,22 +1466,14 @@
String tagEvalVar = "_jspx_eval_" + baseVar;
String tagHandlerVar = "_jspx_th_" + baseVar;
   
  - Class tagHandlerClass = handlerInfo.getTagHandlerClass();
  - boolean implementsIterationTag = 
  - IterationTag.class.isAssignableFrom(tagHandlerClass);
  - boolean implementsBodyTag = 
  - BodyTag.class.isAssignableFrom(tagHandlerClass);
  - boolean implementsTryCatchFinally = 
  - TryCatchFinally.class.isAssignableFrom(tagHandlerClass);
  - boolean implementsSimpleTag = 
  - SimpleTag.class.isAssignableFrom(tagHandlerClass);
  + Class tagHandlerClass = n.getTagHandlerClass();
   
// If the tag contains no scripting element, generate its codes
// to a method.
ServletWriter outSave = null;
MethodsBuffer methodsBufferSave = null;
   Node.ChildInfo ci = n.getChildInfo();
  - if (implementsSimpleTag
  + if (n.implementsSimpleTag()
|| (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
  @@ -1532,17 +1523,14 @@
   generateLocalVariables( out, n );
   }
   
  - if (implementsSimpleTag) {
  - generateCustomDoTag(n, handlerInfo, tagHandlerVar,
  - implementsTryCatchFinally);
  + if (n.implementsSimpleTag()) {
  + generateCustomDoTag(n, handlerInfo, tagHandlerVar);
} else {
/*
 * Classic tag handler: Generate code for start element, body,
 * and end element
 */
  - generateCustomStart(n, handlerInfo, tagHandlerVar, tagEvalVar,
  - implementsIterationTag, implementsBodyTag,
  - implementsTryCatchFinally);
  + generateCustomStart(n, handlerInfo, tagHandlerVar, tagEvalVar);
   
// visit body
String tmpParent = parent;
  @@ -1553,12 +1541,10 @@
parent = tmpParent;
isSimpleTagHandler = tmpIsSimpleTagHandler;
   
  - generateCustomEnd(n, tagHandlerVar, tagEvalVar,
  -  

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspDocumentParser.java Node.java Parser.java

2002-06-13 Thread kinman

kinman  2002/06/13 11:56:18

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspDocumentParser.java Node.java Parser.java
  Log:
  - Patch by Jan Luehe, to fix 2 problems related to scripting variables.
  
1. AT_BEGIN and AT_END variables are not accessible after tag end.
2. Tags within the same tag cuases Javac compilation errors.
  
  Revision  ChangesPath
  1.29  +351 -64   
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.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Generator.java12 Jun 2002 23:17:36 -  1.28
  +++ Generator.java13 Jun 2002 18:56:18 -  1.29
  @@ -185,12 +185,13 @@
public void visit(Node.CustomTag n) throws JasperException {

String name = createTagHandlerPoolName(n.getPrefix(),
  - n.getShortName(),
  - n.getAttributes());
  +n.getShortName(),
  +n.getAttributes());
n.setTagHandlerPoolName(name);
if (!names.contains(name)) {
names.add(name);
}
  +
visitBody(n);
}
   
  @@ -234,6 +235,80 @@
   
page.visit(new TagHandlerPoolVisitor(tagHandlerPoolNames));
   }
  + 
  +/*
  + * For every custom tag, declares its scripting variables with AT_BEGIN
  + * and AT_END scopes.
  + */
  +private void declareAtBeginAtEndScriptingVariables(Node.Nodes page)
  + throws JasperException {
  +
  + class ScriptingVariableDeclarationVisitor extends Node.Visitor {
  +
  + /*
  +  * Vector keeping track of which scripting variables have already
  +  * been declared
  +  */
  + private Vector scriptVars;
  +
  + /*
  +  * Constructor.
  +  */
  + public ScriptingVariableDeclarationVisitor() {
  + scriptVars = new Vector();
  + }
  +
  + public void visit(Node.CustomTag n) throws JasperException {
  +
  + TagVariableInfo[] tagVarInfos = n.getTagVariableInfos();
  + VariableInfo[] varInfos = n.getVariableInfos();
  +
  + if ((varInfos == null) && (tagVarInfos == null)) {
  + visitBody(n);
  + }
  +
  + if (varInfos != null) {
  + for (int i=0; i 0) {
out.printil("return false;");
  @@ -1213,23 +1298,33 @@
}
   
private void generateCustomStart(Node.CustomTag n,
  -  VariableInfo[] varInfos,
  -  TagVariableInfo[] tagVarInfos,
 TagHandlerInfo handlerInfo,
 String tagHandlerVar,
 String tagEvalVar)
throws JasperException {
   
  + Class tagHandlerClass = handlerInfo.getTagHandlerClass();
  +
n.setBeginJavaLine(out.getJavaLine());
out.printin("/*   ");
out.print(n.getName());
out.println("  */");
   
  - Class tagHandlerClass = handlerInfo.getTagHandlerClass();
  -
   boolean implementsTryCatchFinally =
   TryCatchFinally.class.isAssignableFrom(tagHandlerClass);
   
  + /*
  +  * Declare variables where current contents of scripting variables
  +  * will be temporarily saved
  +  */
  + declareTemporaryScriptingVariables(n);
  +
  + // Declare scripting variables with NESTED scope
  + declareNestedScriptingVariables(n);
  +
  + // Save current value of scripting variables if required
  + saveScriptingVariables(n);
  +
out.printin(tagHandlerClass.getName());
out.print(" ");
out.print(tagHandlerVar);
  @@ -1256,10 +1351,9 @@
boolean isBodyTag
= BodyTag.class.isAssignableFrom(tagHandlerClass);
   
  - // Declare and synchronize AT_BEGIN scripting variables
  - syncScriptingVariables(varInfos, tagVarInfos, n.getTagData(),
  -VariableInfo.AT_BEGIN, true);
  - 
  + // Synchronize AT_BEGIN scripting variables
  + syncScriptingVariables(n, VariableInfo.AT_BEGIN);
  +
if (n.getBody() != null) {
out.printin("if (");
out.print(tagEvalVar);
  @@ -1291,23 +1385,21 @@
}
}