From 22d162cc7d24fc34c6fbb459c2f343ab45638beb Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 28 Dec 2021 02:33:44 +0000 Subject: [PATCH] close input streams for parts git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1896462 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ooxml/POIXMLProperties.java | 16 ++++--- .../apache/poi/openxml4j/opc/OPCPackage.java | 4 +- .../opc/PackageRelationshipCollection.java | 6 ++- .../poi/poifs/crypt/dsig/SignaturePart.java | 11 ++++- .../dsig/services/TSPTimeStampService.java | 5 +- ...SXSSFWorkbookWithCustomZipEntrySource.java | 5 +- .../poi/xddf/usermodel/chart/XDDFChart.java | 4 +- .../poi/xslf/usermodel/XMLSlideShow.java | 7 +-- .../xslf/usermodel/XSLFCommentAuthors.java | 8 ++-- .../poi/xslf/usermodel/XSLFComments.java | 5 +- .../poi/xslf/usermodel/XSLFMetroShape.java | 9 ++-- .../apache/poi/xslf/usermodel/XSLFNotes.java | 8 ++-- .../poi/xslf/usermodel/XSLFNotesMaster.java | 7 +-- .../apache/poi/xslf/usermodel/XSLFSlide.java | 5 +- .../poi/xslf/usermodel/XSLFSlideLayout.java | 8 ++-- .../poi/xslf/usermodel/XSLFSlideMaster.java | 9 ++-- .../poi/xslf/usermodel/XSLFSlideShow.java | 48 +++++++++++-------- .../apache/poi/xslf/usermodel/XSLFTheme.java | 8 ++-- .../poi/xssf/eventusermodel/XSSFReader.java | 4 +- .../apache/poi/xssf/usermodel/XSSFSheet.java | 4 +- .../poi/xssf/usermodel/XSSFVMLDrawing.java | 4 +- .../poi/xssf/usermodel/XSSFWorkbook.java | 6 ++- .../poi/xwpf/usermodel/XWPFDocument.java | 13 +++-- .../poi/xwpf/usermodel/XWPFPictureData.java | 4 +- .../poi/xwpf/usermodel/XWPFSettings.java | 4 +- 25 files changed, 137 insertions(+), 75 deletions(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLProperties.java b/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLProperties.java index 7ccbe771d7..daa68d017b 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLProperties.java +++ b/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLProperties.java @@ -78,9 +78,11 @@ public class POIXMLProperties { if (extPart == null) { ext = new ExtendedProperties((org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument)NEW_EXT_INSTANCE.copy()); } else { - org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument props = org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument.Factory.parse( - extPart.getInputStream(), DEFAULT_XML_OPTIONS); - ext = new ExtendedProperties(props); + try (InputStream stream = extPart.getInputStream()) { + org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument props = org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument.Factory.parse( + stream, DEFAULT_XML_OPTIONS); + ext = new ExtendedProperties(props); + } } } else { extPart = null; @@ -95,9 +97,11 @@ public class POIXMLProperties { if (custPart == null) { cust = new CustomProperties((org.openxmlformats.schemas.officeDocument.x2006.customProperties.PropertiesDocument)NEW_CUST_INSTANCE.copy()); } else { - org.openxmlformats.schemas.officeDocument.x2006.customProperties.PropertiesDocument props = org.openxmlformats.schemas.officeDocument.x2006.customProperties.PropertiesDocument.Factory.parse( - custPart.getInputStream(), DEFAULT_XML_OPTIONS); - cust = new CustomProperties(props); + try (InputStream stream = custPart.getInputStream()) { + org.openxmlformats.schemas.officeDocument.x2006.customProperties.PropertiesDocument props = org.openxmlformats.schemas.officeDocument.x2006.customProperties.PropertiesDocument.Factory.parse( + stream, DEFAULT_XML_OPTIONS); + cust = new CustomProperties(props); + } } } else { custPart = null; diff --git a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java index f17a163c8a..a96b8d59d0 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -759,8 +759,8 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { if (partUnmarshaller != null) { UnmarshallContext context = new UnmarshallContext(this, part._partName); - try { - PackagePart unmarshallPart = partUnmarshaller.unmarshall(context, part.getInputStream()); + try (InputStream partStream = part.getInputStream()) { + PackagePart unmarshallPart = partUnmarshaller.unmarshall(context, partStream); partList.remove(part.getPartName()); partList.put(unmarshallPart._partName, unmarshallPart); diff --git a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java index 4ac65c7eaa..b529a493a1 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java +++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java @@ -16,6 +16,7 @@ ==================================================================== */ package org.apache.poi.openxml4j.opc; +import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.*; @@ -298,7 +299,10 @@ public final class PackageRelationshipCollection implements Iterable new SimpleMessage("response content: " + HexDump.dump(responseBytes, 0, 0))); } finally { huc.disconnect(); diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/SXSSFWorkbookWithCustomZipEntrySource.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/SXSSFWorkbookWithCustomZipEntrySource.java index 4ca8b864ee..d660241915 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/SXSSFWorkbookWithCustomZipEntrySource.java +++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/SXSSFWorkbookWithCustomZipEntrySource.java @@ -20,6 +20,7 @@ package org.apache.poi.poifs.crypt.temp; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import org.apache.logging.log4j.LogManager; @@ -51,7 +52,9 @@ public class SXSSFWorkbookWithCustomZipEntrySource extends SXSSFWorkbook { getXSSFWorkbook().write(os); } // provide ZipEntrySource to poi which decrypts on the fly - source = AesZipFileZipEntrySource.createZipEntrySource(tempData.getInputStream()); + try (InputStream tempStream = tempData.getInputStream()) { + source = AesZipFileZipEntrySource.createZipEntrySource(tempStream); + } injectData(source, stream); } finally { tempData.dispose(); diff --git a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java index 20bb719484..bfbb775296 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java @@ -1009,7 +1009,9 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai workbook = new XSSFWorkbook(); workbook.createSheet(); } else { - workbook = new XSSFWorkbook(worksheetPart.getInputStream()); + try (InputStream stream = worksheetPart.getInputStream()){ + workbook = new XSSFWorkbook(stream); + } } } catch (NotOfficeXmlFileException e) { workbook = new XSSFWorkbook(); diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java index 2e514dab55..06cb573e50 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java @@ -154,9 +154,10 @@ public class XMLSlideShow extends POIXMLDocument @Override protected void onDocumentRead() throws IOException { try { - PresentationDocument doc = - PresentationDocument.Factory.parse(getCorePart().getInputStream(), DEFAULT_XML_OPTIONS); - _presentation = doc.getPresentation(); + try (InputStream stream = getCorePart().getInputStream()) { + PresentationDocument doc = PresentationDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _presentation = doc.getPresentation(); + } Map masterMap = new HashMap<>(); Map shIdMap = new HashMap<>(); diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java index 01b98099d1..4ee910d809 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java @@ -20,6 +20,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; @@ -52,9 +53,10 @@ public class XSLFCommentAuthors extends POIXMLDocumentPart { */ XSLFCommentAuthors(PackagePart part) throws IOException, XmlException { super(part); - CmAuthorLstDocument doc = - CmAuthorLstDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _authors = doc.getCmAuthorLst(); + try (InputStream stream = getPackagePart().getInputStream()) { + CmAuthorLstDocument doc = CmAuthorLstDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _authors = doc.getCmAuthorLst(); + } } public CTCommentAuthorList getCTCommentAuthorsList() { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFComments.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFComments.java index 00fa47d5f1..c34a6ee3d5 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFComments.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFComments.java @@ -20,6 +20,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; @@ -50,7 +51,9 @@ public class XSLFComments extends POIXMLDocumentPart { XSLFComments(PackagePart part) throws IOException, XmlException { super(part); - doc = CmLstDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); + try (InputStream stream = getPackagePart().getInputStream()) { + doc = CmLstDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + } } public CTCommentList getCTCommentsList() { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFMetroShape.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFMetroShape.java index 5912d05745..c01b9ff3de 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFMetroShape.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFMetroShape.java @@ -21,6 +21,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -49,9 +50,11 @@ public class XSLFMetroShape implements MetroShapeProvider { if (shapePart == null) { return null; } - CTGroupShape gs = CTGroupShape.Factory.parse(shapePart.getInputStream(), DEFAULT_XML_OPTIONS); - XSLFGroupShape xgs = new XSLFGroupShape(gs, null); - return xgs.getShapes().get(0); + try (InputStream stream = shapePart.getInputStream()) { + CTGroupShape gs = CTGroupShape.Factory.parse(stream, DEFAULT_XML_OPTIONS); + XSLFGroupShape xgs = new XSLFGroupShape(gs, null); + return xgs.getShapes().get(0); + } } catch (InvalidFormatException | XmlException e) { throw new IOException("can't parse metro shape", e); } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotes.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotes.java index dfdad6fe19..2abbc340b0 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotes.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotes.java @@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -54,9 +55,10 @@ implements Notes { XSLFNotes(PackagePart part) throws IOException, XmlException { super(part); - NotesDocument doc = - NotesDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _notes = doc.getNotes(); + try (InputStream stream = getPackagePart().getInputStream()) { + NotesDocument doc = NotesDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _notes = doc.getNotes(); + } } private static CTNotesSlide prototype(){ diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java index b3bd64f348..fd1cbfb21c 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java @@ -58,9 +58,10 @@ import org.openxmlformats.schemas.presentationml.x2006.main.NotesMasterDocument; */ protected XSLFNotesMaster(PackagePart part) throws IOException, XmlException { super(part); - NotesMasterDocument doc = - NotesMasterDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _slide = doc.getNotesMaster(); + try (InputStream stream = getPackagePart().getInputStream()) { + NotesMasterDocument doc = NotesMasterDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _slide = doc.getNotesMaster(); + } } private static CTNotesMaster prototype() { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java index 446ab8af7b..f7f4e8dc1d 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java @@ -20,6 +20,7 @@ import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.awt.Graphics2D; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -78,8 +79,8 @@ implements Slide { super(part); Document _doc; - try { - _doc = DocumentHelper.readDocument(getPackagePart().getInputStream()); + try (InputStream stream = getPackagePart().getInputStream()) { + _doc = DocumentHelper.readDocument(stream); } catch (SAXException e) { throw new IOException(e); } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java index 17f66bec0a..0d6b9ca476 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java @@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; @@ -42,9 +43,10 @@ implements MasterSheet { */ public XSLFSlideLayout(PackagePart part) throws IOException, XmlException { super(part); - SldLayoutDocument doc = - SldLayoutDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _layout = doc.getSldLayout(); + try (InputStream stream = getPackagePart().getInputStream()) { + SldLayoutDocument doc = SldLayoutDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _layout = doc.getSldLayout(); + } } public String getName() { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java index c473fa2389..0031225e75 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java @@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -61,9 +62,11 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument; */ protected XSLFSlideMaster(PackagePart part) throws IOException, XmlException { super(part); - SldMasterDocument doc = - SldMasterDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _slide = doc.getSldMaster(); + try (InputStream stream = getPackagePart().getInputStream()) { + SldMasterDocument doc = SldMasterDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _slide = doc.getSldMaster(); + + } } @Override diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java index f7719d3073..79ffdb1c44 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java @@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import java.util.LinkedList; import java.util.List; @@ -65,7 +66,7 @@ public class XSLFSlideShow extends POIXMLDocument { /** * The embedded OLE2 files in the OPC package */ - private final List embedds; + private final List embeddedParts; public XSLFSlideShow(OPCPackage container) throws OpenXML4JException, IOException, XmlException { super(container); @@ -74,10 +75,12 @@ public class XSLFSlideShow extends POIXMLDocument { rebase(getPackage()); } - presentationDoc = - PresentationDocument.Factory.parse(getCorePart().getInputStream(), DEFAULT_XML_OPTIONS); + try (InputStream stream = getCorePart().getInputStream()) { + presentationDoc = + PresentationDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + } - embedds = new LinkedList<>(); + embeddedParts = new LinkedList<>(); for (CTSlideIdListEntry ctSlide : getSlideReferences().getSldIdArray()) { PackagePart corePart = getCorePart(); PackagePart slidePart = corePart.getRelatedPart(corePart.getRelationship(ctSlide.getId2())); @@ -87,14 +90,15 @@ public class XSLFSlideShow extends POIXMLDocument { continue; } // TODO: Add this reference to each slide as well - embedds.add(slidePart.getRelatedPart(rel)); + embeddedParts.add(slidePart.getRelatedPart(rel)); } for (PackageRelationship rel : slidePart.getRelationshipsByType(PACK_OBJECT_REL_TYPE)) { - embedds.add(slidePart.getRelatedPart(rel)); + embeddedParts.add(slidePart.getRelatedPart(rel)); } } } + public XSLFSlideShow(String file) throws OpenXML4JException, IOException, XmlException { this(openPackage(file)); } @@ -149,9 +153,11 @@ public class XSLFSlideShow extends POIXMLDocument { @Internal public CTSlideMaster getSlideMaster(CTSlideMasterIdListEntry master) throws IOException, XmlException { PackagePart masterPart = getSlideMasterPart(master); - SldMasterDocument masterDoc = - SldMasterDocument.Factory.parse(masterPart.getInputStream(), DEFAULT_XML_OPTIONS); - return masterDoc.getSldMaster(); + try (InputStream stream = masterPart.getInputStream()) { + SldMasterDocument masterDoc = + SldMasterDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + return masterDoc.getSldMaster(); + } } public PackagePart getSlidePart(CTSlideIdListEntry slide) throws IOException, XmlException { @@ -169,9 +175,10 @@ public class XSLFSlideShow extends POIXMLDocument { @Internal public CTSlide getSlide(CTSlideIdListEntry slide) throws IOException, XmlException { PackagePart slidePart = getSlidePart(slide); - SldDocument slideDoc = - SldDocument.Factory.parse(slidePart.getInputStream(), DEFAULT_XML_OPTIONS); - return slideDoc.getSld(); + try (InputStream stream = slidePart.getInputStream()) { + SldDocument slideDoc = SldDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + return slideDoc.getSld(); + } } /** @@ -212,10 +219,10 @@ public class XSLFSlideShow extends POIXMLDocument { if(notesPart == null) return null; - NotesDocument notesDoc = - NotesDocument.Factory.parse(notesPart.getInputStream(), DEFAULT_XML_OPTIONS); - - return notesDoc.getNotes(); + try (InputStream stream = notesPart.getInputStream()) { + NotesDocument notesDoc = NotesDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + return notesDoc.getNotes(); + } } /** @@ -244,9 +251,10 @@ public class XSLFSlideShow extends POIXMLDocument { PackagePart cPart = slidePart.getRelatedPart( commentRels.getRelationship(0) ); - CmLstDocument commDoc = - CmLstDocument.Factory.parse(cPart.getInputStream(), DEFAULT_XML_OPTIONS); - return commDoc.getCmLst(); + try (InputStream stream = cPart.getInputStream()) { + CmLstDocument commDoc = CmLstDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + return commDoc.getCmLst(); + } } catch(InvalidFormatException e) { throw new IllegalStateException(e); } @@ -257,7 +265,7 @@ public class XSLFSlideShow extends POIXMLDocument { */ @Override public List getAllEmbeddedParts() throws OpenXML4JException { - return embedds; + return embeddedParts; } } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTheme.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTheme.java index 556ad6e6e7..c8deecdc66 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTheme.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTheme.java @@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import javax.xml.namespace.QName; @@ -51,9 +52,10 @@ public class XSLFTheme extends POIXMLDocumentPart { */ public XSLFTheme(PackagePart part) throws IOException, XmlException { super(part); - ThemeDocument doc = - ThemeDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - _theme = doc.getTheme(); + try (InputStream stream = getPackagePart().getInputStream()) { + ThemeDocument doc = ThemeDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + _theme = doc.getTheme(); + } } @SuppressWarnings("WeakerAccess") diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java index 9a058eb8a5..4f668aa0f7 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java @@ -296,8 +296,8 @@ public class XSSFReader { throw new POIXMLException(e); } xmlReader.setContentHandler(xmlSheetRefReader); - try { - xmlReader.parse(new InputSource(wb.getInputStream())); + try (InputStream stream = wb.getInputStream()) { + xmlReader.parse(new InputSource(stream)); } catch (SAXException e) { throw new POIXMLException(e); } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index e90c7a5c97..9f69900ec8 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -145,8 +145,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet, OoxmlSheetEx */ @Override protected void onDocumentRead() { - try { - read(getPackagePart().getInputStream()); + try (InputStream stream = getPackagePart().getInputStream()) { + read(stream); } catch (IOException e){ throw new POIXMLException(e); } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java index 640534354a..ba8d5849eb 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java @@ -119,7 +119,9 @@ public final class XSSFVMLDrawing extends POIXMLDocumentPart { */ protected XSSFVMLDrawing(PackagePart part) throws IOException, XmlException { super(part); - read(getPackagePart().getInputStream()); + try (InputStream stream = getPackagePart().getInputStream()) { + read(stream); + } } public XmlDocument getDocument() { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index c6edf23395..ec17fa8809 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -382,8 +382,10 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su @Override protected void onDocumentRead() throws IOException { try { - WorkbookDocument doc = WorkbookDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - this.workbook = doc.getWorkbook(); + try (InputStream stream = getPackagePart().getInputStream()) { + WorkbookDocument doc = WorkbookDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + this.workbook = doc.getWorkbook(); + } ThemesTable theme = null; Map shIdMap = new HashMap<>(); diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 3530c7c5fe..9e735bacdb 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -191,8 +191,11 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { @Override protected void onDocumentRead() throws IOException { try { - DocumentDocument doc = DocumentDocument.Factory.parse(getPackagePart().getInputStream(), DEFAULT_XML_OPTIONS); - ctDocument = doc.getDocument(); + DocumentDocument doc; + try (InputStream stream = getPackagePart().getInputStream()) { + doc = DocumentDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + ctDocument = doc.getDocument(); + } initFootnotes(); @@ -584,8 +587,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { throw new IllegalStateException("Expecting one Styles document part, but found " + parts.length); } - StylesDocument sd = StylesDocument.Factory.parse(parts[0].getInputStream(), DEFAULT_XML_OPTIONS); - return sd.getStyles(); + try (InputStream stream = parts[0].getInputStream()) { + StylesDocument sd = StylesDocument.Factory.parse(stream, DEFAULT_XML_OPTIONS); + return sd.getStyles(); + } } /** diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java index 2674b2f541..d4ea1849b4 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java @@ -93,8 +93,8 @@ public class XWPFPictureData extends POIXMLDocumentPart { * @return the Picture data. */ public byte[] getData() { - try { - return IOUtils.toByteArray(getPackagePart().getInputStream()); + try (InputStream stream = getPackagePart().getInputStream()) { + return IOUtils.toByteArray(stream); } catch (IOException e) { throw new POIXMLException(e); } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java index 03b1090f73..407af7232f 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -63,7 +63,9 @@ public class XWPFSettings extends POIXMLDocumentPart { @Override protected void onDocumentRead() throws IOException { super.onDocumentRead(); - readFrom(getPackagePart().getInputStream()); + try (InputStream stream = getPackagePart().getInputStream()) { + readFrom(stream); + } } /** -- 2.39.5