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]