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");