From 700fe05e3433999ac5081e05ee0b008c6a3dab5b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 15 Mar 2016 12:03:30 +0000 Subject: [PATCH] Push all the zip opening logic into ZipHelper git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1735064 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/openxml4j/opc/ZipPackage.java | 7 ++--- .../poi/openxml4j/opc/internal/ZipHelper.java | 29 ++++++++++++++----- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java index ce6d26af8..549d2e576 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java @@ -24,7 +24,6 @@ import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -42,7 +41,6 @@ import org.apache.poi.openxml4j.opc.internal.marshallers.ZipPartMarshaller; import org.apache.poi.openxml4j.util.ZipEntrySource; import org.apache.poi.openxml4j.util.ZipFileZipEntrySource; import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource; -import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -89,9 +87,8 @@ public final class ZipPackage extends Package { */ ZipPackage(InputStream in, PackageAccess access) throws IOException { super(access); - InputStream zis = new ZipInputStream(in); - ThresholdInputStream tis = ZipSecureFile.addThreshold(zis); - this.zipArchive = new ZipInputStreamZipEntrySource(tis); + ThresholdInputStream zis = ZipHelper.openZipStream(in); + this.zipArchive = new ZipInputStreamZipEntrySource(zis); } /** diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java index 60df65ef7..2a536dc7b 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java @@ -19,17 +19,20 @@ package org.apache.poi.openxml4j.opc.internal; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.openxml4j.opc.ZipPackage; import org.apache.poi.openxml4j.util.ZipSecureFile; +import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream; public final class ZipHelper { /** @@ -143,7 +146,21 @@ public final class ZipHelper { } /** - * Opens the specified file as a zip, or returns null if no such file exists + * Opens the specified stream as a secure zip + * + * @param stream + * The stream to open. + * @return The zip stream freshly open. + */ + public static ThresholdInputStream openZipStream(InputStream stream) throws IOException { + InputStream zis = new ZipInputStream(stream); + ThresholdInputStream tis = ZipSecureFile.addThreshold(zis); + return tis; + } + + /** + * Opens the specified file as a secure zip, or returns null if no + * such file exists * * @param file * The file to open. @@ -158,7 +175,7 @@ public final class ZipHelper { } /** - * Retrieve and open a zip file with the specified path. + * Retrieve and open as a secure zip file with the specified path. * * @param path * The file path. @@ -166,11 +183,7 @@ public final class ZipHelper { */ public static ZipFile openZipFile(String path) throws IOException { File f = new File(path); - - if (!f.exists()) { - return null; - } - - return new ZipSecureFile(f); + + return openZipFile(f); } }