You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2002/11/27 17:42:26 UTC

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler JspDocumentParser.java ParserController.java

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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>