luehe       2003/03/24 16:57:46

  Modified:    jasper2/src/share/org/apache/jasper/compiler
                        JspDocumentParser.java Node.java PageInfo.java
                        ParserController.java Validator.java
  Log:
  Moved indication of whether XML prolog contains explicit encoding
  declaration from PageInfo ("per translation unit") to Node.Root ("per
  file").
  
  Revision  Changes    Path
  1.48      +6 -4      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java
  
  Index: JspDocumentParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- JspDocumentParser.java    24 Mar 2003 21:36:05 -0000      1.47
  +++ JspDocumentParser.java    25 Mar 2003 00:57:46 -0000      1.48
  @@ -146,7 +146,8 @@
                                   boolean isTagFile,
                                   boolean directivesOnly,
                                   String pageEnc,
  -                                String jspConfigPageEnc)
  +                                String jspConfigPageEnc,
  +                                boolean isEncodingSpecifiedInProlog)
                throws JasperException {
   
        JspDocumentParser jspDocParser = new JspDocumentParser(pc, path,
  @@ -173,6 +174,7 @@
            Node.Root dummyRoot = new Node.Root(null, parent, true);
            dummyRoot.setPageEncoding(pageEnc);
            dummyRoot.setJspConfigPageEncoding(jspConfigPageEnc);
  +         dummyRoot.setIsEncodingSpecifiedInProlog(isEncodingSpecifiedInProlog);
            jspDocParser.current = dummyRoot;
   
            if (parent != null) {
  
  
  
  1.68      +19 -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.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- Node.java 24 Mar 2003 21:36:05 -0000      1.67
  +++ Node.java 25 Mar 2003 00:57:46 -0000      1.68
  @@ -396,6 +396,14 @@
        private String jspConfigPageEnc;
   
        /*
  +      * Indicates whether an encoding has been explicitly specified in the
  +      * page's XML prolog (only used for pages in XML syntax).
  +      * This information is used to decide whether a translation error must
  +      * be reported for encoding conflicts.
  +      */
  +     private boolean isEncodingSpecifiedInProlog;
  +
  +     /*
         * Constructor.
         */
        Root(Mark start, Node parent, boolean isXmlSyntax) {
  @@ -441,6 +449,14 @@
   
        public String getPageEncoding() {
            return pageEnc;
  +     }
  +
  +     public void setIsEncodingSpecifiedInProlog(boolean isSpecified) {
  +         isEncodingSpecifiedInProlog = isSpecified;
  +     }
  +
  +     public boolean isEncodingSpecifiedInProlog() {
  +         return isEncodingSpecifiedInProlog;
        }
   
        /**
  
  
  
  1.27      +3 -19     
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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- PageInfo.java     24 Mar 2003 21:36:05 -0000      1.26
  +++ PageInfo.java     25 Mar 2003 00:57:46 -0000      1.27
  @@ -89,14 +89,6 @@
       private boolean isErrorPage = false;
       private String errorPage = null;
   
  -    /*
  -     * Indicates whether an encoding has been explicitly specified in the
  -     * page's XML prolog (only used for pages in XML syntax).
  -     * This information is used to decide whether a translation error must
  -     * be reported for encoding conflicts.
  -     */
  -    private boolean isEncodingSpecifiedInProlog;
  -
       private int maxTagNesting = 0;
       private boolean scriptless = false;
       private boolean scriptingInvalid = false;
  @@ -252,14 +244,6 @@
   
       public void setIsErrorPage(boolean isErrorPage) {
        this.isErrorPage = isErrorPage;
  -    }
  -
  -    public void setIsEncodingSpecifiedInProlog(boolean isSpecified) {
  -     this.isEncodingSpecifiedInProlog = isSpecified;
  -    }
  -
  -    public boolean isEncodingSpecifiedInProlog() {
  -     return this.isEncodingSpecifiedInProlog;
       }
   
       public int getMaxTagNesting() {
  
  
  
  1.36      +20 -18    
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.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- ParserController.java     24 Mar 2003 21:36:05 -0000      1.35
  +++ ParserController.java     25 Mar 2003 00:57:46 -0000      1.36
  @@ -108,6 +108,8 @@
        */
       private boolean isTopFile = true;
   
  +    private boolean isEncodingSpecifiedInProlog;
  +
       private String sourceEnc;
   
       /*
  @@ -192,31 +194,30 @@
                throws FileNotFoundException, JasperException, IOException {
   
        Node.Nodes parsedPage = null;
  +     isEncodingSpecifiedInProlog = false;
        String absFileName = resolveFileName(inFileName);
  -
        String jspConfigPageEnc = getJspConfigPageEncoding(absFileName);
   
        // Figure out what type of JSP document and encoding type we are
        // dealing with
  -     determineSyntaxAndEncoding(absFileName, jarFile,
  -                                jspConfigPageEnc);
  +     determineSyntaxAndEncoding(absFileName, jarFile, jspConfigPageEnc);
   
  -     if (isTopFile) {
  -         if (isXml && pageInfo.isEncodingSpecifiedInProlog()) {
  -             /*
  -              * Make sure the encoding explicitly specified in the XML
  -              * prolog (if any) matches that in the JSP config element
  -              * (if any), treating "UTF-16", "UTF-16BE", and "UTF-16LE" as
  -              * identical.
  -              */
  -             if (jspConfigPageEnc != null
  -                     && !jspConfigPageEnc.equals(sourceEnc)
  +     if (isXml && isEncodingSpecifiedInProlog) {
  +         /*
  +          * Make sure the encoding explicitly specified in the XML
  +          * prolog (if any) matches that in the JSP config element
  +          * (if any), treating "UTF-16", "UTF-16BE", and "UTF-16LE" as
  +          * identical.
  +          */
  +         if (jspConfigPageEnc != null && !jspConfigPageEnc.equals(sourceEnc)
                        && (!jspConfigPageEnc.startsWith("UTF-16")
                            || !sourceEnc.startsWith("UTF-16"))) {
  -                 err.jspError("jsp.error.prolog_config_encoding_mismatch",
  -                              sourceEnc, jspConfigPageEnc);
  -             }
  +             err.jspError("jsp.error.prolog_config_encoding_mismatch",
  +                          sourceEnc, jspConfigPageEnc);
            }
  +     }
  +
  +     if (isTopFile) {
            isTopFile = false;
        } else {
            compiler.getPageInfo().addDependant(absFileName);
  @@ -233,7 +234,8 @@
                                                     inStream, parent,
                                                     isTagFile, directivesOnly,
                                                     sourceEnc,
  -                                                  jspConfigPageEnc);
  +                                                  jspConfigPageEnc,
  +                                                  isEncodingSpecifiedInProlog);
            } finally {
                if (inStream != null) {
                    try {
  @@ -348,7 +350,7 @@
                                                           jarFile, ctxt, err);
            sourceEnc = (String) ret[0];
            if (((Boolean) ret[1]).booleanValue()) {
  -             pageInfo.setIsEncodingSpecifiedInProlog(true);
  +             isEncodingSpecifiedInProlog = true;
            }
   
            if (!isXml && sourceEnc.equals("UTF-8")) {
  
  
  
  1.97      +6 -7      
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.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- Validator.java    25 Mar 2003 00:07:10 -0000      1.96
  +++ Validator.java    25 Mar 2003 00:57:46 -0000      1.97
  @@ -266,7 +266,7 @@
                     * Report any encoding conflict, treating "UTF-16",
                     * "UTF-16BE", and "UTF-16LE" as identical.
                     */
  -                 comparePageEncodings(value, n, pageInfo);
  +                 comparePageEncodings(value, n);
                }
            }
   
  @@ -341,8 +341,7 @@
         * page, and throws an error in case of a mismatch.
         */
        private void comparePageEncodings(String pageDirEnc,
  -                                       Node.PageDirective n,
  -                                       PageInfo pageInfo)
  +                                       Node.PageDirective n)
                    throws JasperException {
   
            String configEnc = n.getRoot().getJspConfigPageEncoding();
  @@ -355,7 +354,7 @@
            }
   
            if (n.getRoot().isXmlSyntax()
  -                 && pageInfo.isEncodingSpecifiedInProlog()) {
  +                 && n.getRoot().isEncodingSpecifiedInProlog()) {
                String pageEnc = n.getRoot().getPageEncoding();
                if (!pageDirEnc.equals(pageEnc) 
                        && (!pageDirEnc.startsWith("UTF-16")
  
  
  

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

Reply via email to