mirror of https://github.com/apache/poi.git
avoid creating enumeration twice
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911470 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ddef604f46
commit
91c4ec6a45
|
@ -27,6 +27,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@ -271,6 +272,7 @@ public final class ZipPackage extends OPCPackage {
|
||||||
// First we need to parse the content type part
|
// First we need to parse the content type part
|
||||||
final ZipArchiveEntry contentTypeEntry =
|
final ZipArchiveEntry contentTypeEntry =
|
||||||
zipArchive.getEntry(CONTENT_TYPES_PART_NAME);
|
zipArchive.getEntry(CONTENT_TYPES_PART_NAME);
|
||||||
|
final Enumeration<? extends ZipArchiveEntry> zipEntries;
|
||||||
if (contentTypeEntry != null) {
|
if (contentTypeEntry != null) {
|
||||||
if (this.contentTypeManager != null) {
|
if (this.contentTypeManager != null) {
|
||||||
throw new InvalidFormatException("ContentTypeManager can only be created once. This must be a cyclic relation?");
|
throw new InvalidFormatException("ContentTypeManager can only be created once. This must be a cyclic relation?");
|
||||||
|
@ -281,6 +283,7 @@ public final class ZipPackage extends OPCPackage {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new InvalidFormatException(e.getMessage(), e);
|
throw new InvalidFormatException(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
zipEntries = zipArchive.getEntries();
|
||||||
} else {
|
} else {
|
||||||
// Is it a different Zip-based format?
|
// Is it a different Zip-based format?
|
||||||
final boolean hasMimetype = zipArchive.getEntry(MIMETYPE) != null;
|
final boolean hasMimetype = zipArchive.getEntry(MIMETYPE) != null;
|
||||||
|
@ -290,7 +293,8 @@ public final class ZipPackage extends OPCPackage {
|
||||||
"The supplied data appears to be in ODF (Open Document) Format. " +
|
"The supplied data appears to be in ODF (Open Document) Format. " +
|
||||||
"Formats like these (eg ODS, ODP) are not supported, try Apache ODFToolkit");
|
"Formats like these (eg ODS, ODP) are not supported, try Apache ODFToolkit");
|
||||||
}
|
}
|
||||||
if (!zipArchive.getEntries().hasMoreElements()) {
|
zipEntries = zipArchive.getEntries();
|
||||||
|
if (!zipEntries.hasMoreElements()) {
|
||||||
throw new NotOfficeXmlFileException(
|
throw new NotOfficeXmlFileException(
|
||||||
"No valid entries or contents found, this is not a valid OOXML " +
|
"No valid entries or contents found, this is not a valid OOXML " +
|
||||||
"(Office Open XML) file");
|
"(Office Open XML) file");
|
||||||
|
@ -305,7 +309,7 @@ public final class ZipPackage extends OPCPackage {
|
||||||
// parts, otherwise we might create a part before
|
// parts, otherwise we might create a part before
|
||||||
// its relationship exists, and then it won't tie up)
|
// its relationship exists, and then it won't tie up)
|
||||||
final List<EntryTriple> entries =
|
final List<EntryTriple> entries =
|
||||||
Collections.list(zipArchive.getEntries()).stream()
|
Collections.list(zipEntries).stream()
|
||||||
.filter(zipArchiveEntry -> !ignoreEntry(zipArchiveEntry))
|
.filter(zipArchiveEntry -> !ignoreEntry(zipArchiveEntry))
|
||||||
.map(zae -> new EntryTriple(zae, contentTypeManager))
|
.map(zae -> new EntryTriple(zae, contentTypeManager))
|
||||||
.filter(mm -> mm.partName != null)
|
.filter(mm -> mm.partName != null)
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class ZipInputStreamZipEntrySource implements ZipEntrySource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the threshold at which it a zip entry is regarded as too large for holding in memory
|
* Get the threshold at which a zip entry is regarded as too large for holding in memory
|
||||||
* and the data is put in a temp file instead (defaults to -1 meaning temp files are not used)
|
* and the data is put in a temp file instead (defaults to -1 meaning temp files are not used)
|
||||||
* @return threshold in bytes
|
* @return threshold in bytes
|
||||||
* @since POI 5.1.0
|
* @since POI 5.1.0
|
||||||
|
|
Loading…
Reference in New Issue