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 jsp:fallback 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(/NOEMBED/EMBED) + ););
  
  
  
  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, jsp:fallback);
  - }
  - 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 jsp:attribute body, and treat it as .
  - In a JSP document (XML syntax), preserve any leading and trailing
white-space-only textual nodes in a jsp:attribute 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).
  +  * JSP.6.1.1: All 

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; ivarInfos.length; i++) {
  + int scope = varInfos[i].getScope();
  + String varName = varInfos[i].getVarName();
  + if (((scope == VariableInfo.AT_BEGIN)
  +  || (scope == VariableInfo.AT_END))
  +  varInfos[i].getDeclare()
  +  !scriptVars.contains(varName)) {
  + out.printin(varInfos[i].getClassName());
  + out.print( );
  + out.print(varName);
  + out.println( = null;);
  + scriptVars.add(varName);
  + }
  + }
  + } else {
  + for (int i=0; itagVarInfos.length; i++) {
  + int scope = tagVarInfos[i].getScope();
  + String varName = tagVarInfos[i].getNameGiven();
  + if (varName == null) {
  + varName = n.getTagData().getAttributeString(
  +tagVarInfos[i].getNameFromAttribute());
  + }
  + if (((scope == VariableInfo.AT_BEGIN)
  +  || (scope == VariableInfo.AT_END))
  +  tagVarInfos[i].getDeclare()
  +  !scriptVars.contains(varName)) {
  + out.printin(tagVarInfos[i].getClassName());
  + out.print( );
  + out.print(varName);
  + out.println( = null;);
  + scriptVars.add(varName);
  + }
  + }
  + }
  +
  + visitBody(n);
  + }
  + }
  +
  + page.visit(new ScriptingVariableDeclarationVisitor());
  +}
   
   /**
* Generates the destroy() method which is responsible for calling the
  @@ -379,6 +454,10 @@
   }
   */
   out.printil(JspWriter _jspx_out = null;);
  + out.println();
  +
  +