From 97abbdd6abd7ec03ab83c247554455a718614a54 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 6 Dec 2021 14:59:18 +0000 Subject: [PATCH] Close some streams/workbooks properly git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895624 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFPictureData.java | 11 ++++++----- .../org/apache/poi/ss/util/BaseTestCellUtilCopy.java | 11 +++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java index d84a26c5d7..0fa78c9f31 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java @@ -18,6 +18,7 @@ package org.apache.poi.xssf.usermodel; import java.io.IOException; +import java.io.InputStream; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLException; @@ -65,13 +66,13 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData { * Construct XSSFPictureData from a package part * * @param part the package part holding the drawing data, - * + * * @since POI 3.14-Beta1 */ protected XSSFPictureData(PackagePart part) { super(part); } - + /** * Gets the picture data as a byte array. *

@@ -86,8 +87,8 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData { * @return the picture data. */ public byte[] getData() { - try { - return IOUtils.toByteArray(getPackagePart().getInputStream()); + try (InputStream inputStream = getPackagePart().getInputStream()) { + return IOUtils.toByteArray(inputStream); } catch(IOException e) { throw new POIXMLException(e); } @@ -116,7 +117,7 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData { } /** - * *PictureData objects store the actual content in the part directly without keeping a + * *PictureData objects store the actual content in the part directly without keeping a * copy like all others therefore we need to handle them differently. */ @Override diff --git a/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java b/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java index 5ffd322f3a..1396448a4c 100644 --- a/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java +++ b/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java @@ -19,6 +19,7 @@ package org.apache.poi.ss.util; import org.apache.poi.common.usermodel.HyperlinkType; import org.apache.poi.ss.usermodel.*; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -30,6 +31,16 @@ public abstract class BaseTestCellUtilCopy { protected Cell srcCell, destCell; //used for testCopyCellFrom_CellCopyPolicy + @AfterEach + public void tearDown() throws IOException { + if (srcCell != null) { + srcCell.getRow().getSheet().getWorkbook().close(); + } + if (destCell != null) { + destCell.getRow().getSheet().getWorkbook().close(); + } + } + @Test public final void testCopyCellFrom_CellCopyPolicy_default() { setUp_testCopyCellFrom_CellCopyPolicy();