You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2016/03/28 12:38:58 UTC

[1/2] ant git commit: embrace AutoCloseable

Repository: ant
Updated Branches:
  refs/heads/master 53c776e45 -> 1591c1f83


embrace AutoCloseable


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/4af291c5
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/4af291c5
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/4af291c5

Branch: refs/heads/master
Commit: 4af291c5805c26fcfbecd527862bb27727bcc0d6
Parents: 53c776e
Author: Stefan Bodewig <bo...@apache.org>
Authored: Mon Mar 28 12:36:29 2016 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Mon Mar 28 12:36:29 2016 +0200

----------------------------------------------------------------------
 .../org/apache/tools/ant/AntClassLoader.java    | 13 +----
 src/main/org/apache/tools/ant/taskdefs/Jar.java | 24 +-------
 .../org/apache/tools/ant/taskdefs/Javac.java    |  5 +-
 .../org/apache/tools/ant/taskdefs/Pack.java     |  5 +-
 .../org/apache/tools/ant/taskdefs/Property.java |  7 +--
 .../org/apache/tools/ant/taskdefs/Replace.java  | 15 ++---
 .../org/apache/tools/ant/taskdefs/SQLExec.java  | 15 +----
 src/main/org/apache/tools/ant/taskdefs/Zip.java |  5 +-
 .../tools/ant/taskdefs/email/Message.java       |  8 +--
 .../tools/ant/taskdefs/email/PlainMailer.java   |  7 +--
 .../tools/ant/taskdefs/email/UUMailer.java      |  9 +--
 .../ant/taskdefs/optional/PropertyFile.java     | 19 ++-----
 .../ant/taskdefs/optional/ReplaceRegExp.java    | 21 +++----
 .../ant/taskdefs/optional/TraXLiaison.java      | 10 +---
 .../taskdefs/optional/depend/AntAnalyzer.java   |  4 +-
 .../optional/ejb/WeblogicDeploymentTool.java    | 25 +--------
 .../optional/ejb/WebsphereDeploymentTool.java   | 24 +-------
 .../optional/junit/AggregateTransformer.java    |  5 +-
 .../optional/junit/XMLResultAggregator.java     |  7 +--
 .../ant/taskdefs/optional/ssh/SSHExec.java      |  8 +--
 .../org/apache/tools/ant/util/FileUtils.java    | 58 ++++++++------------
 src/main/org/apache/tools/zip/ZipFile.java      |  2 +-
 22 files changed, 70 insertions(+), 226 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/AntClassLoader.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java
