mirror of
https://github.com/apache/poi.git
synced 2026-02-27 20:40:08 +08:00
[bug-67579] revert changes - POI will again close the InputStream
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1913356 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bcfd81f489
commit
ff5fc9d582
@ -131,9 +131,6 @@ public final class ZipPackage extends OPCPackage {
|
||||
super(access);
|
||||
try (ZipArchiveThresholdInputStream zis = ZipHelper.openZipStream(in)) {
|
||||
this.zipArchive = new ZipInputStreamZipEntrySource(zis);
|
||||
} catch (final IOException | RuntimeException e) {
|
||||
IOUtils.closeQuietly(in);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,33 +0,0 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.openxml4j.opc.internal;
|
||||
|
||||
import org.apache.poi.util.Internal;
|
||||
|
||||
import java.io.FilterInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
@Internal
|
||||
final class NoCloseInputStream extends FilterInputStream {
|
||||
NoCloseInputStream(InputStream stream) {
|
||||
super(stream);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
}
|
||||
@ -176,7 +176,7 @@ public final class ZipHelper {
|
||||
verifyZipHeader(checkedStream);
|
||||
|
||||
// Open as a proper zip stream
|
||||
return new ZipArchiveThresholdInputStream(new ZipArchiveInputStream(new NoCloseInputStream(checkedStream)));
|
||||
return new ZipArchiveThresholdInputStream(new ZipArchiveInputStream(checkedStream));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1449,17 +1449,26 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
|
||||
}
|
||||
|
||||
@Test
|
||||
void testWorkbookCloseDoesNotCloseInputStream() throws Exception {
|
||||
void testWorkbookCloseClosesInputStream() throws Exception {
|
||||
try (WrappedStream stream = new WrappedStream(
|
||||
HSSFTestDataSamples.openSampleFileStream("github-321.xlsx"))) {
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook(stream)) {
|
||||
XSSFSheet xssfSheet = wb.getSheetAt(0);
|
||||
assertNotNull(xssfSheet);
|
||||
}
|
||||
assertFalse(stream.isClosed(), "stream should noy be closed by XSSFWorkbook");
|
||||
assertTrue(stream.isClosed(), "stream should be closed by XSSFWorkbook");
|
||||
}
|
||||
}
|
||||
|
||||
static class NoCloseInputStream extends FilterInputStream {
|
||||
NoCloseInputStream(InputStream stream) {
|
||||
super(stream);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
}
|
||||
|
||||
@Test
|
||||
void readFromZipStream() throws IOException {
|
||||
File tempFile = TempFile.createTempFile("poitest", ".zip");
|
||||
@ -1485,7 +1494,9 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
|
||||
try (ZipArchiveInputStream zis = new ZipArchiveInputStream(Files.newInputStream(tempFile.toPath()))) {
|
||||
ZipArchiveEntry entry;
|
||||
while ((entry = zis.getNextZipEntry()) != null) {
|
||||
XSSFWorkbook wb = new XSSFWorkbook(zis);
|
||||
// NoCloseInputStream is needed to stop XSSFWorkbook closing the underlying InputStream
|
||||
// this might not sound great but POI has worked like this for years and we can't just change it
|
||||
XSSFWorkbook wb = new XSSFWorkbook(new NoCloseInputStream(zis));
|
||||
assertNotNull(wb);
|
||||
count++;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user