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 2005/01/22 18:38:12 UTC

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

markt       2005/01/22 09:38:12

  Modified:    jasper2/src/share/org/apache/jasper/compiler Tag:
                        tomcat_4_branch Compiler.java
  Log:
  Fix bug 27806. JspC creates blank files on failure and when cause of
  error is fixed does not always re-attempt .java generation.
   -  Fixed by porting fix for 28603 from TC5
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.18.2.21 +61 -36    jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.18.2.20
  retrieving revision 1.18.2.21
  diff -u -r1.18.2.20 -r1.18.2.21
  --- Compiler.java	12 Sep 2004 20:43:48 -0000	1.18.2.20
  +++ Compiler.java	22 Jan 2005 17:38:12 -0000	1.18.2.21
  @@ -163,44 +163,69 @@
           pageInfo = new PageInfo(new BeanRepository(ctxt.getClassLoader()));
   
           String javaFileName = ctxt.getServletJavaFileName();
  -
  -        // Setup the ServletWriter
  -        String javaEncoding = ctxt.getOptions().getJavaEncoding();
  -
  -        OutputStreamWriter osw = null; 
  +        ServletWriter writer = null;
  +        
           try {
  -            osw = new OutputStreamWriter(new FileOutputStream(javaFileName),
  -                                         javaEncoding);
  -        } catch (UnsupportedEncodingException ex) {
  -            errDispatcher.jspError("jsp.error.needAlternateJavaEncoding", javaEncoding);
  -        }
  +            // Setup the ServletWriter
  +            String javaEncoding = ctxt.getOptions().getJavaEncoding();
   
  -        ServletWriter writer = new ServletWriter(new PrintWriter(osw));
  -        ctxt.setWriter(writer);
  -
  -        // Parse the file
  -        ParserController parserCtl = new ParserController(ctxt, this);
  -        pageNodes = parserCtl.parse(ctxt.getJspFile());
  -
  -        // Validate and process attributes
  -        Validator.validate(this, pageNodes);
  -
  -        // Dump out the page (for debugging)
  -        // Dumper.dump(pageNodes);
  -
  -        // Collect page info
  -        Collector.collect(this, pageNodes);
  -
  -        // Determine which custom tag needs to declare which scripting vars
  -        ScriptingVariabler.set(pageNodes);
  -
  -        // generate servlet .java file
  -        Generator.generate(writer, this, pageNodes);
  -        writer.close();
  -        // The writer is only used during the compile, dereference
  -        // it in the JspCompilationContext when done to allow it
  -        // to be GC'd and save memory.
  -        ctxt.setWriter(null);
  +            OutputStreamWriter osw = null; 
  +            try {
  +                osw = new OutputStreamWriter(new FileOutputStream(javaFileName),
  +                                             javaEncoding);
  +            } catch (UnsupportedEncodingException ex) {
  +                errDispatcher.jspError("jsp.error.needAlternateJavaEncoding", javaEncoding);
  +            }
  +
  +            writer = new ServletWriter(new PrintWriter(osw));
  +            ctxt.setWriter(writer);
  +
  +            // Parse the file
  +            ParserController parserCtl = new ParserController(ctxt, this);
  +            pageNodes = parserCtl.parse(ctxt.getJspFile());
  +
  +            // Validate and process attributes
  +            Validator.validate(this, pageNodes);
  +
  +            // Dump out the page (for debugging)
  +            // Dumper.dump(pageNodes);
  +
  +            // Collect page info
  +            Collector.collect(this, pageNodes);
  +
  +            // Determine which custom tag needs to declare which scripting vars
  +            ScriptingVariabler.set(pageNodes);
  +
  +            // generate servlet .java file
  +            Generator.generate(writer, this, pageNodes);
  +            writer.close();
  +            writer = null;
  +
  +            // The writer is only used during the compile, dereference
  +            // it in the JspCompilationContext when done to allow it
  +            // to be GC'd and save memory.
  +            ctxt.setWriter(null);
  +        } catch (Exception e) {
  +            if (writer != null) {
  +                try {
  +                    writer.close();
  +                    writer = null;
  +                } catch (Exception e1) {
  +                    // Do nothing
  +                }
  +            }
  +            // Remove the generated .java file
  +            new File(javaFileName).delete();
  +            throw e;
  +        } finally {
  +            if (writer != null) {
  +                try {
  +                    writer.close();
  +                } catch (Exception e2) {
  +                    // Do nothing
  +                }
  +            }
  +        }
       }
   
       /** 
  
  
  

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