luehe 2003/02/26 14:58:17 Modified: jasper2/src/share/org/apache/jasper/compiler Compiler.java Generator.java Node.java PageDataImpl.java PageInfo.java ParserController.java Validator.java Log: Fixed 17438: if omit-xml-decl is set to 'no' or 'false' no xml declaration is generated. Revision Changes Path 1.57 +2 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java Index: Compiler.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- Compiler.java 26 Feb 2003 14:49:29 -0000 1.56 +++ Compiler.java 26 Feb 2003 22:58:15 -0000 1.57 @@ -207,12 +207,12 @@ // a jsp-property-group in web.xml, initialize pageInfo with // those properties. if (jspProperty.isXml() != null) { - pageInfo.setIsXmlSpecified(true); + pageInfo.setIsXmlConfigSpecified(true); } if (jspProperty.isELIgnored() != null) { pageInfo.setELIgnoredSpecified(true); } - pageInfo.setIsXml(JspUtil.booleanValue(jspProperty.isXml())); + pageInfo.setIsXmlConfig(JspUtil.booleanValue(jspProperty.isXml())); pageInfo.setConfigEncoding(jspProperty.getPageEncoding()); pageInfo.setELIgnored(JspUtil.booleanValue(jspProperty.isELIgnored())); pageInfo.setScriptingInvalid(JspUtil.booleanValue(jspProperty.isScriptingInvalid())); 1.169 +14 -8 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.168 retrieving revision 1.169 diff -u -r1.168 -r1.169 --- Generator.java 26 Feb 2003 01:11:14 -0000 1.168 +++ Generator.java 26 Feb 2003 22:58:15 -0000 1.169 @@ -594,16 +594,21 @@ } /** - * Generates a XML declaration + * Generates an XML declaration, under the following conditions: + * + * - 'omit-xml-declaration' attribute of <jsp:output> action is set to + * "no" or "false" + * - JSP document without a <jsp:root> */ private void generateXmlDeclaration(Node.Nodes page) { - if (page.getRoot().isXmlSyntax() && ! pageInfo.hasJspRoot() && - (pageInfo.getOmitXmlDecl() == null /* not specified */ || - ! JspUtil.booleanValue(pageInfo.getOmitXmlDecl()))) { + if (pageInfo.getOmitXmlDecl() != null + && !JspUtil.booleanValue(pageInfo.getOmitXmlDecl()) + || (page.getRoot().isXmlSyntax() && !pageInfo.hasJspRoot() + && !ctxt.isTagFile())) { String cType = pageInfo.getContentType(); String charSet = cType.substring(cType.indexOf("charset=")+8); out.printil("out.write(\"<?xml version=\\\"1.0\\\" encoding=\\\"" + - charSet + "\\\"?>\\n\");"); + charSet + "\\\"?>\\n\");"); } } @@ -2969,6 +2974,7 @@ return; } + gen.generateXmlDeclaration(page); gen.fragmentHelperClass.generatePreamble(); page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(), out, 1.64 +7 -3 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.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- Node.java 26 Feb 2003 17:58:07 -0000 1.63 +++ Node.java 26 Feb 2003 22:58:15 -0000 1.64 @@ -400,6 +400,8 @@ */ Root(boolean isXmlSyntax) { this.isXmlSyntax = isXmlSyntax; + this.qName = JSP_ROOT_ACTION; + this.localName = ROOT_ACTION; } /* @@ -408,6 +410,8 @@ Root(Mark start, Node parent, boolean isXmlSyntax) { super(start, parent); this.isXmlSyntax = isXmlSyntax; + this.qName = JSP_ROOT_ACTION; + this.localName = ROOT_ACTION; // Figure out and set the parent root Node r = parent; 1.24 +11 -22 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java Index: PageDataImpl.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- PageDataImpl.java 23 Feb 2003 20:57:05 -0000 1.23 +++ PageDataImpl.java 26 Feb 2003 22:58:16 -0000 1.24 @@ -109,9 +109,7 @@ throws JasperException { // First pass - boolean isXml = compiler.getPageInfo().isXml(); - FirstPassVisitor firstPass = new FirstPassVisitor(page.getRoot(), - isXml); + FirstPassVisitor firstPass = new FirstPassVisitor(page.getRoot()); page.visit(firstPass); // Second pass @@ -155,12 +153,12 @@ /* * Constructor */ - public FirstPassVisitor(Node.Root root, boolean isXml) { + public FirstPassVisitor(Node.Root root) { this.root = root; this.rootAttrs = new AttributesImpl(); this.rootAttrs.addAttribute("", "", "version", "CDATA", JSP_VERSION); - if (!isXml) { + if (!root.isXmlSyntax()) { this.rootAttrs.addAttribute("", "", "xmlns:jsp", "CDATA", JSP_NAMESPACE); } @@ -179,11 +177,6 @@ addAttributes(n.getAttributes()); visitBody(n); - - if (n == this.root) { - // top-level jsp:root element - this.root.setAttributes(rootAttrs); - } } /* @@ -248,7 +241,7 @@ } /* - * Visits root node of JSP page in JSP syntax. + * Visits root node. */ public void visit(Node.Root n) throws JasperException { if (n == this.root) { @@ -267,13 +260,7 @@ * include directive) are ignored. */ public void visit(Node.JspRoot n) throws JasperException { - if (n == this.root) { - // top-level jsp:root element - appendXmlProlog(); - appendTag(n); - } else { - visitBody(n); - } + visitBody(n); } public void visit(Node.PageDirective n) throws JasperException { @@ -414,9 +401,11 @@ buf.append("<").append(n.getQName()); buf.append("\n"); + + printAttributes(n); buf.append(" ").append("jsp:id").append("=\""); buf.append(jspId++).append("\"\n"); - printAttributes(n); + if (ROOT_ACTION.equals(n.getLocalName()) || body != null || text != null) { buf.append(">\n"); 1.23 +16 -14 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java Index: PageInfo.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- PageInfo.java 26 Feb 2003 00:11:38 -0000 1.22 +++ PageInfo.java 26 Feb 2003 22:58:16 -0000 1.23 @@ -106,11 +106,13 @@ private boolean scriptingInvalid = false; private boolean elIgnored = false; private boolean elIgnoredSpecified = false; - private boolean isXml = false; private String omitXmlDecl = null; - // true is there is a is-xml element in jsp-config - private boolean isXmlSpecified = false; + // true if there is an is-xml element in the jsp-config + private boolean isXmlConfigSpecified = false; + + // The value of the is-xml element in the jsp-config + private boolean isXmlConfig = false; // A custom tag is a tag file private boolean hasTagFile = false; @@ -320,20 +322,20 @@ return elIgnoredSpecified; } - public boolean isXml() { - return isXml; + public boolean isXmlConfig() { + return isXmlConfig; } - public void setIsXml(boolean xml) { - isXml = xml; + public void setIsXmlConfig(boolean xml) { + isXmlConfig = xml; } - public boolean isXmlSpecified() { - return isXmlSpecified; + public boolean isXmlConfigSpecified() { + return isXmlConfigSpecified; } - public void setIsXmlSpecified(boolean xmlSpecified) { - isXmlSpecified = xmlSpecified; + public void setIsXmlConfigSpecified(boolean xmlSpecified) { + isXmlConfigSpecified = xmlSpecified; } public List getIncludePrelude() { 1.34 +7 -7 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java Index: ParserController.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- ParserController.java 19 Feb 2003 19:00:59 -0000 1.33 +++ ParserController.java 26 Feb 2003 22:58:16 -0000 1.34 @@ -216,7 +216,6 @@ } } pageInfo.setPageEncoding(sourceEnc); - pageInfo.setIsXml(isXml); isTopFile = false; } else { compiler.getPageInfo().addDependant(absFileName); @@ -289,11 +288,12 @@ * The properties to be determined are: * * - Syntax (JSP or XML). - * This information is supplied by setting the instance variable - * 'isXml'. + * This information is supplied by setting the 'isXml' instance + * variable. * * - Source Encoding. - * This information is supplied as the return value. + * This information is supplied by setting the 'sourceEnc' instance + * variable. * * If these properties are already specified in the jsp-config element * in web.xml, then they are used. @@ -315,11 +315,11 @@ */ boolean revert = false; - if (pageInfo.isXmlSpecified()) { + if (pageInfo.isXmlConfigSpecified()) { // If <is-xml> is specified in a <jsp-property-group>, it is used. - isXml = pageInfo.isXml(); + isXml = pageInfo.isXmlConfig(); isExternal = true; - } else if (fname.endsWith(".jspx")) { + } else if (fname.endsWith(".jspx") || fname.endsWith(".tagx")) { isXml = true; isExternal = true; } 1.85 +6 -6 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java Index: Validator.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java,v retrieving revision 1.84 retrieving revision 1.85 diff -u -r1.84 -r1.85 --- Validator.java 26 Feb 2003 17:58:07 -0000 1.84 +++ Validator.java 26 Feb 2003 22:58:16 -0000 1.85 @@ -341,7 +341,7 @@ configEnc, pageDirEnc); } - if (pageInfo.isXml() && pageInfo.isEncodingSpecifiedInProlog()) { + if (n.isXmlSyntax() && pageInfo.isEncodingSpecifiedInProlog()) { String pageEnc = pageInfo.getPageEncoding(); if (!pageDirEnc.equals(pageEnc) && (!pageDirEnc.startsWith("UTF-16") @@ -1191,8 +1191,7 @@ // Determine the default output content type PageInfo pageInfo = compiler.getPageInfo(); String contentType = pageInfo.getContentType(); - if (!compiler.getCompilationContext().isTagFile() && - (contentType == null || contentType.indexOf("charset=") < 0)) { + if (contentType == null || contentType.indexOf("charset=") < 0) { boolean isXml = page.getRoot().isXmlSyntax(); String defaultType; if (contentType == null) { @@ -1257,6 +1256,7 @@ TagLibraryInfo tli = (TagLibraryInfo) enum.nextElement(); if (!(tli instanceof TagLibraryInfoImpl)) continue; + ValidationMessage[] errors = ((TagLibraryInfoImpl) tli).validate(xmlView); if ((errors != null) && (errors.length != 0)) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]