You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by hi...@apache.org on 2017/02/14 19:32:20 UTC
[47/50] [abbrv] geode git commit: GEODE-2430: Refactor ZipUtils
GEODE-2430: Refactor ZipUtils
(cherry picked from commit 50aebcc)
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/f637dc6a
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/f637dc6a
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/f637dc6a
Branch: refs/heads/master
Commit: f637dc6a5145e6e331189efab8dd2e854889c67c
Parents: 889d170
Author: Jared Stewart <js...@pivotal.io>
Authored: Fri Feb 3 12:53:38 2017 -0800
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Tue Feb 7 16:09:34 2017 -0800
----------------------------------------------------------------------
...xportImportClusterConfigurationCommands.java | 2 +-
.../internal/configuration/utils/ZipUtils.java | 62 ++++++++------------
.../configuration/ZipUtilsJUnitTest.java | 2 +-
3 files changed, 27 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/f637dc6a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java
index 5e45f3b..8ce56f0 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java
@@ -89,7 +89,7 @@ public class ExportImportClusterConfigurationCommands extends AbstractCommandsSu
for (Configuration config : sc.getEntireConfiguration().values()) {
sc.writeConfigToFile(config);
}
- ZipUtils.zip(sc.getSharedConfigurationDirPath(), zipFile.getCanonicalPath());
+ ZipUtils.zipDirectory(sc.getSharedConfigurationDirPath(), zipFile.getCanonicalPath());
InfoResultData infoData = ResultBuilder.createInfoResultData();
byte[] byteData = FileUtils.readFileToByteArray(zipFile);
http://git-wip-us.apache.org/repos/asf/geode/blob/f637dc6a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ZipUtils.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ZipUtils.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ZipUtils.java
index 8944194..81161d6 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ZipUtils.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ZipUtils.java
@@ -22,6 +22,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Enumeration;
import java.util.Stack;
import java.util.zip.ZipEntry;
@@ -32,51 +35,36 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
/****
- * Utilities class to zip/unzip folder
+ * Utilities class to zip/unzip directory
*
*/
public class ZipUtils {
- public static void zip(String sourceFolderPath, String targetFilePath) throws Exception {
- File sourceFolder = new File(sourceFolderPath);
- File targetFile = new File(targetFilePath);
-
- if (!sourceFolder.exists()) {
- throw new Exception("Source folder does not exist");
- }
-
- FileOutputStream fos = new FileOutputStream(targetFile);
- ZipOutputStream zos = new ZipOutputStream(fos);
- URI baseURI = sourceFolder.toURI();
-
- Stack<File> fileStack = new Stack<File>();
- fileStack.push(sourceFolder);
-
- while (!fileStack.isEmpty()) {
- File directory = fileStack.pop();
-
- for (File child : directory.listFiles()) {
- String name = baseURI.relativize(child.toURI()).getPath();
-
- if (child.isDirectory()) {
- fileStack.push(child);
- zos.putNextEntry(new ZipEntry(name));
- } else {
- if (!name.endsWith("zip")) {
- ZipEntry zipEntry = new ZipEntry(name);
- zos.putNextEntry(zipEntry);
- InputStream in = new FileInputStream(child);
- IOUtils.copy(in, zos);
- IOUtils.closeQuietly(in);
- }
+ public static void zipDirectory(Path sourceDirectory, Path targetFile) throws IOException {
+ Path p = Files.createFile(targetFile);
+ try (ZipOutputStream zs = new ZipOutputStream(Files.newOutputStream(p))) {
+ Files.walk(sourceDirectory).filter(path -> !Files.isDirectory(path)).forEach(path -> {
+ ZipEntry zipEntry = new ZipEntry(sourceDirectory.relativize(path).toString());
+ try {
+ zs.putNextEntry(zipEntry);
+ zs.write(Files.readAllBytes(path));
+ zs.closeEntry();
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to write zip file", e);
}
- }
+ });
}
- IOUtils.closeQuietly(zos);
}
+ public static void zipDirectory(String sourceDirectoryPath, String targetFilePath)
+ throws IOException {
+ Path sourceDirectory = Paths.get(sourceDirectoryPath);
+ Path targetFile = Paths.get(targetFilePath);
+
+ zipDirectory(sourceDirectory, targetFile);
+ }
- public static void unzip(String zipFilePath, String outputFolderPath) throws IOException {
+ public static void unzip(String zipFilePath, String outputDirectoryPath) throws IOException {
ZipFile zipFile = new ZipFile(zipFilePath);
@SuppressWarnings("unchecked")
Enumeration<ZipEntry> zipEntries = (Enumeration<ZipEntry>) zipFile.entries();
@@ -84,7 +72,7 @@ public class ZipUtils {
try {
while (zipEntries.hasMoreElements()) {
ZipEntry zipEntry = zipEntries.nextElement();
- String fileName = outputFolderPath + File.separator + zipEntry.getName();
+ String fileName = outputDirectoryPath + File.separator + zipEntry.getName();
if (zipEntry.isDirectory()) {
FileUtils.forceMkdir(new File(fileName));
http://git-wip-us.apache.org/repos/asf/geode/blob/f637dc6a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
index 4e34dd5..1791574 100755
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
@@ -75,7 +75,7 @@ public class ZipUtilsJUnitTest {
assertFalse(zipFile.exists());
assertFalse(zipFile.isFile());
- ZipUtils.zip(sourceFolder.getCanonicalPath(), zipFile.getCanonicalPath());
+ ZipUtils.zipDirectory(sourceFolder.getCanonicalPath(), zipFile.getCanonicalPath());
assertTrue(zipFile.exists());
assertTrue(zipFile.isFile());