/**
* A ZipEntrySource wrapper around a ZipFile.
* Should be as low in terms of memory as a
- * normal ZipFile implementation is.
+ * normal ZipFile implementation is.
*/
public class ZipFileZipEntrySource implements ZipEntrySource {
- private ZipFile zipArchive;
- public ZipFileZipEntrySource(ZipFile zipFile) {
- this.zipArchive = zipFile;
- }
-
- @Override
- public void close() throws IOException {
- if(zipArchive != null) {
- zipArchive.close();
- }
- zipArchive = null;
- }
-
- @Override
- public boolean isClosed() {
- return (zipArchive == null);
- }
-
- @Override
- public Enumeration<? extends ZipArchiveEntry> getEntries() {
- if (zipArchive == null)
- throw new IllegalStateException("Zip File is closed");
-
- return zipArchive.getEntries();
- }
-
- @Override
- public InputStream getInputStream(ZipArchiveEntry entry) throws IOException {
- if (zipArchive == null)
- throw new IllegalStateException("Zip File is closed");
-
- return zipArchive.getInputStream(entry);
- }
-
- @Override
- public ZipArchiveEntry getEntry(final String path) {
- String normalizedPath = path.replace('\\', '/');
-
- final ZipArchiveEntry entry = zipArchive.getEntry(normalizedPath);
- if (entry != null) {
- return entry;
- }
-
- // the opc spec allows case-insensitive filename matching (see #49609)
- final Enumeration<ZipArchiveEntry> zipArchiveEntryEnumeration = zipArchive.getEntries();
- while (zipArchiveEntryEnumeration.hasMoreElements()) {
- ZipArchiveEntry ze = zipArchiveEntryEnumeration.nextElement();
- if (normalizedPath.equalsIgnoreCase(ze.getName().replace('\\','/'))) {
- return ze;
- }
- }
-
- return null;
- }
+ private ZipFile zipArchive;
+
+ public ZipFileZipEntrySource(ZipFile zipFile) {
+ this.zipArchive = zipFile;
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (zipArchive != null) {
+ zipArchive.close();
+ }
+ zipArchive = null;
+ }
+
+ @Override
+ public boolean isClosed() {
+ return (zipArchive == null);
+ }
+
+ @Override
+ public Enumeration<? extends ZipArchiveEntry> getEntries() {
+ if (zipArchive == null)
+ throw new IllegalStateException("Zip File is closed");
+
+ return zipArchive.getEntries();
+ }
+
+ @Override
+ public InputStream getInputStream(ZipArchiveEntry entry) throws IOException {
+ if (zipArchive == null)
+ throw new IllegalStateException("Zip File is closed");
+
+ return zipArchive.getInputStream(entry);
+ }
+
+ @Override
+ public ZipArchiveEntry getEntry(final String path) {
+ String normalizedPath = path.replace('\\', '/');
+
+ final ZipArchiveEntry entry = zipArchive.getEntry(normalizedPath);
+ if (entry != null) {
+ return entry;
+ }
+
+ // the opc spec allows case-insensitive filename matching (see #49609)
+ final Enumeration<ZipArchiveEntry> zipArchiveEntryEnumeration = zipArchive.getEntries();
+ while (zipArchiveEntryEnumeration.hasMoreElements()) {
+ ZipArchiveEntry ze = zipArchiveEntryEnumeration.nextElement();
+ if (normalizedPath.equalsIgnoreCase(ze.getName().replace('\\', '/'))) {
+ return ze;
+ }
+ }
+
+ return null;
+ }
}