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