horwat 01/04/13 14:51:34 Modified: jasper/src/share/org/apache/jasper/compiler DelegatingListener.java JspParseEventListener.java Parser.java XmlOutputter.java Log: Fixed mapping between JSP and XML syntax according to Section 5.3 of JSP 1.2 specification: - tag library namespaces are now added to root element instead of using the "directive.taglib" syntax - fixed character data handling Bugzilla #1221 Revision Changes Path 1.7 +6 -4 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DelegatingListener.java 2000/12/05 11:05:19 1.6 +++ DelegatingListener.java 2001/04/13 21:51:33 1.7 @@ -1,7 +1,7 @@ /* - * $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 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v 1.7 2001/04/13 21:51:33 horwat Exp $ + * $Revision: 1.7 $ + * $Date: 2001/04/13 21:51:33 $ * * ==================================================================== * @@ -238,6 +238,8 @@ throws JasperException {} public void handleJspCdata(Mark start, Mark stop, char[] data) - throws JasperException {} + throws JasperException { + delegate.handleJspCdata(start, stop, data); + } } 1.25 +9 -5 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.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- JspParseEventListener.java 2001/04/09 23:38:12 1.24 +++ JspParseEventListener.java 2001/04/13 21:51:33 1.25 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.24 2001/04/09 23:38:12 horwat Exp $ - * $Revision: 1.24 $ - * $Date: 2001/04/09 23:38:12 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.25 2001/04/13 21:51:33 horwat Exp $ + * $Revision: 1.25 $ + * $Date: 2001/04/13 21:51:33 $ * * ==================================================================== * @@ -752,9 +752,12 @@ String uri = attrs.getValue("uri"); String prefix = attrs.getValue("prefix"); processTaglibDirective(uri, prefix); + + //Add xmlns to root element for each taglib + xo.addRootNamespaces(prefix, uri); } - if (directive.equals("include")) { + else if (directive.equals("include")) { String file = attrs.getValue("file"); if (file == null) throw new CompileException(start, @@ -781,7 +784,8 @@ ex.getMessage()); } } - if (!directive.equals("include")) { + + else if (!directive.equals("include")) { xo.append("jsp:directive." + directive, attrs); } } 1.8 +4 -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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Parser.java 2001/02/09 00:19:19 1.7 +++ Parser.java 2001/04/13 21:51:34 1.8 @@ -1063,8 +1063,10 @@ void flushCharData(Mark start, Mark stop) throws JasperException { char[] array = caw.toCharArray(); - if (array.length != 0) // Avoid unnecessary out.write("") statements... - listener.handleCharData(start, stop, caw.toCharArray()); + // Avoid unnecessary out.write("") statements... + if (array.length != 0) { + listener.handleJspCdata(start, stop, caw.toCharArray()); + } caw = new CharArrayWriter(); } 1.8 +15 -4 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/XmlOutputter.java Index: XmlOutputter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/XmlOutputter.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XmlOutputter.java 2000/12/15 12:29:25 1.7 +++ XmlOutputter.java 2001/04/13 21:51:34 1.8 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/XmlOutputter.java,v 1.7 2000/12/15 12:29:25 pierred Exp $ - * $Revision: 1.7 $ - * $Date: 2000/12/15 12:29:25 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/XmlOutputter.java,v 1.8 2001/04/13 21:51:34 horwat Exp $ + * $Revision: 1.8 $ + * $Date: 2001/04/13 21:51:34 $ * * ==================================================================== * @@ -127,6 +127,14 @@ } } + /** + * Add a namespace entry for every taglib in the <jsp:root> tag. + */ + void addRootNamespaces(String prefix, String uri) { + rootAttrs.addAttribute("", "localname", "xmlns:" + prefix, "CDATA", uri); + } + + /* * Only put the </jsp:root> tag when we're dealing * with the top level 'container' page. @@ -212,7 +220,7 @@ * Append the end tag to the xml stream. */ void append(String tag) { - sb.append("</").append(tag).append(">"); + sb.append("</").append(tag).append(">\n"); } //********************************************************************* @@ -227,8 +235,11 @@ buff.append(PROLOG); append("jsp:root", rootAttrs, buff); buff.append(sb.toString()); + buff.append("</jsp:root>"); InputStream is = new ByteArrayInputStream(buff.toString().getBytes()); +//DELETE +System.out.println("getPageData: \n" + buff.toString()); PageData pageData = new PageDataImpl(is); return pageData; }