diff --git a/build.xml b/build.xml
index 03f0f5e64..ec72b9a0e 100644
--- a/build.xml
+++ b/build.xml
@@ -188,8 +188,6 @@
unless="xalan2.present" />
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
index 1a858101d..cfae10a8d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
@@ -226,15 +226,26 @@ public class XMLResultAggregator extends Task implements XMLConstants {
* @throws IOException thrown if there is an error while writing the content.
*/
protected void writeDOMTree(Document doc, File file) throws IOException {
- OutputStream out = new FileOutputStream( file );
- PrintWriter wri = new PrintWriter(new OutputStreamWriter(out, "UTF8"));
- wri.write("\n");
- (new DOMElementWriter()).write(doc.getDocumentElement(), wri, 0, " ");
- wri.flush();
- wri.close();
- // writers do not throw exceptions, so check for them.
- if (wri.checkError()){
- throw new IOException("Error while writing DOM content");
+ OutputStream out = null;
+ PrintWriter wri = null;
+ try {
+ out = new FileOutputStream( file );
+ wri = new PrintWriter(new OutputStreamWriter(out, "UTF8"));
+ wri.write("\n");
+ (new DOMElementWriter()).write(doc.getDocumentElement(), wri, 0, " ");
+ wri.flush();
+ // writers do not throw exceptions, so check for them.
+ if (wri.checkError()){
+ throw new IOException("Error while writing DOM content");
+ }
+ } finally {
+ if (wri != null) {
+ wri.close();
+ out = null;
+ }
+ if (out != null) {
+ out.close();
+ }
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan1Executor.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan1Executor.java
index 1263db808..92f71e840 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan1Executor.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan1Executor.java
@@ -76,7 +76,11 @@ public class Xalan1Executor extends XalanExecutor {
String system_id = caller.getStylesheetSystemId();
XSLTInputSource xsl_src = new XSLTInputSource(system_id);
OutputStream os = getOutputStream();
- XSLTResultTarget target = new XSLTResultTarget(os);
- processor.process( xml_src, xsl_src, target);
+ try {
+ XSLTResultTarget target = new XSLTResultTarget(os);
+ processor.process( xml_src, xsl_src, target);
+ } finally {
+ os.close();
+ }
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan2Executor.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan2Executor.java
index 537378bf5..9ab2c587c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan2Executor.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan2Executor.java
@@ -77,8 +77,12 @@ public class Xalan2Executor extends XalanExecutor {
Transformer tformer = tfactory.newTransformer(xsl_src);
Source xml_src = new DOMSource(caller.document);
OutputStream os = getOutputStream();
- tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
- Result result = new StreamResult(os);
- tformer.transform(xml_src, result);
+ try {
+ tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
+ Result result = new StreamResult(os);
+ tformer.transform(xml_src, result);
+ } finally {
+ os.close();
+ }
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XalanExecutor.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XalanExecutor.java
index affd88010..d793fcfd7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XalanExecutor.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XalanExecutor.java
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -105,7 +105,8 @@ abstract class XalanExecutor {
XalanExecutor executor = null;
try {
procVersion = Class.forName("org.apache.xalan.processor.XSLProcessorVersion");
- executor = new Xalan2Executor();
+ executor = (XalanExecutor) Class.forName(
+ "org.apache.tools.ant.taskdefs.optional.junit.Xalan2Executor").newInstance();
} catch (Exception xalan2missing){
try {
procVersion = Class.forName("org.apache.xalan.xslt.XSLProcessorVersion");