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]

Reply via email to