index 607ada7..61cacce 100644
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ b/src/main/org/apache/tools/ant/AntClassLoader.java
@@ -490,19 +490,13 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener {
                 + pathComponent.lastModified() + "-" + pathComponent.length();
         String classpath = pathMap.get(absPathPlusTimeAndLength);
         if (classpath == null) {
-            JarFile jarFile = null;
-            try {
-                jarFile = new JarFile(pathComponent);
+            try (JarFile jarFile = new JarFile(pathComponent)) {
                 final Manifest manifest = jarFile.getManifest();
                 if (manifest == null) {
                     return;
                 }
                 classpath = manifest.getMainAttributes()
                     .getValue(Attributes.Name.CLASS_PATH);
-            } finally {
-                if (jarFile != null) {
-                    jarFile.close();
-                }
             }
             if (classpath == null) {
                 classpath = "";
@@ -1602,8 +1596,7 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener {
     }
 
     private static boolean readFully(final File f, final byte[] b) throws IOException {
-        final FileInputStream fis = new FileInputStream(f);
-        try {
+        try (FileInputStream fis = new FileInputStream(f)) {
             final int len = b.length;
             int count = 0, x = 0;
             while (count != len) {
@@ -1614,8 +1607,6 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener {
                 count += x;
             }
             return count == len;
-        } finally {
-            fis.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Jar.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java
index 28738b1..bb701a3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Jar.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Jar.java
@@ -349,13 +349,7 @@ public class Jar extends Zip {
             }
             return null;
         } finally {
-            if (zf != null) {
-                try {
-                    zf.close();
-                } catch (IOException e) {
-                    // TODO - log an error?  throw an exception?
-                }
-            }
+            FileUtils.close(zf);
         }
     }
 
@@ -388,13 +382,7 @@ public class Jar extends Zip {
             }
             return false;
         } finally {
-            if (zf != null) {
-                try {
-                    zf.close();
-                } catch (IOException e) {
-                    // TODO - log an error?  throw an exception?
-                }
-            }
+            FileUtils.close(zf);
         }
     }
 
@@ -1144,9 +1132,7 @@ public class Jar extends Zip {
     protected static void grabFilesAndDirs(String file, List<String> dirs,
                                                  List<String> files)
         throws IOException {
-        org.apache.tools.zip.ZipFile zf = null;
-        try {
-            zf = new org.apache.tools.zip.ZipFile(file, "utf-8");
+        try (org.apache.tools.zip.ZipFile zf = new org.apache.tools.zip.ZipFile(file, "utf-8")) {
             Enumeration<org.apache.tools.zip.ZipEntry> entries = zf.getEntries();
             HashSet<String> dirSet = new HashSet<String>();
             while (entries.hasMoreElements()) {
@@ -1166,10 +1152,6 @@ public class Jar extends Zip {
                 }
             }
             dirs.addAll(dirSet);
-        } finally {
-            if (zf != null) {
-                zf.close();
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Javac.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java
index 9bb3e74..1104fae 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Javac.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Javac.java
@@ -1420,8 +1420,7 @@ public class Javac extends MatchingTask {
                 continue;
             }
             log("Creating empty " + pkgInfoClass);
-            final OutputStream os = new FileOutputStream(pkgInfoClass);
-            try {
+            try (OutputStream os = new FileOutputStream(pkgInfoClass)) {
                 os.write(PACKAGE_INFO_CLASS_HEADER);
                 final byte[] name = pkg.getBytes("UTF-8");
                 final int length = name.length + /* "/package-info" */ 13;
@@ -1429,8 +1428,6 @@ public class Javac extends MatchingTask {
                 os.write((byte) length % 256);
                 os.write(name);
                 os.write(PACKAGE_INFO_CLASS_FOOTER);
-            } finally {
-                os.close();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Pack.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Pack.java b/src/main/org/apache/tools/ant/taskdefs/Pack.java
index daabd6b..59a998f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Pack.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Pack.java
@@ -177,11 +177,8 @@ public abstract class Pack extends Task {
      */
     protected void zipResource(Resource resource, OutputStream zOut)
         throws IOException {
-        InputStream rIn = resource.getInputStream();
-        try {
+        try (InputStream rIn = resource.getInputStream()) {
             zipFile(rIn, zOut);
-        } finally {
-            rIn.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Property.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Property.java b/src/main/org/apache/tools/ant/taskdefs/Property.java
index 4aee3d0..5b4f5f6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Property.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Property.java
@@ -533,13 +533,8 @@ public class Property extends Task {
         Properties props = new Properties();
         log("Loading " + url, Project.MSG_VERBOSE);
         try {
-            InputStream is = url.openStream();
-            try {
+            try (InputStream is = url.openStream()) {
                 loadProperties(props, is, url.getFile().endsWith(".xml"));
-            } finally {
-                if (is != null) {
-                    is.close();
-                }
             }
             addProperties(props);
         } catch (IOException ex) {

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Replace.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
index 4b68198..353d30c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@ -354,7 +354,7 @@ public class Replace extends MatchingTask {
      * a StringBuffer. Compatible with the Replacefilter.
      * @since 1.7
      */
-    private class FileInput /* JDK 5: implements Closeable */ {
+    private class FileInput implements AutoCloseable {
         private StringBuffer outputBuffer;
         private final InputStream is;
         private Reader reader;
@@ -418,7 +418,7 @@ public class Replace extends MatchingTask {
      * Replacefilter.
      * @since 1.7
      */
-    private class FileOutput /* JDK 5: implements Closeable */ {
+    private class FileOutput implements AutoCloseable {
         private StringBuffer inputBuffer;
         private final OutputStream os;
         private Writer writer;
@@ -667,10 +667,8 @@ public class Replace extends MatchingTask {
             File temp = FILE_UTILS.createTempFile("rep", ".tmp",
                     src.getParentFile(), false, true);
             try {
-                FileInput in = new FileInput(src);
-                try {
-                    FileOutput out = new FileOutput(temp);
-                    try {
+                try (FileInput in = new FileInput(src);
+                     FileOutput out = new FileOutput(temp)) {
                         out.setInputBuffer(buildFilterChain(in.getOutputBuffer()));
 
                         while (in.readChunk()) {
@@ -682,11 +680,6 @@ public class Replace extends MatchingTask {
                         flushFilterChain();
 
                         out.flush();
-                    } finally {
-                        out.close();
-                    }
-                } finally {
-                    in.close();
                 }
                 boolean changes = (replaceCount != repCountStart);
                 if (changes) {

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
index 6d1e514..6debd6d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
+++ b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
@@ -834,13 +834,7 @@ public class SQLExec extends JDBCTask {
                 throw e;
             }
         } finally {
-            if (resultSet != null) {
-                try {
-                    resultSet.close();
-                } catch (SQLException e) {
-                    //ignore
-                }
-            }
+            FileUtils.close(resultSet);
         }
     }
 
@@ -854,13 +848,8 @@ public class SQLExec extends JDBCTask {
      */
     @Deprecated
     protected void printResults(PrintStream out) throws SQLException {
-        ResultSet rs = getStatement().getResultSet();
-        try {
+        try (ResultSet rs = getStatement().getResultSet()) {
             printResults(rs, out);
-        } finally {
-            if (rs != null) {
-                rs.close();
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/Zip.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java
index ddc9bd4..c4b6dff 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java
@@ -1911,14 +1911,11 @@ public class Zip extends MatchingTask {
                                      getLocation());
         }
 
-        final FileInputStream fIn = new FileInputStream(file);
-        try {
+        try (FileInputStream fIn = new FileInputStream(file)) {
             // ZIPs store time with a granularity of 2 seconds, round up
             zipFile(fIn, zOut, vPath,
                     file.lastModified() + (roundUp ? ROUNDUP_MILLIS : 0),
                     null, mode);
-        } finally {
-            fIn.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/email/Message.java
----------------------------------------------------------------------
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 c121f5d..a73fdfa 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/Message.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/Message.java
@@ -126,17 +126,13 @@ public class Message extends ProjectComponent {
                 : new BufferedWriter(new OutputStreamWriter(ps));
             if (messageSource != null) {
                 // Read message from a file
-                Reader freader = getReader(messageSource);
-
-                try {
-                    BufferedReader in = new BufferedReader(freader);
+                try (Reader freader = getReader(messageSource);
+                     BufferedReader in = new BufferedReader(freader)) {
                     String line = null;
                     while ((line = in.readLine()) != null) {
                         out.write(getProject().replaceProperties(line));
                         out.newLine();
                     }
-                } finally {
-                    freader.close();
                 }
             } else {
                 out.write(getProject().replaceProperties(buffer.substring(0)));

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
index 20524ac..3b1f95b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
@@ -147,16 +147,13 @@ class PlainMailer extends Mailer {
         int length;
         final int maxBuf = 1024;
         byte[] buf = new byte[maxBuf];
-        FileInputStream finstr = new FileInputStream(file);
 
-        try {
-            BufferedInputStream in = new BufferedInputStream(finstr, buf.length);
+        try (FileInputStream finstr = new FileInputStream(file);
+             BufferedInputStream in = new BufferedInputStream(finstr, buf.length)) {
 
             while ((length = in.read(buf)) != -1) {
                 out.write(buf, 0, length);
             }
-        } finally {
-            finstr.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
index d6542be..03af678 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
@@ -40,16 +40,11 @@ class UUMailer extends PlainMailer {
                  + "readable.");
         }
 
-        FileInputStream finstr = new FileInputStream(file);
-
-        try {
-            BufferedInputStream in = new BufferedInputStream(finstr);
+        try (FileInputStream finstr = new FileInputStream(file);
+             BufferedInputStream in = new BufferedInputStream(finstr)) {
             UUEncoder encoder = new UUEncoder(file.getName());
 
             encoder.encode(in, out);
-
-        } finally {
-            finstr.close();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
index 162cab1..1c9f665 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
@@ -192,27 +192,16 @@ public class PropertyFile extends Task {
             if (propertyfile.exists()) {
                 log("Updating property file: "
                     + propertyfile.getAbsolutePath());
-                FileInputStream fis = null;
-                try {
-                    fis = new FileInputStream(propertyfile);
-                    BufferedInputStream bis = new BufferedInputStream(fis);
+                try (FileInputStream fis = new FileInputStream(propertyfile);
+                     BufferedInputStream bis = new BufferedInputStream(fis)) {
                     properties.load(bis);
-                } finally {
-                    if (fis != null) {
-                        fis.close();
-                    }
                 }
             } else {
                 log("Creating new property file: "
                     + propertyfile.getAbsolutePath());
-                FileOutputStream out = null;
-                try {
-                    out = new FileOutputStream(propertyfile.getAbsolutePath());
+                try (FileOutputStream out =
+                     new FileOutputStream(propertyfile.getAbsolutePath())) {
                     out.flush();
-                } finally {
-                    if (out != null) {
-                        out.close();
-                    }
                 }
             }
         } catch (IOException ioe) {

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
----------------------------------------------------------------------
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 d088096..40b7b5d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
@@ -356,13 +356,13 @@ public class ReplaceRegExp extends Task {
         try {
             boolean changes = false;
 
-            InputStream is = new FileInputStream(f);
-            try {
-                Reader r = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
-                OutputStream os = new FileOutputStream(temp);
+            try (InputStream is = new FileInputStream(f);
+                 OutputStream os = new FileOutputStream(temp)) {
+                Reader r = null;
+                Writer w = null;
                 try {
-                    Writer w = encoding != null ? new OutputStreamWriter(os, encoding) : new OutputStreamWriter(os);
-
+                    r = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
+                    w = encoding != null ? new OutputStreamWriter(os, encoding) : new OutputStreamWriter(os);
                     log("Replacing pattern '" + regex.getPattern(getProject())
                         + "' with '" + subs.getExpression(getProject())
                         + "' in '" + f.getPath() + "'" + (byline ? " by line" : "")
@@ -426,15 +426,10 @@ public class ReplaceRegExp extends Task {
                     } else {
                         changes = multilineReplace(r, w, options);
                     }
-
-                    r.close();
-                    w.close();
-
                 } finally {
-                    os.close();
+                    FileUtils.close(r);
+                    FileUtils.close(w);
                 }
-            } finally {
-                is.close();
             }
             if (changes) {
                 log("File has changed; saving the updated file", Project.MSG_VERBOSE);

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
index 8d9a44a..a497bf7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
@@ -293,17 +293,11 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware
         // and avoid keeping the handle until the object is garbaged.
         // (always keep control), otherwise you won't be able to delete
         // the file quickly on windows.
-        InputStream xslStream = null;
-        try {
-            xslStream
-                = new BufferedInputStream(stylesheet.getInputStream());
+        try (InputStream xslStream =
+             new BufferedInputStream(stylesheet.getInputStream())) {
             templatesModTime = stylesheet.getLastModified();
             final Source src = getSource(xslStream, stylesheet);
             templates = getFactory().newTemplates(src);
-        } finally {
-            if (xslStream != null) {
-                xslStream.close();
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
index 341f670..d490955 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
@@ -96,9 +96,7 @@ public class AntAnalyzer extends AbstractAnalyzer {
                         }
                     } finally {
                         FileUtils.close(inStream);
-                        if (zipFile != null) {
-                            zipFile.close();
-                        }
+                        FileUtils.close(zipFile);
                     }
                 } catch (IOException ioe) {
                     // ignore

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
index 550f59c..6495e97 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
@@ -866,31 +866,12 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool {
 
             throw new BuildException(msg, ioe);
         } finally {
-            // need to close files and perhaps rename output
-            if (genericJar != null) {
-                try {
-                    genericJar.close();
-                } catch (IOException closeException) {
-                    // empty
-                }
-            }
-
-            if (wlJar != null) {
-                try {
-                    wlJar.close();
-                } catch (IOException closeException) {
-                    // empty
-                }
-            }
+            FileUtils.close(genericJar);
+            FileUtils.close(wlJar);
+            FileUtils.close(newJarStream);
 
             if (newJarStream != null) {
                 try {
-                    newJarStream.close();
-                } catch (IOException closeException) {
-                    // empty
-                }
-
-                try {
                     FILE_UTILS.rename(newWLJarFile, weblogicJarFile);
                 } catch (IOException renameException) {
                     log(renameException.getMessage(), Project.MSG_WARN);

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
index d15f9f5..da84f24 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
@@ -832,30 +832,12 @@ public class WebsphereDeploymentTool extends GenericDeploymentTool {
             throw new BuildException(msg, ioe);
         } finally {
             // need to close files and perhaps rename output
-            if (genericJar != null) {
-                try {
-                    genericJar.close();
-                } catch (IOException closeException) {
-                    // Ignore
-                }
-            }
-
-            if (wasJar != null) {
-                try {
-                    wasJar.close();
-                } catch (IOException closeException) {
-                    // Ignore
-                }
-            }
+            FileUtils.close(genericJar);
+            FileUtils.close(wasJar);
+            FileUtils.close(newJarStream);
 
             if (newJarStream != null) {
                 try {
-                    newJarStream.close();
-                } catch (IOException closeException) {
-                    // Ignore
-                }
-
-                try {
                     FILE_UTILS.rename(newwasJarFile, websphereJarFile);
                 } catch (IOException renameException) {
                     log(renameException.getMessage(), Project.MSG_WARN);

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
index ec3506d..800c213 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
@@ -168,12 +168,9 @@ public class AggregateTransformer {
     protected void setXmlfile(File xmlfile) throws BuildException {
         try {
             DocumentBuilder builder = privateDBFactory.newDocumentBuilder();
-            InputStream in = new FileInputStream(xmlfile);
-            try {
+            try (InputStream in = new FileInputStream(xmlfile)) {
                 Document doc = builder.parse(in);
                 setXmlDocument(doc);
-            } finally {
-                in.close();
             }
         } catch (Exception e) {
             throw new BuildException("Error while parsing document: " + xmlfile, e);

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
----------------------------------------------------------------------
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 4f76c96..97e2647 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
@@ -213,9 +213,8 @@ 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 os = new FileOutputStream(file);
-        try {
-            PrintWriter wri = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(os), "UTF8"));
+        try (OutputStream os = new FileOutputStream(file);
+             PrintWriter wri = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(os), "UTF8"))) {
             wri.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
             (new DOMElementWriter()).write(doc.getDocumentElement(), wri, 0, "  ");
             wri.flush();
@@ -223,8 +222,6 @@ public class XMLResultAggregator extends Task implements XMLConstants {
             if (wri.checkError()) {
                 throw new IOException("Error while writing DOM content");
             }
-        } finally {
-            os.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
index a04dfef..7d49709 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
@@ -495,9 +495,7 @@ public class SSHExec extends SSHBase {
      */
     private void writeToFile(final String from, final boolean append, final File to)
         throws IOException {
-        FileWriter out = null;
-        try {
-            out = new FileWriter(to.getAbsolutePath(), append);
+        try (FileWriter out = new FileWriter(to.getAbsolutePath(), append)) {
             final StringReader in = new StringReader(from);
             final char[] buffer = new char[BUFFER_SIZE];
             int bytesRead;
@@ -509,10 +507,6 @@ public class SSHExec extends SSHBase {
                 out.write(buffer, 0, bytesRead);
             }
             out.flush();
-        } finally {
-            if (out != null) {
-                out.close();
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/ant/util/FileUtils.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java
index bcef5ec..891dafe 100644
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ b/src/main/org/apache/tools/ant/util/FileUtils.java
@@ -1445,13 +1445,7 @@ public class FileUtils {
      * @param device output writer, can be null.
      */
     public static void close(Writer device) {
-        if (null != device) {
-            try {
-                device.close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
+        close((AutoCloseable) device);
     }
 
     /**
@@ -1461,13 +1455,7 @@ public class FileUtils {
      * @param device Reader, can be null.
      */
     public static void close(Reader device) {
-        if (null != device) {
-            try {
-                device.close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
+        close((AutoCloseable) device);
     }
 
     /**
@@ -1477,13 +1465,7 @@ public class FileUtils {
      * @param device stream, can be null.
      */
     public static void close(OutputStream device) {
-        if (null != device) {
-            try {
-                device.close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
+        close((AutoCloseable) device);
     }
 
     /**
@@ -1493,13 +1475,7 @@ public class FileUtils {
      * @param device stream, can be null.
      */
     public static void close(InputStream device) {
-        if (null != device) {
-            try {
-                device.close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
+        close((AutoCloseable) device);
     }
 
     /**
@@ -1510,13 +1486,7 @@ public class FileUtils {
      * @since Ant 1.8.0
      */
     public static void close(Channel device) {
-        if (null != device) {
-            try {
-                device.close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
+        close((AutoCloseable) device);
     }
 
     /**
@@ -1544,6 +1514,24 @@ public class FileUtils {
     }
 
     /**
+     * Close an {@link AutoCloseable} without throwing any exception
+     * if something went wrong.  Do not attempt to close it if the
+     * argument is null.
+     *
+     * @param ac AutoCloseable, can be null.
+     * @since Ant 1.10.0
+     */
+    public static void close(AutoCloseable ac) {
+        if (null != ac) {
+            try {
+                ac.close();
+            } catch (Exception e) {
+                //ignore
+            }
+        }
+    }
+
+    /**
      * Delete the file with {@link File#delete()} if the argument is not null.
      * Do nothing on a null argument.
      * @param file file to delete.

http://git-wip-us.apache.org/repos/asf/ant/blob/4af291c5/src/main/org/apache/tools/zip/ZipFile.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/zip/ZipFile.java b/src/main/org/apache/tools/zip/ZipFile.java
index 7a2c992..20d8c43 100644
--- a/src/main/org/apache/tools/zip/ZipFile.java
+++ b/src/main/org/apache/tools/zip/ZipFile.java
@@ -72,7 +72,7 @@ import java.util.zip.ZipException;
  * </ul>
  *
  */
-public class ZipFile {
+public class ZipFile implements AutoCloseable {
     private static final int HASH_SIZE = 509;
     static final int NIBLET_MASK = 0x0f;
     static final int BYTE_SHIFT = 8;


Re: [1/2] ant git commit: embrace AutoCloseable

Posted by Stefan Bodewig <bo...@apache.org>.
On 2016-03-28, <bo...@apache.org> wrote:

> embrace AutoCloseable

There've been only a few places where try-with-resources could be used
because of our extensive use of FileUtils.close which swallows
exceptions thrown during close. The bigger impact likely has
FileUtils.close(AutoCloseable) and making ZipFile implement
AutoCloseable.

While grepping through our finally blocks I saw a few places where
FileUtils.close was re-invented or where tryHardToDelete should be used
- I'll fix those on the 1.9.x branch and merge it back to master
sometime later.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


[2/2] ant git commit: whitespace

Posted by bo...@apache.org.
whitespace


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/1591c1f8
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/1591c1f8
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/1591c1f8

Branch: refs/heads/master
Commit: 1591c1f83c0bba21fab31dd63b5637c738b53afd
Parents: 4af291c
Author: Stefan Bodewig <bo...@apache.org>
Authored: Mon Mar 28 12:38:19 2016 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Mon Mar 28 12:38:19 2016 +0200

----------------------------------------------------------------------
 src/main/org/apache/tools/ant/taskdefs/Replace.java | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/1591c1f8/src/main/org/apache/tools/ant/taskdefs/Replace.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
index 353d30c..1b6cb37 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@ -669,17 +669,17 @@ public class Replace extends MatchingTask {
             try {
                 try (FileInput in = new FileInput(src);
                      FileOutput out = new FileOutput(temp)) {
-                        out.setInputBuffer(buildFilterChain(in.getOutputBuffer()));
+                    out.setInputBuffer(buildFilterChain(in.getOutputBuffer()));
 
-                        while (in.readChunk()) {
-                            if (processFilterChain()) {
-                                out.process();
-                            }
+                    while (in.readChunk()) {
+                        if (processFilterChain()) {
+                            out.process();
                         }
+                    }
 
-                        flushFilterChain();
+                    flushFilterChain();
 
-                        out.flush();
+                    out.flush();
                 }
                 boolean changes = (replaceCount != repCountStart);
                 if (changes) {