--- java/org/apache/jasper/compiler/Compiler.java (revision 582520) +++ java/org/apache/jasper/compiler/Compiler.java (working copy) @@ -141,24 +141,10 @@ ctxt.checkOutputDir(); String javaFileName = ctxt.getServletJavaFileName(); + ServletWriter writer = null; - try { - // Setup the ServletWriter - String javaEncoding = ctxt.getOptions().getJavaEncoding(); - 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); - // Reset the temporary variable counter for the generator. JspUtil.resetTemporaryVariableName(); @@ -168,6 +154,7 @@ if (ctxt.isPrototypeMode()) { // generate prototype .java file for the tag file + writer = setupContextWriter(javaFileName); Generator.generate(writer, this, pageNodes); writer.close(); writer = null; @@ -207,6 +194,7 @@ ELFunctionMapper.map(this, pageNodes); // generate servlet .java file + writer = setupContextWriter(javaFileName); Generator.generate(writer, this, pageNodes); writer.close(); writer = null; @@ -259,6 +247,26 @@ return smapStr; } + private ServletWriter setupContextWriter(String javaFileName) + throws FileNotFoundException, JasperException { + ServletWriter writer; + // Setup the ServletWriter + String javaEncoding = ctxt.getOptions().getJavaEncoding(); + 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); + return writer; + } + /** * Compile the servlet from .java file to .class file */