You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2004/10/04 22:10:14 UTC

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

markt       2004/10/04 13:10:14

  Modified:    jasper2/src/share/org/apache/jasper/compiler Tag:
                        tomcat_4_branch JspDocumentParser.java
                        ParserController.java
  Log:
  Fix bug 19778. Ensure JSPs in XML form using UTF-8 encoding
  (or any other) are correctly handled.
   - Based on a patch provided by 'marcello'
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.4.2.8   +4 -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.4.2.7
  retrieving revision 1.4.2.8
  diff -u -r1.4.2.7 -r1.4.2.8
  --- JspDocumentParser.java	25 Aug 2004 20:53:30 -0000	1.4.2.7
  +++ JspDocumentParser.java	4 Oct 2004 20:10:14 -0000	1.4.2.8
  @@ -76,13 +76,13 @@
        */
       public JspDocumentParser(ParserController pc,
                                String path,
  -                             InputStreamReader reader) {
  +                             InputStream stream) {
           this.parserController = pc;
           this.ctxt = pc.getJspCompilationContext();
           this.taglibs = pc.getCompiler().getPageInfo().getTagLibraries();
           this.err = pc.getCompiler().getErrorDispatcher();
           this.path = path;
  -        this.inputSource = new InputSource(reader);
  +        this.inputSource = new InputSource(stream);
       }
   
       /*
  @@ -92,9 +92,9 @@
        */
       public static Node.Nodes parse(ParserController pc,
                                      String path,
  -                                   InputStreamReader reader,
  +                                   InputStream stream,
                                      Node parent) throws JasperException {
  -        JspDocumentParser handler = new JspDocumentParser(pc, path, reader);
  +        JspDocumentParser handler = new JspDocumentParser(pc, path, stream);
           handler.current = parent;
           Node.Nodes pageNodes = null;
   
  
  
  
  1.4.2.5   +25 -12    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.4.2.4
  retrieving revision 1.4.2.5
  diff -u -r1.4.2.4 -r1.4.2.5
  --- ParserController.java	25 Aug 2004 20:53:32 -0000	1.4.2.4
  +++ ParserController.java	4 Oct 2004 20:10:14 -0000	1.4.2.5
  @@ -124,6 +124,7 @@
           Node.Nodes parsedPage = null;
           String absFileName = resolveFileName(inFileName);
           String encoding = topFileEncoding;
  +        InputStream stream = null;
           InputStreamReader reader = null;
           try {
               // Figure out what type of JSP document we are dealing with
  @@ -146,11 +147,12 @@
   
               // dispatch to the proper parser
               
  -            reader = getReader(absFileName, encoding);
               if (isXml) {
  +                stream = getStream(absFileName);
                   parsedPage = JspDocumentParser.parse(this, absFileName,
  -                                                     reader, parent);
  +                                                     stream, parent);
               } else {
  +                reader = getReader(absFileName, encoding);
                   JspReader r = new JspReader(ctxt, absFileName, encoding,
                                               reader,
                                               compiler.getErrorDispatcher());
  @@ -164,6 +166,13 @@
                   } catch (Exception any) {
                   }
               }
  +            
  +            if (stream != null) {
  +                try {
  +                    stream.close();
  +                } catch (Exception any) {
  +                }
  +            }
           }
   
           return parsedPage;
  @@ -201,8 +210,8 @@
           newEncoding = null;
   
           // Figure out the encoding of the page
  -        // FIXME: We assume xml parser will take care of
  -        // encoding for page in XML syntax. Correct?
  +        // xml parser will take care of encoding for
  +        // page in XML syntax since we pass it a stream
           if (!isXml) {
               jspReader.reset(startMark);
               while (jspReader.skipUntil("<%@") != null) {
  @@ -253,18 +262,22 @@
           return fileName;
       }
   
  -    private InputStreamReader getReader(String file, String encoding)
  -        throws FileNotFoundException, JasperException
  +    private InputStream getStream(String file)
  +        throws FileNotFoundException
       {
           InputStream in;
  -        InputStreamReader reader;
  +        in = ctxt.getResourceAsStream(file);
  +        if (in == null) {
  +            throw new FileNotFoundException(file);
  +        }
  +        return in;
  +    }
   
  +    private InputStreamReader getReader(String file, String encoding)
  +        throws FileNotFoundException, JasperException
  +    {
           try {
  -            in = ctxt.getResourceAsStream(file);
  -            if (in == null) {
  -                throw new FileNotFoundException(file);
  -            }
  -            return new InputStreamReader(in, encoding);
  +            return new InputStreamReader(getStream(file), encoding);
           } catch (UnsupportedEncodingException ex) {
               throw new JasperException(
                   Constants.getString("jsp.error.unsupported.encoding",
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org