You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/11/19 22:50:20 UTC

[19/35] zest-java git commit: build: safer cleanup in ExecLogged

build: safer cleanup in ExecLogged


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/e7fdfb9f
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/e7fdfb9f
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/e7fdfb9f

Branch: refs/heads/develop
Commit: e7fdfb9fa3ca02782ae8137db5a7f700b2b1d11b
Parents: 81ab487
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Nov 19 14:23:08 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Sat Nov 19 14:23:08 2016 +0100

----------------------------------------------------------------------
 .../apache/zest/gradle/tasks/ExecLogged.groovy  | 27 ++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/e7fdfb9f/buildSrc/src/main/groovy/org/apache/zest/gradle/tasks/ExecLogged.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/zest/gradle/tasks/ExecLogged.groovy b/buildSrc/src/main/groovy/org/apache/zest/gradle/tasks/ExecLogged.groovy
index 3c1a0d5..30075cf 100644
--- a/buildSrc/src/main/groovy/org/apache/zest/gradle/tasks/ExecLogged.groovy
+++ b/buildSrc/src/main/groovy/org/apache/zest/gradle/tasks/ExecLogged.groovy
@@ -57,7 +57,7 @@ class ExecLogged extends AbstractExecTask<ExecLogged>
     }
     finally
     {
-      [ outStream, errStream ].each { it.close() }
+      close outStream, errStream
     }
   }
 
@@ -80,7 +80,30 @@ class ExecLogged extends AbstractExecTask<ExecLogged>
     }
     finally
     {
-      [ outStream, errStream ].each { it.close() }
+      close outStream, errStream
+    }
+  }
+
+  private static void close( Closeable... closeables )
+    throws IOException
+  {
+    def errors = [ ] as List<IOException>
+    for( Closeable closeable : closeables )
+    {
+      try
+      {
+        closeable.close()
+      }
+      catch( IOException ex )
+      {
+        errors.add( ex )
+      }
+    }
+    if( !errors.empty )
+    {
+      def ex = new IOException( 'Failed to close some' )
+      errors.each { ex.addSuppressed it }
+      throw ex
     }
   }