You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pi...@locus.apache.org on 2000/12/05 12:05:32 UTC
cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler DelegatingListener.java JspParseEventListener.java ParseEventListener.java ParserXJspSax.java ParserXJspSaxHandler.java
pierred 00/12/05 03:05:30
Modified: jasper/src/share/org/apache/jasper/compiler
DelegatingListener.java JspParseEventListener.java
ParseEventListener.java ParserXJspSax.java
ParserXJspSaxHandler.java
Log:
Changes from JSP1.2 PD1 to JSP1.2 PFD that were not explicitely flagged
in the PFD changes section:
- Template text not accepted anymore if it is not encapsultated within
the <jsp:cdata> element
- Tag Libraries used by a JSP document in XML syntax are defined via
the <jsp:root> xmlns attributes (no jsp:directive.taglib anymore)
Revision Changes Path
1.6 +12 -8 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java
Index: DelegatingListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DelegatingListener.java 2000/11/30 21:47:48 1.5
+++ DelegatingListener.java 2000/12/05 11:05:19 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v 1.5 2000/11/30 21:47:48 pierred Exp $
- * $Revision: 1.5 $
- * $Date: 2000/11/30 21:47:48 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v 1.6 2000/12/05 11:05:19 pierred Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/12/05 11:05:19 $
*
* ====================================================================
*
@@ -227,13 +227,17 @@
return delegate.getTagLibraries();
}
- public void handleRootBegin(Attributes attrs) {}
+ public void handleRootBegin(Attributes attrs) throws JasperException {}
public void handleRootEnd() {}
- public void handleUninterpretedTagBegin(Mark start,Mark stop,String rawName,Attributes attrs) throws JasperException {}
-
+ public void handleUninterpretedTagBegin(Mark start, Mark stop,
+ String rawName,Attributes attrs)
+ throws JasperException {}
public void handleUninterpretedTagEnd(Mark start, Mark stop,
- String rawName)
- throws JasperException {}
+ String rawName, char[] data)
+ throws JasperException {}
+
+ public void handleJspCdata(Mark start, Mark stop, char[] data)
+ throws JasperException {}
}
1.14 +40 -20 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java
Index: JspParseEventListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- JspParseEventListener.java 2000/11/30 21:47:54 1.13
+++ JspParseEventListener.java 2000/12/05 11:05:19 1.14
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.13 2000/11/30 21:47:54 pierred Exp $
- * $Revision: 1.13 $
- * $Date: 2000/11/30 21:47:54 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.14 2000/12/05 11:05:19 pierred Exp $
+ * $Revision: 1.14 $
+ * $Date: 2000/12/05 11:05:19 $
*
* ====================================================================
*
@@ -742,21 +742,6 @@
throw new CompileException(start, Constants.getString(
"jsp.error.page.bad_b_and_a_combo"));
- if (directive.equals("taglib")) {
- String uri = attrs.getValue("uri");
- String prefix = attrs.getValue("prefix");
- TagLibraryInfo tl = null;
-
- String[] location =
- ctxt.getTldLocation(uri);
- if (location == null) {
- tl = new TagLibraryInfoImpl(ctxt, prefix, uri);
- } else {
- tl = new TagLibraryInfoImpl(ctxt, prefix, uri, location);
- }
- libraries.addTagLibrary(prefix, tl);
- }
-
if (directive.equals("include")) {
String file = attrs.getValue("file");
String encoding = attrs.getValue("encoding");
@@ -1046,7 +1031,33 @@
xo.append("jsp:root");
}
- public void handleRootBegin(Attributes attrs) {
+ public void handleRootBegin(Attributes attrs)
+ throws JasperException
+ {
+ int attrsLength = attrs.getLength();
+ for (int i = 0; i < attrsLength; i++) {
+ String qName = attrs.getQName(i);
+ if (qName.startsWith("xmlns:")) {
+ String prefix = qName.substring(6);
+ if (!prefix.equals("jsp")) {
+ String uri = attrs.getValue(i);
+ System.out.println("prefix: " + prefix);
+ System.out.println("uri: " + uri);
+ if (uri.startsWith("urn:jsptld:")) {
+ uri = uri.substring(11);
+ }
+ TagLibraryInfo tl = null;
+ String[] location =
+ ctxt.getTldLocation(uri);
+ if (location == null) {
+ tl = new TagLibraryInfoImpl(ctxt, prefix, uri);
+ } else {
+ tl = new TagLibraryInfoImpl(ctxt, prefix, uri, location);
+ }
+ libraries.addTagLibrary(prefix, tl);
+ }
+ }
+ }
xo.addRootAttrs(attrs);
}
@@ -1062,14 +1073,23 @@
}
public void handleUninterpretedTagEnd(Mark start, Mark stop,
- String rawName)
+ String rawName, char[] data)
throws JasperException
{
+ if (data != null) {
+ handleCharData(start, stop, data);
+ }
UninterpretedTagEndGenerator gen =
new UninterpretedTagEndGenerator(rawName);
Generator genWrapper = new GeneratorWrapper(gen, start, stop);
addGenerator(genWrapper);
xo.append(rawName);
+ }
+
+ public void handleJspCdata(Mark start, Mark stop, char[] data)
+ throws JasperException
+ {
+ handleCharData(start, stop, data);
}
/**
1.6 +46 -32 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java
Index: ParseEventListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ParseEventListener.java 2000/11/30 21:47:56 1.5
+++ ParseEventListener.java 2000/12/05 11:05:20 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v 1.5 2000/11/30 21:47:56 pierred Exp $
- * $Revision: 1.5 $
- * $Date: 2000/11/30 21:47:56 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v 1.6 2000/12/05 11:05:20 pierred Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/12/05 11:05:20 $
*
* ====================================================================
*
@@ -92,25 +92,36 @@
void handleComment(Mark start, Mark stop, char[] text) throws JasperException;
void handleDirective(String directive,
- Mark start, Mark stop,
- Attributes attrs) throws JasperException;
- void handleDeclaration(Mark start, Mark stop, Attributes attrs, char[] text) throws JasperException;
- void handleScriptlet(Mark start, Mark stop, Attributes attrs, char[] text) throws JasperException;
- void handleExpression(Mark start, Mark stop, Attributes attrs, char[] text) throws JasperException;
+ Mark start, Mark stop,
+ Attributes attrs)
+ throws JasperException;
+ void handleDeclaration(Mark start, Mark stop, Attributes attrs, char[] text)
+ throws JasperException;
+ void handleScriptlet(Mark start, Mark stop, Attributes attrs, char[] text)
+ throws JasperException;
+ void handleExpression(Mark start, Mark stop, Attributes attrs, char[] text)
+ throws JasperException;
void handleBean(Mark start, Mark stop, Attributes attrs)
- throws JasperException;
+ throws JasperException;
void handleBean(Mark start, Mark stop, Attributes attrs, boolean isXml)
- throws JasperException;
+ throws JasperException;
void handleBeanEnd (Mark start, Mark stop, Attributes attrs)
- throws JasperException;
- void handleGetProperty(Mark start, Mark stop, Attributes attrs) throws JasperException;
- void handleSetProperty(Mark start, Mark stop, Attributes attrs) throws JasperException;
- void handleSetProperty(Mark start, Mark stop, Attributes attrs, boolean isXml) throws JasperException;
+ throws JasperException;
+ void handleGetProperty(Mark start, Mark stop, Attributes attrs)
+ throws JasperException;
+ void handleSetProperty(Mark start, Mark stop, Attributes attrs)
+ throws JasperException;
+ void handleSetProperty(Mark start, Mark stop, Attributes attrs,
+ boolean isXml)
+ throws JasperException;
void handlePlugin(Mark start, Mark stop, Attributes attrs, Hashtable param,
- String fallback) throws JasperException;
+ String fallback)
+ throws JasperException;
void handlePlugin(Mark start, Mark stop, Attributes attrs, Hashtable param,
- String fallback, boolean isXml) throws JasperException;
- void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException;
+ String fallback, boolean isXml)
+ throws JasperException;
+ void handleCharData(Mark start, Mark stop, char[] chars)
+ throws JasperException;
/*
@@ -124,35 +135,38 @@
* stop: can be null if the body contained JSP tags...
*/
void handleTagBegin(Mark start, Mark stop, Attributes attrs, String prefix, String shortTagName,
- TagLibraryInfo tli, TagInfo ti)
- throws JasperException;
+ TagLibraryInfo tli, TagInfo ti)
+ throws JasperException;
void handleTagBegin(Mark start, Mark stop, Attributes attrs, String prefix, String shortTagName,
- TagLibraryInfo tli, TagInfo ti, boolean isXml)
- throws JasperException;
+ TagLibraryInfo tli, TagInfo ti, boolean isXml)
+ throws JasperException;
void handleTagEnd(Mark start, Mark stop, String prefix, String shortTagName,
- Attributes attrs, TagLibraryInfo tli, TagInfo ti)
- throws JasperException;
+ Attributes attrs, TagLibraryInfo tli, TagInfo ti)
+ throws JasperException;
void handleForward(Mark start, Mark stop, Attributes attrs, Hashtable param)
- throws JasperException;
+ throws JasperException;
void handleForward(Mark start, Mark stop, Attributes attrs, Hashtable param, boolean isXml)
- throws JasperException;
+ throws JasperException;
void handleInclude(Mark start, Mark stop, Attributes attrs, Hashtable param)
- throws JasperException;
+ throws JasperException;
void handleInclude(Mark start, Mark stop, Attributes attrs, Hashtable param, boolean isXml)
- throws JasperException;
+ throws JasperException;
void endPageProcessing() throws JasperException;
- public void handleRootBegin(Attributes attrs);
+ public void handleRootBegin(Attributes attrs) throws JasperException;
public void handleRootEnd();
public void handleUninterpretedTagBegin(Mark start, Mark stop,
- String rawName, Attributes attrs)
- throws JasperException;
+ String rawName, Attributes attrs)
+ throws JasperException;
public void handleUninterpretedTagEnd(Mark start, Mark stop,
- String rawName)
- throws JasperException;
+ String rawName, char[] data)
+ throws JasperException;
+
+ public void handleJspCdata(Mark start, Mark stop, char[] data)
+ throws JasperException;
}
1.3 +1 -3 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSax.java
Index: ParserXJspSax.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSax.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParserXJspSax.java 2000/10/12 23:34:13 1.2
+++ ParserXJspSax.java 2000/12/05 11:05:21 1.3
@@ -140,6 +140,7 @@
// Parse
public void parse() throws JasperException {
+ //System.out.println("in ParserXJspSax");
try {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
@@ -195,9 +196,6 @@
} catch (SAXException ex) {
Exception ex2 = ex;
if (ex.getException() != null) ex2 = ex.getException();
- System.out.println("**** ICI ***");
- System.out.println(ex2.getMessage());
- System.out.println(ex2.getClass().getName());
throw new JasperException(ex2);
}
}
1.5 +33 -38 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSaxHandler.java
Index: ParserXJspSaxHandler.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSaxHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ParserXJspSaxHandler.java 2000/11/30 21:47:57 1.4
+++ ParserXJspSaxHandler.java 2000/12/05 11:05:22 1.5
@@ -77,7 +77,6 @@
*
* @@@ TODO
* - make sure validation is in sync with Parser (jsp syntax)
- * - fix the node.validate()
*/
class ParserXJspSaxHandler
extends DefaultHandler implements LexicalHandler
@@ -169,30 +168,16 @@
public void characters(char[] ch, int start, int length)
throws SAXException
{
- // @@@ have startMark computed from stopMark
- Mark stopMark = new Mark(filePath, locator.getLineNumber(),
- locator.getColumnNumber());
-
//p("\n*** characters");
//printLocation();
//p("|" + String.valueOf(ch, start, length) + "|");
Node node = (Node)stack.peek();
- if (node.isRoot() || node.isUninterpretedTag()) {
- // template data in <jsp:root>.
- //p("these chars are added directly in jsp:root");
- try {
- jspHandler.handleCharData(stopMark, stopMark,
- makeCharArray(ch, start, length));
- } catch (Exception ex) {
- throw new SAXException(ex);
- }
- } else {
- // characters added to the body content of the element
- // at the top of the stack
- //p("these chars are added to node " + node.rawName + " in stack");
- node.addText(ch, start, length);
- }
+
+ // characters added to the body content of the element
+ // at the top of the stack
+ //p("these chars are added to node " + node.rawName + " in stack");
+ node.addText(ch, start, length);
}
public void ignorableWhitespace(char[] ch,
@@ -294,7 +279,6 @@
//p("namespaceURI: " + namespaceURI);
//p("localName: " + localName);
//p("rawName: " + rawName);
- //p("attrs: " + attrs.toString());
Mark stop = new Mark(filePath, locator.getLineNumber(),
locator.getColumnNumber());
@@ -305,19 +289,19 @@
try {
if (name.equals("jsp:root")) {
+ node.validate(true, false);
jspHandler.handleRootEnd();
+ } else if (name.equals("jsp:cdata")) {
+ node.validate(false, true);
+ jspHandler.handleJspCdata(node.start, stop, node.getText());
} else if (name.equals("jsp:directive.include")) {
node.validate(true, false);
jspHandler.handleDirective("include", node.start, stop,
- node.attrs);
+ node.attrs);
} else if (name.equals("jsp:directive.page")) {
node.validate(true, false);
jspHandler.handleDirective("page", node.start, stop,
- node.attrs);
- } else if (name.equals("jsp:directive.taglib")) {
- node.validate(true, false);
- jspHandler.handleDirective("taglib", node.start, stop,
- node.attrs);
+ node.attrs);
} else if (name.equals("jsp:declaration")) {
node.validate(false, true);
jspHandler.handleDeclaration(
@@ -346,7 +330,7 @@
params = popParams();
node = (Node)stack.pop();
}
- node.validate(true, true); //@@@
+ node.validate(true, false);
jspHandler.handleInclude(node.start, stop, node.attrs, params, true);
} else if (name.equals("jsp:forward")) {
Hashtable params = null;
@@ -356,16 +340,16 @@
params = popParams();
node = (Node)stack.pop();
}
- node.validate(true, true);
+ node.validate(true, false);
jspHandler.handleForward(node.start, stop, node.attrs, params, true);
} else if (name.equals("jsp:useBean")) {
- node.validate(true, true); // @@@
+ node.validate(true, false);
jspHandler.handleBeanEnd(node.start, stop, node.attrs);
} else if (name.equals("jsp:getProperty")) {
- node.validate(true, true); // @@@
+ node.validate(true, false);
jspHandler.handleGetProperty(node.start, stop, node.attrs);
} else if (name.equals("jsp:setProperty")) {
- node.validate(true, true); // @@@
+ node.validate(true, false);
jspHandler.handleSetProperty(node.start, stop, node.attrs, true);
} else if (name.equals("jsp:plugin")) {
//@@@ test jsp parser to see if fallback can come first?
@@ -382,22 +366,27 @@
params = popParams();
node = (Node)stack.pop();
}
- node.validate(true, true);
+ node.validate(true, false);
//p(node);
jspHandler.handlePlugin(node.start, stop, node.attrs, params,
fallback, true);
} else {
if (node.isUninterpretedTag()) {
// this is an 'uninterpreted' tag
- jspHandler.handleUninterpretedTagEnd(stop, stop, rawName);
+ jspHandler.handleUninterpretedTagEnd(stop, stop, rawName,
+ node.getText());
} else {
// this is a custom tag
+ node.validate(true, false);
processCustomTagEnd((NodeTag)node, stop);
}
}
} catch (Exception ex) {
- ex.printStackTrace();
- throw new SAXException(ex);
+ if (ex instanceof SAXException) {
+ throw (SAXException)ex;
+ } else {
+ throw new SAXException(ex);
+ }
}
}
@@ -639,10 +628,16 @@
rawName + " cannot have attributes.");
}
if (!canHaveText && text != null) {
- throw new SAXException("VALIDATE ERROR: " +
- rawName + " cannot have text.");
+ String data = text.toString().trim();
+ if (data.length() > 0) {
+ throw new SAXException(
+ Constants.getString(
+ "jspx.error.templateDataNotInJspCdata",
+ new Object[]{rawName, JspUtil.escapeXml(data)}));
+ }
}
}
+
public void display() {
p("NODE: " + rawName);
for (int i=0; i<attrs.getLength(); i++) {