You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/10/07 10:22:45 UTC

kylin git commit: KYLIN-2051 Fix potentially ineffective call in ZipFileUtils class

Repository: kylin
Updated Branches:
  refs/heads/master 483e63654 -> 4fae26781


KYLIN-2051 Fix potentially ineffective call in ZipFileUtils class


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

Branch: refs/heads/master
Commit: 4fae26781af999c7274c176d4bf6e87e28bb9bfe
Parents: 483e636
Author: lidongsjtu <li...@apache.org>
Authored: Fri Oct 7 18:22:39 2016 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Fri Oct 7 18:22:39 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/common/util/ZipFileUtils.java  | 57 ++++++++++++--------
 1 file changed, 34 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/4fae2678/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java b/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
index 401c556..7ee770d 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
@@ -39,32 +39,41 @@ public class ZipFileUtils {
         if (!validateZipFilename(zipFilename)) {
             throw new RuntimeException("Zipfile must end with .zip");
         }
-        ZipOutputStream zipFile = new ZipOutputStream(new FileOutputStream(zipFilename));
-        compressDirectoryToZipfile(normDir(new File(sourceDir).getParent()), normDir(sourceDir), zipFile);
-        IOUtils.closeQuietly(zipFile);
+        ZipOutputStream zipFile = null;
+        try {
+            zipFile = new ZipOutputStream(new FileOutputStream(zipFilename));
+            compressDirectoryToZipfile(normDir(new File(sourceDir).getParent()), normDir(sourceDir), zipFile);
+        } finally {
+            IOUtils.closeQuietly(zipFile);
+        }
     }
 
     public static void decompressZipfileToDirectory(String zipFileName, File outputFolder) throws IOException {
+        ZipInputStream zipInputStream = null;
+        try {
+            zipInputStream = new ZipInputStream(new FileInputStream(zipFileName));
+            ZipEntry zipEntry = null;
+            while ((zipEntry = zipInputStream.getNextEntry()) != null) {
+                logger.info("decompressing " + zipEntry.getName() + " is directory:" + zipEntry.isDirectory() + " available: " + zipInputStream.available());
 
-        ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipFileName));
-        ZipEntry zipEntry = null;
-        while ((zipEntry = zipInputStream.getNextEntry()) != null) {
-            logger.info("decompressing " + zipEntry.getName() + " is directory:" + zipEntry.isDirectory() + " available: " + zipInputStream.available());
-
-            File temp = new File(outputFolder, zipEntry.getName());
-            if (zipEntry.isDirectory()) {
-                temp.mkdirs();
-            } else {
-                temp.getParentFile().mkdirs();
-                temp.createNewFile();
-                temp.setLastModified(zipEntry.getTime());
-                FileOutputStream outputStream = new FileOutputStream(temp);
-                IOUtils.copy(zipInputStream, outputStream);
-                IOUtils.closeQuietly(outputStream);
+                File temp = new File(outputFolder, zipEntry.getName());
+                if (zipEntry.isDirectory()) {
+                    temp.mkdirs();
+                } else {
+                    temp.getParentFile().mkdirs();
+                    temp.createNewFile();
+                    temp.setLastModified(zipEntry.getTime());
+                    FileOutputStream outputStream = new FileOutputStream(temp);
+                    try {
+                        IOUtils.copy(zipInputStream, outputStream);
+                    } finally {
+                        IOUtils.closeQuietly(outputStream);
+                    }
+                }
             }
+        } finally {
+            IOUtils.closeQuietly(zipInputStream);
         }
-        IOUtils.closeQuietly(zipInputStream);
-
     }
 
     private static void compressDirectoryToZipfile(String rootDir, String sourceDir, ZipOutputStream out) throws IOException {
@@ -75,10 +84,12 @@ public class ZipFileUtils {
                 ZipEntry entry = new ZipEntry(normDir(StringUtils.isEmpty(rootDir) ? sourceDir : sourceDir.replace(rootDir, "")) + sourceFile.getName());
                 entry.setTime(sourceFile.lastModified());
                 out.putNextEntry(entry);
-
                 FileInputStream in = new FileInputStream(sourceDir + sourceFile.getName());
-                IOUtils.copy(in, out);
-                IOUtils.closeQuietly(in);
+                try {
+                    IOUtils.copy(in, out);
+                } finally {
+                    IOUtils.closeQuietly(in);
+                }
             }
         }
     }