kinman      2003/08/14 14:16:52

  Modified:    jasper2/src/share/org/apache/jasper/compiler
                        ErrorDispatcher.java Generator.java PageInfo.java
                        Validator.java
               jasper2/src/share/org/apache/jasper/resources
                        messages.properties messages_es.properties
                        messages_fr.properties messages_ja.properties
  Log:
  - Add attibutes doctype-root-element, doctype-system and doctype-public
    to <jsp:output> for outputing a DOCTYPE declartion in xml documents, per
    latest spec change.
  
  Revision  Changes    Path
  1.13      +24 -4     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ErrorDispatcher.java
  
  Index: ErrorDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ErrorDispatcher.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ErrorDispatcher.java      11 Aug 2003 21:11:07 -0000      1.12
  +++ ErrorDispatcher.java      14 Aug 2003 21:16:52 -0000      1.13
  @@ -240,7 +240,7 @@
        * resource bundle for localized error messages, it is used as the error
        * message.
        *
  -     * @param n Node that caused the error
  +     * @param where Error location
        * @param errCode Error code
        * @param arg1 First argument for parametric replacement
        * @param arg2 Second argument for parametric replacement
  @@ -269,6 +269,26 @@
       public void jspError(Node n, String errCode, String arg1, String arg2)
                throws JasperException {
        dispatch(n.getStart(), errCode, new Object[] {arg1, arg2}, null);
  +    }
  +
  +    /*
  +     * Dispatches the given JSP parse error to the configured error handler.
  +     *
  +     * The given error code is localized. If it is not found in the
  +     * resource bundle for localized error messages, it is used as the error
  +     * message.
  +     *
  +     * @param n Node that caused the error
  +     * @param errCode Error code
  +     * @param arg1 First argument for parametric replacement
  +     * @param arg2 Second argument for parametric replacement
  +     * @param arg3 Third argument for parametric replacement
  +     */
  +
  +    public void jspError(Node n, String errCode, String arg1, String arg2,
  +                         String arg3)
  +             throws JasperException {
  +     dispatch(n.getStart(), errCode, new Object[] {arg1, arg2, arg3}, null);
       }
   
       /*
  
  
  
  1.195     +40 -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.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- Generator.java    9 Aug 2003 19:19:37 -0000       1.194
  +++ Generator.java    14 Aug 2003 21:16:52 -0000      1.195
  @@ -594,14 +594,18 @@
       }
   
       /**
  -     * 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>
  +     * Generates an XML Prolog, which includes an XML declaration and
  +     * an XML doctype declaration.
        */
  -    private void generateXmlDeclaration(Node.Nodes page) {
  +    private void generateXmlProlog(Node.Nodes page) {
   
  +     /*
  +      * An XML declaration is generated under the following conditions:
  +      *
  +      * - 'omit-xml-declaration' attribute of <jsp:output> action is set to
  +      *   "no" or "false"
  +      * - JSP document without a <jsp:root>
  +      */
        String omitXmlDecl = pageInfo.getOmitXmlDecl();
        if ((omitXmlDecl != null && !JspUtil.booleanValue(omitXmlDecl))
            || (omitXmlDecl == null && page.getRoot().isXmlSyntax()
  @@ -611,6 +615,31 @@
            out.printil("out.write(\"<?xml version=\\\"1.0\\\" encoding=\\\"" +
                        charSet + "\\\"?>\\n\");");
        }
  +
  +     /*
  +      * Output a DOCTYPE declaration if the doctype-root-element appears.
  +      * If doctype-public appears:
  +      *     <!DOCTYPE name PUBLIC "doctypePublic" "doctypeSystem">
  +      * else
  +      *     <!DOCTYPE name SYSTEM "doctypeSystem" >
  +      */
  +
  +     String doctypeName = pageInfo.getDoctypeName();
  +     if (doctypeName != null) {
  +         String doctypePublic = pageInfo.getDoctypePublic();
  +         String doctypeSystem = pageInfo.getDoctypeSystem();
  +         out.printin("out.write(\"<!DOCTYPE ");
  +         out.print(doctypeName);
  +         if (doctypePublic == null) {
  +             out.print(" SYSTEM \\\"");
  +         } else {
  +             out.print(" PUBLIC \\\"");
  +             out.print(doctypePublic);
  +             out.print("\\\" \\\"");
  +         }
  +         out.print(doctypeSystem);
  +         out.println("\\\">\\n\");");
  +     }
       }
   
       /*
  @@ -2916,7 +2945,7 @@
                return;
            }
   
  -         gen.generateXmlDeclaration(page);
  +         gen.generateXmlProlog(page);
            gen.fragmentHelperClass.generatePreamble();
            page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(),
                                               out,
  @@ -2927,7 +2956,7 @@
            gen.generateTagHandlerPostamble(tagInfo);
        } else {
            gen.generatePreamble(page);
  -         gen.generateXmlDeclaration(page);
  +         gen.generateXmlProlog(page);
            gen.fragmentHelperClass.generatePreamble();
            page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(),
                                               out,
  
  
  
  1.39      +29 -3     
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.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- PageInfo.java     8 Aug 2003 22:22:09 -0000       1.38
  +++ PageInfo.java     14 Aug 2003 21:16:52 -0000      1.39
  @@ -105,6 +105,9 @@
       private String isELIgnoredValue;
       private boolean isELIgnored = false;
       private String omitXmlDecl = null;
  +    private String doctypeName = null;
  +    private String doctypePublic = null;
  +    private String doctypeSystem = null;
   
       private boolean isJspPrefixHijacked;
   
  @@ -227,6 +230,29 @@
        omitXmlDecl = omit;
       }
   
  +    public String getDoctypeName() {
  +     return doctypeName;
  +    }
  +
  +    public void setDoctypeName(String doctypeName) {
  +     this.doctypeName = doctypeName;
  +    }
  +
  +    public String getDoctypeSystem() {
  +     return doctypeSystem;
  +    }
  +
  +    public void setDoctypeSystem(String doctypeSystem) {
  +     this.doctypeSystem = doctypeSystem;
  +    }
  +
  +    public String getDoctypePublic() {
  +     return doctypePublic;
  +    }
  +
  +    public void setDoctypePublic(String doctypePublic) {
  +     this.doctypePublic = doctypePublic;
  +    }
   
       /* Tag library and XML namespace management methods */
   
  
  
  
  1.113     +60 -8     
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.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- Validator.java    4 Aug 2003 22:55:44 -0000       1.112
  +++ Validator.java    14 Aug 2003 21:16:52 -0000      1.113
  @@ -408,7 +408,10 @@
            new JspUtil.ValidAttribute("scope") };
   
        private static final JspUtil.ValidAttribute[] jspOutputAttrs = {
  -         new JspUtil.ValidAttribute("omit-xml-declaration") };
  +         new JspUtil.ValidAttribute("omit-xml-declaration"),
  +         new JspUtil.ValidAttribute("doctype-root-element"),
  +         new JspUtil.ValidAttribute("doctype-public"),
  +         new JspUtil.ValidAttribute("doctype-system") };
   
        /*
         * Constructor
  @@ -813,12 +816,61 @@
                   err.jspError(n, "jsp.error.jspoutput.nonemptybody");
            }
   
  -         if (pageInfo.getOmitXmlDecl() != null) {
  -                err.jspError(n, "jsp.error.multiple.jspoutput");
  +         String omitXmlDecl = n.getAttributeValue("omit-xml-declaration");
  +         String doctypeName = n.getAttributeValue("doctype-root-element");
  +         String doctypePublic = n.getAttributeValue("doctype-public");
  +         String doctypeSystem = n.getAttributeValue("doctype-system");
  +
  +         String omitXmlDeclOld = pageInfo.getOmitXmlDecl();
  +         String doctypeNameOld = pageInfo.getDoctypeName();
  +         String doctypePublicOld = pageInfo.getDoctypePublic();
  +         String doctypeSystemOld = pageInfo.getDoctypeSystem();
  +
  +         if (omitXmlDecl != null && omitXmlDeclOld != null &&
  +                     !omitXmlDecl.equals(omitXmlDeclOld) ) {
  +                err.jspError(n, "jsp.error.jspoutput.conflict",
  +                     "omit-xml-declaration", omitXmlDeclOld, omitXmlDecl);
  +         }
  +
  +         if (doctypeName != null && doctypeNameOld != null &&
  +                     !doctypeName.equals(doctypeNameOld) ) {
  +                err.jspError(n, "jsp.error.jspoutput.conflict",
  +                     "doctype-root-element", doctypeNameOld, doctypeName);
  +         }
  +
  +         if (doctypePublic != null && doctypePublicOld != null &&
  +                     !doctypePublic.equals(doctypePublicOld) ) {
  +                err.jspError(n, "jsp.error.jspoutput.conflict",
  +                     "doctype-public", doctypePublicOld, doctypePublic);
  +         }
  +
  +         if (doctypeSystem != null && doctypeSystemOld != null &&
  +                     !doctypeSystem.equals(doctypeSystemOld) ) {
  +                err.jspError(n, "jsp.error.jspoutput.conflict",
  +                     "doctype-system", doctypeSystemOld, doctypeSystem);
            }
   
  -         pageInfo.setOmitXmlDecl(
  -                     n.getAttributeValue("omit-xml-declaration"));
  +         if (doctypeName == null && doctypeSystem != null ||
  +             doctypeName != null && doctypeSystem == null) {
  +             err.jspError(n, "jsp.error.jspoutput.doctypenamesystem");
  +         }
  +
  +         if (doctypePublic != null && doctypeSystem == null) {
  +             err.jspError(n, "jsp.error.jspoutput.doctypepulicsystem");
  +         }
  +
  +         if (omitXmlDecl != null) {
  +             pageInfo.setOmitXmlDecl(omitXmlDecl);
  +         }
  +         if (doctypeName != null) {
  +             pageInfo.setDoctypeName(doctypeName);
  +         }
  +         if (doctypeSystem != null) {
  +             pageInfo.setDoctypeSystem(doctypeSystem);
  +         }
  +         if (doctypePublic != null) {
  +             pageInfo.setDoctypePublic(doctypePublic);
  +         }
        }
   
        public void visit(Node.InvokeAction n) throws JasperException {
  
  
  
  1.130     +5 -2      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- messages.properties       12 Aug 2003 19:11:45 -0000      1.129
  +++ messages.properties       14 Aug 2003 21:16:52 -0000      1.130
  @@ -372,7 +372,10 @@
   jsp.error.xml.closeQuoteMissingInTextDecl = closing quote in the value following 
\"{0}\" in the text declaration is missing.
   jsp.error.xml.closeQuoteMissingInXMLDecl = closing quote in the value following 
\"{0}\" in the XML declaration is missing.
   jsp.error.xml.invalidHighSurrogate = High surrogate bits in UTF-8 sequence must not 
exceed 0x10 but found 0x{0}.
  -jsp.error.multiple.jspoutput = Cannot have multiple occurrences of 
&lt;jsp:output&gt;
  +jsp.error.multiple.jsp = Cannot have multiple specifications of 
  +jsp.error.jspoutput.conflict=&lt;jsp:output&gt;: illegal to have multiple 
occurrences of \"{0}\" with different values (old: {1}, new: {2})
  +jsp.error.jspoutput.doctypenamesystem=&lt;jsp:output&gt;: 'doctype-root-element' 
and 'doctype-system' attributes must appear together
  +jsp.error.jspoutput.doctypepulicsystem=&lt;jsp:output&gt;: 'doctype-system' 
attribute must appear if 'doctype-public' attribute appears
   jsp.error.jspoutput.nonemptybody=&lt;jsp:output&gt; must not have a body
   jsp.error.jspoutput.invalidUse=&lt;jsp:output&gt; must not be used in standard 
syntax
   jsp.error.attributes.not.allowed = {0} must not have any attributes
  
  
  
  1.43      +7 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties
  
  Index: messages_es.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- messages_es.properties    11 Aug 2003 21:11:07 -0000      1.42
  +++ messages_es.properties    14 Aug 2003 21:16:52 -0000      1.43
  @@ -256,3 +256,9 @@
   jsp.error.coda.xml=
   jsp.error.jsptext.badcontent=
   jsp.error.prefix.refined=
  +jsp.error.jspoutput.conflict=
  +jsp.error.jspoutput.doctypenamesystem=
  +jsp.error.jspoutput.doctypepulicsystem=
  +jsp.error.jspoutput.nonemptybody=
  +jsp.error.jspoutput.invalidUse=
  +
  
  
  
  1.28      +7 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties
  
  Index: messages_fr.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- messages_fr.properties    11 Aug 2003 21:11:07 -0000      1.27
  +++ messages_fr.properties    14 Aug 2003 21:16:52 -0000      1.28
  @@ -293,3 +293,9 @@
   jsp.error.coda.xml=
   jsp.error.jsptext.badcontent=
   jsp.error.prefix.refined=
  +jsp.error.jspoutput.conflict=
  +jsp.error.jspoutput.doctypenamesystem=
  +jsp.error.jspoutput.doctypepulicsystem=
  +jsp.error.jspoutput.nonemptybody=
  +jsp.error.jspoutput.invalidUse=
  +
  
  
  
  1.44      +7 -2      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- messages_ja.properties    11 Aug 2003 21:11:07 -0000      1.43
  +++ messages_ja.properties    14 Aug 2003 21:16:52 -0000      1.44
  @@ -334,7 +334,6 @@
   jsp.error.xml.closeQuoteMissingInTextDecl = 
\u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306e\u4e2d\u306e\u6700\u5f8c\u306e\u30af\u30aa\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093
   jsp.error.xml.closeQuoteMissingInXMLDecl = 
XML\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306e\u4e2d\u306e\u6700\u5f8c\u306e\u30af\u30aa\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093
   jsp.error.xml.invalidHighSurrogate = 
UTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u30cf\u30a4\u30b5\u30ed\u30b2\u30fc\u30c8\u30d3\u30c3\u30c8\u306f0x10\u3092\u8d8a\u3048\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u304c\u30010x{0}\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f
  -jsp.error.multiple.jspoutput = 
&lt;jsp:output&gt;\u3092\u8907\u6570\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
   jsp.error.attributes.not.allowed = {0} 
\u306f\u5c5e\u6027\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
   jsp.error.tagfile.badSuffix=\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 {0} 
\u306e\u4e2d\u306b\".tag\" \u62e1\u5f35\u5b50\u304c\u3042\u308a\u307e\u305b\u3093
   
jsp.error.tagfile.illegalPath=\u4e0d\u6b63\u306a\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3067\u3059:
 
{0}\u3001\u3053\u308c\u306f\"/WEB-INF/tags\"\u307e\u305f\u306f\"/META-INF/tags\"\u3067\u59cb\u307e\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
  @@ -348,3 +347,9 @@
   jsp.error.prelude.xml=JSP\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 {0} 
\u306f\u305d\u308c\u306b\u95a2\u9023\u3057\u305f\u5c0e\u5165\u90e8 ({1}) 
\u3092\u6301\u3063\u3066\u3044\u307e\u3059
   jsp.error.coda.xml=JSP\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 {0} 
\u306f\u305d\u308c\u306b\u95a2\u9023\u3057\u305f\u7d42\u7d50\u90e8 ({1}) 
\u3092\u6301\u3063\u3066\u3044\u307e\u3059
   jsp.error.prefix.refined=
  +jsp.error.jspoutput.conflict=
  +jsp.error.jspoutput.doctypenamesystem=
  +jsp.error.jspoutput.doctypepulicsystem=
  +jsp.error.jspoutput.nonemptybody=
  +jsp.error.jspoutput.invalidUse=
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to