From 766f1513921d35f7c16b8b962f583dcf508a098a Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Mon, 1 Feb 2010 05:35:08 +0000 Subject: [PATCH] a few more places where FileUtils.close can be used + a few places where a BufferedWriter might be unflushed when the underlying stream gets closed. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@905179 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/taskdefs/Execute.java | 4 +--- src/main/org/apache/tools/ant/taskdefs/email/Message.java | 8 +++++++- src/main/org/apache/tools/ant/taskdefs/optional/Cab.java | 8 ++++++-- .../apache/tools/ant/taskdefs/optional/ReplaceRegExp.java | 4 +++- .../optional/junit/BriefJUnitResultFormatter.java | 6 +++++- .../ant/taskdefs/optional/junit/FailureRecorder.java | 3 ++- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index 09204ee48..74f98ca18 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -1203,9 +1203,7 @@ public class Execute { out.write(cmd[i]); } } finally { - if (out != null) { - out.close(); - } + FileUtils.close(out); } return script; } diff --git a/src/main/org/apache/tools/ant/taskdefs/email/Message.java b/src/main/org/apache/tools/ant/taskdefs/email/Message.java index ee905f42c..0e5449fbe 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/Message.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/Message.java @@ -26,6 +26,7 @@ import java.io.OutputStreamWriter; import java.io.PrintStream; import org.apache.tools.ant.ProjectComponent; +import org.apache.tools.ant.util.FileUtils; /** * Class representing an email message. @@ -115,7 +116,9 @@ public class Message extends ProjectComponent { throws IOException { // We need character encoding aware printing here. // So, using BufferedWriter over OutputStreamWriter instead of PrintStream - BufferedWriter out + BufferedWriter out = null; + try { + out = charset != null ? new BufferedWriter(new OutputStreamWriter(ps, charset)) : new BufferedWriter(new OutputStreamWriter(ps)); if (messageSource != null) { @@ -137,6 +140,9 @@ public class Message extends ProjectComponent { out.newLine(); } out.flush(); + } finally { + FileUtils.close(out); + } } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java index 6f063c181..cc7f2c710 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java @@ -179,14 +179,18 @@ public class Cab extends MatchingTask { throws IOException { File listFile = FILE_UTILS.createTempFile("ant", "", null, true, true); - BufferedWriter writer = new BufferedWriter(new FileWriter(listFile)); + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(listFile)); int size = files.size(); for (int i = 0; i < size; i++) { writer.write('\"' + files.elementAt(i).toString() + '\"'); writer.newLine(); } - writer.close(); + } finally { + FileUtils.close(writer); + } return listFile; } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java index 829a4693c..18247e75a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java @@ -354,6 +354,7 @@ public class ReplaceRegExp extends Task { Reader r = null; Writer w = null; + BufferedWriter bw = null; try { if (encoding == null) { @@ -366,7 +367,7 @@ public class ReplaceRegExp extends Task { } BufferedReader br = new BufferedReader(r); - BufferedWriter bw = new BufferedWriter(w); + bw = new BufferedWriter(w); boolean changes = false; @@ -484,6 +485,7 @@ public class ReplaceRegExp extends Task { } } finally { FileUtils.close(r); + FileUtils.close(bw); FileUtils.close(w); if (temp != null) { temp.delete(); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.java index e7b7a076d..6ed4f1211 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.java @@ -169,10 +169,14 @@ public class BriefJUnitResultFormatter implements JUnitResultFormatter { output.write(sb.toString()); resultWriter.close(); output.write(results.toString()); - output.flush(); } catch (IOException ex) { throw new BuildException(ex); } finally { + try { + output.flush(); + } catch (IOException ex) { + // swallow, there has likely been an exception before this + } if (out != System.out && out != System.err) { FileUtils.close(out); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java index 83994169e..3156b1a17 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java @@ -255,9 +255,10 @@ public class FailureRecorder extends ProjectComponent implements JUnitResultForm createSuiteMethod(); createClassFooter(); - FileUtils.close(writer); } catch (IOException e) { e.printStackTrace(); + } finally { + FileUtils.close(writer); } }