luehe 2002/11/27 08:42:26 Modified: jasper2/src/share/org/apache/jasper/compiler JspDocumentParser.java ParserController.java Log: Applied patch provided by Ryan Lubke to fix encoding issue: When processing a JSP document, pass the document's raw input stream to the SAX parser, that is, do not apply the autodetected encoding to it (the SAX parser will figure out the encoding itself). Revision Changes Path 1.30 +7 -7 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.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- JspDocumentParser.java 11 Nov 2002 19:26:28 -0000 1.29 +++ JspDocumentParser.java 27 Nov 2002 16:42:26 -0000 1.30 @@ -119,7 +119,7 @@ */ public JspDocumentParser(ParserController pc, String path, - InputStreamReader reader, + InputStream inStream, boolean isTagFile, boolean directivesOnly) { this.parserController = pc; @@ -128,7 +128,7 @@ this.taglibs = this.pageInfo.getTagLibraries(); this.err = pc.getCompiler().getErrorDispatcher(); this.path = path; - this.inputSource = new InputSource(reader); + this.inputSource = new InputSource(inStream); this.isTagFile = isTagFile; this.directivesOnly = directivesOnly; this.isTop = true; @@ -141,13 +141,13 @@ */ public static Node.Nodes parse(ParserController pc, String path, - InputStreamReader reader, + InputStream inStream, Node parent, boolean isTagFile, boolean directivesOnly) throws JasperException { - JspDocumentParser handler = new JspDocumentParser(pc, path, reader, + JspDocumentParser handler = new JspDocumentParser(pc, path, inStream, isTagFile, directivesOnly); Node.Nodes pageNodes = null; 1.27 +43 -29 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.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- ParserController.java 7 Nov 2002 22:19:13 -0000 1.26 +++ ParserController.java 27 Nov 2002 16:42:26 -0000 1.27 @@ -180,46 +180,60 @@ throws FileNotFoundException, JasperException, IOException { Node.Nodes parsedPage = null; - InputStreamReader reader = null; String absFileName = resolveFileName(inFileName); JarFile jarFile = (JarFile) ctxt.getTagFileJars().get(inFileName); - try { - // Figure out what type of JSP document and encoding type we are - // dealing with - String encoding = figureOutJspDocument(absFileName, jarFile); + // Figure out what type of JSP document and encoding type we are + // dealing with + String encoding = figureOutJspDocument(absFileName, jarFile); - if (isTopFile) { - pageInfo.setIsXml(isXml); - isTopFile = false; - } else { - compiler.getPageInfo().addDependant(absFileName); - } + if (isTopFile) { + pageInfo.setIsXml(isXml); + isTopFile = false; + } else { + compiler.getPageInfo().addDependant(absFileName); + } - // dispatch to the proper parser - reader = JspUtil.getReader(absFileName, encoding, jarFile, ctxt, - err); - if (isXml) { - parsedPage = JspDocumentParser.parse(this, absFileName, - reader, parent, + // Dispatch to the proper parser + if (isXml) { + InputStream inStream = null; + try { + inStream = JspUtil.getInputStream(absFileName, jarFile, ctxt, + err); + parsedPage = JspDocumentParser.parse(this, absFileName, + inStream, parent, isTagFile, directivesOnly); - } else { - JspReader r = new JspReader(ctxt, absFileName, encoding, - reader, err); - parsedPage = Parser.parse(this, r, parent, isTagFile, + } finally { + if (inStream != null) { + try { + inStream.close(); + } catch (Exception any) { + } + } + } + } else { + InputStreamReader inStreamReader = null; + try { + inStreamReader = JspUtil.getReader(absFileName, encoding, + jarFile, ctxt, err); + JspReader jspReader = new JspReader(ctxt, absFileName, + encoding, inStreamReader, + err); + parsedPage = Parser.parse(this, jspReader, parent, isTagFile, directivesOnly); - } - baseDirStack.pop(); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (Exception any) { + } finally { + if (inStreamReader != null) { + try { + inStreamReader.close(); + } catch (Exception any) { + } } } - } + } + + baseDirStack.pop(); return parsedPage; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>