This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new aefc8f4  IO-681 IOUtils.close(Closeable) - allow a list
aefc8f4 is described below

commit aefc8f42b027b33eb7b7d3346daef46e21384535
Author: Sebb <s...@apache.org>
AuthorDate: Thu Aug 6 23:01:19 2020 +0100

    IO-681 IOUtils.close(Closeable) - allow a list
---
 src/changes/changes.xml                                  |  3 +++
 src/main/java/org/apache/commons/io/IOUtils.java         | 10 ++++++----
 src/test/java/org/apache/commons/io/IOUtilsTestCase.java |  9 +++++++++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d6e5335..6fcb369 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -116,6 +116,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="update" due-to="Dependabot">
         Update spotbugs from 4.0.6 to 4.1.1 #134.
       </action>
+      <action dev="sebb" type="add">
+        IO-681 IOUtils.close(Closeable) should allow a list of closeables
+      </action>
     </release>
     <!-- The release date is the date RC is cut -->
     <release version="2.7" date="2020-05-24" description="Java 8 required.">
diff --git a/src/main/java/org/apache/commons/io/IOUtils.java 
b/src/main/java/org/apache/commons/io/IOUtils.java
index 55c2cfd..a9b1122 100644
--- a/src/main/java/org/apache/commons/io/IOUtils.java
+++ b/src/main/java/org/apache/commons/io/IOUtils.java
@@ -367,13 +367,15 @@ public class IOUtils {
     /**
      * Closes the given {@link Closeable} as a null-safe operation.
      *
-     * @param closeable The resource to close, may be null.
+     * @param closeables The resource(s) to close, may be null.
      * @throws IOException if an I/O error occurs.
      * @since 2.7
      */
-    public static void close(final Closeable closeable) throws IOException {
-        if (closeable != null) {
-            closeable.close();
+    public static void close(final Closeable... closeables) throws IOException 
{
+            for(Closeable closeable : closeables) {
+                if (closeable != null) {
+                    closeable.close();
+            }
         }
     }
 
diff --git a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java 
b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
index 20aba38..82ae8f4 100644
--- a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
+++ b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
@@ -146,6 +146,15 @@ public class IOUtilsTestCase {
         assertThrows(IOException.class, () -> IOUtils.close(new 
YellOnCloseReader(new StringReader("s"))));
     }
 
+    @Test public void testCloseMulti() {
+        Closeable nulCloseable = null;
+        Closeable [] closeables = {null, null};
+        assertDoesNotThrow(() -> IOUtils.close(nulCloseable,nulCloseable));
+        assertDoesNotThrow(() -> IOUtils.close(closeables));
+        assertDoesNotThrow(() -> IOUtils.close(new 
StringReader("s"),nulCloseable));
+        assertThrows(IOException.class, () -> IOUtils.close(nulCloseable, new 
YellOnCloseReader(new StringReader("s"))));
+    }
+
     @Test public void testCloseConsumer() {
         Closeable nulCloseable = null;
         assertDoesNotThrow(() -> IOUtils.close(nulCloseable, null)); // null 
consumer

Reply via email to