@@ -188,21 +188,19 @@ public Class<?> compile(String script) throws ScriptException {
188188 File file = path == null ? null : new File (path );
189189
190190 final Writer writer = getContext ().getErrorWriter ();
191+ final Builder builder = new Builder ();
191192 try {
192-
193- final Builder builder ;
194-
195193 if (file != null && file .exists ()) {
196194 // if the filename set in engine scope bindings is valid,
197195 // ignore the given script and use that file instead.
198- builder = new Builder (file , writer );
196+ builder . initialize (file , writer );
199197 }
200198 else {
201199 // script may be null, but then we cannot create a StringReader for it,
202200 // therefore null is passed if script is null.
203201 final Reader reader =
204202 (script == null ) ? null : new StringReader (script );
205- builder = new Builder (reader , writer );
203+ builder . initialize (reader , writer );
206204 }
207205 final MavenProject project = builder .project ;
208206 String mainClass = builder .mainClass ;
@@ -292,10 +290,11 @@ public void compile(final File file) {
292290 * @see #compile(String)
293291 */
294292 public void compile (final File file , final Writer errorWriter ) {
293+ final Writer writer =
294+ (errorWriter == null ) ? getContext ().getErrorWriter () : errorWriter ;
295+ final Builder builder = new Builder ();
295296 try {
296- final Writer writer =
297- (errorWriter == null ) ? getContext ().getErrorWriter () : errorWriter ;
298- final Builder builder = new Builder (file , writer );
297+ builder .initialize (file , writer );
299298 try {
300299 builder .project .build ();
301300 }
@@ -319,8 +318,9 @@ public void compile(final File file, final Writer errorWriter) {
319318 public void makeJar (final File file , final boolean includeSources ,
320319 final File output , final Writer errorWriter )
321320 {
321+ final Builder builder = new Builder ();
322322 try {
323- final Builder builder = new Builder (file , errorWriter );
323+ builder . initialize (file , errorWriter );
324324 try {
325325 builder .project .build (true , true , includeSources );
326326 final File target = builder .project .getTarget ();
@@ -368,14 +368,17 @@ private void printOrThrow(Throwable t, Writer errorWriter) {
368368 */
369369 private class Builder {
370370
371- private final PrintStream err ;
372- private final File temporaryDirectory ;
371+ private PrintStream err ;
372+ private File temporaryDirectory ;
373373 private String mainClass ;
374374 private MavenProject project ;
375375
376376 /**
377377 * Constructs a wrapper around a possibly project for a source or maven
378378 * project file.
379+ * <p>
380+ * This method is intended to be called only once.
381+ * </p>
379382 *
380383 * @param file the {@code .java} file to build (or null, if {@code reader}
381384 * is set).
@@ -388,7 +391,7 @@ private class Builder {
388391 * @throws TransformerException
389392 * @throws TransformerFactoryConfigurationError
390393 */
391- private Builder (final File file , final Writer errorWriter )
394+ private void initialize (final File file , final Writer errorWriter )
392395 throws ScriptException , IOException , ParserConfigurationException ,
393396 SAXException , TransformerConfigurationException , TransformerException ,
394397 TransformerFactoryConfigurationError
@@ -411,6 +414,9 @@ private Builder(final File file, final Writer errorWriter)
411414 /**
412415 * Constructs a wrapper around a possibly temporary project for source code
413416 * generated by a Reader.
417+ * <p>
418+ * This method is intended to be called only once.
419+ * </p>
414420 *
415421 * @param reader provides the Java source if {@code file} is {@code null}
416422 * @param errorWriter where to write the error output.
@@ -422,7 +428,7 @@ private Builder(final File file, final Writer errorWriter)
422428 * @throws TransformerException
423429 * @throws TransformerFactoryConfigurationError
424430 */
425- private Builder (final Reader reader , final Writer errorWriter )
431+ private void initialize (final Reader reader , final Writer errorWriter )
426432 throws ScriptException , IOException , ParserConfigurationException ,
427433 SAXException , TransformerConfigurationException , TransformerException ,
428434 TransformerFactoryConfigurationError
0 commit comments