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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]