You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/05/14 00:37:53 UTC

svn commit: r1889871 [7/17] - in /poi: site/src/documentation/content/xdocs/ site/src/documentation/content/xdocs/components/ trunk/ trunk/maven/ trunk/osgi/ trunk/osgi/src/test/java/org/apache/poi/osgi/ trunk/poi-examples/src/main/java/org/apache/poi/...

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPicture.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPicture.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPicture.java Fri May 14 00:37:50 2021
@@ -20,6 +20,7 @@ package org.apache.poi.xssf.usermodel;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
 
 import java.io.IOException;
 import java.util.List;
@@ -41,6 +42,7 @@ public final class TestXSSFPicture exten
         super(XSSFITestDataProvider.instance);
     }
 
+    @Override
     protected Picture getPictureShape(Drawing<?> pat, int picIdx) {
         return (Picture)((XSSFDrawing)pat).getShapes().get(picIdx);
     }
@@ -73,7 +75,7 @@ public final class TestXSSFPicture exten
 
             CTTwoCellAnchor ctShapeHolder = drawing.getCTDrawing().getTwoCellAnchorArray(0);
             // STEditAs.ABSOLUTE corresponds to ClientAnchor.DONT_MOVE_AND_RESIZE
-            assertEquals(STEditAs.ABSOLUTE, ctShapeHolder.getEditAs());
+            assertSame(STEditAs.ABSOLUTE, ctShapeHolder.getEditAs());
         }
     }
 

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java Fri May 14 00:37:50 2021
@@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigInteger;
@@ -45,6 +44,7 @@ import com.microsoft.schemas.vml.CTShape
 import com.microsoft.schemas.vml.STExt;
 import com.microsoft.schemas.vml.STStrokeJoinStyle;
 import com.microsoft.schemas.vml.impl.CTShapetypeImpl;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
@@ -62,8 +62,8 @@ class TestXSSFVMLDrawing {
         assertEquals(2, items.size());
         assertTrue(items.get(0) instanceof CTShapeLayout);
         CTShapeLayout layout = (CTShapeLayout)items.get(0);
-        assertEquals(STExt.EDIT, layout.getExt());
-        assertEquals(STExt.EDIT, layout.getIdmap().getExt());
+        assertSame(STExt.EDIT, layout.getExt());
+        assertSame(STExt.EDIT, layout.getIdmap().getExt());
         assertEquals("1", layout.getIdmap().getData());
 
         assertTrue(items.get(1) instanceof CTShapetype);
@@ -72,8 +72,8 @@ class TestXSSFVMLDrawing {
         assertEquals(202.0f, type.getSpt(), 0);
         assertEquals("m,l,21600r21600,l21600,xe", type.getPath2());
         assertEquals("_x0000_t202", type.getId());
-        assertEquals(STTrueFalse.T, type.getPathArray(0).getGradientshapeok());
-        assertEquals(STConnectType.RECT, type.getPathArray(0).getConnecttype());
+        assertSame(STTrueFalse.T, type.getPathArray(0).getGradientshapeok());
+        assertSame(STConnectType.RECT, type.getPathArray(0).getConnecttype());
 
         CTShape shape = vml.newCommentShape();
         items = vml.getItems();
@@ -82,16 +82,16 @@ class TestXSSFVMLDrawing {
         assertEquals("#_x0000_t202", shape.getType());
         assertEquals("position:absolute; visibility:hidden", shape.getStyle());
         assertEquals("#ffffe1", shape.getFillcolor());
-        assertEquals(STInsetMode.AUTO, shape.getInsetmode());
+        assertSame(STInsetMode.AUTO, shape.getInsetmode());
         assertEquals("#ffffe1", shape.getFillArray(0).getColor());
         CTShadow shadow = shape.getShadowArray(0);
-        assertEquals(STTrueFalse.T, shadow.getOn());
+        assertSame(STTrueFalse.T, shadow.getOn());
         assertEquals("black", shadow.getColor());
-        assertEquals(STTrueFalse.T, shadow.getObscured());
-        assertEquals(STConnectType.NONE, shape.getPathArray(0).getConnecttype());
+        assertSame(STTrueFalse.T, shadow.getObscured());
+        assertSame(STConnectType.NONE, shape.getPathArray(0).getConnecttype());
         assertEquals("mso-direction-alt:auto", shape.getTextboxArray(0).getStyle());
         CTClientData cldata = shape.getClientDataArray(0);
-        assertEquals(STObjectType.NOTE, cldata.getObjectType());
+        assertSame(STObjectType.NOTE, cldata.getObjectType());
         assertEquals(1, cldata.sizeOfMoveWithCellsArray());
         assertEquals(1, cldata.sizeOfSizeWithCellsArray());
         assertEquals("1, 15, 0, 2, 3, 15, 3, 16", cldata.getAnchorArray(0));
@@ -103,11 +103,11 @@ class TestXSSFVMLDrawing {
         assertEquals("[True]", cldata.getVisibleList().toString());
 
         //serialize and read again
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
         vml.write(out);
 
         XSSFVMLDrawing vml2 = new XSSFVMLDrawing();
-        vml2.read(new ByteArrayInputStream(out.toByteArray()));
+        vml2.read(out.toInputStream());
         List<XmlObject> items2 = vml2.getItems();
         assertEquals(3, items2.size());
         assertTrue(items2.get(0) instanceof CTShapeLayout);
@@ -208,6 +208,6 @@ class TestXSSFVMLDrawing {
         XmlObject xst = objs.get(0);
         assertTrue(xst instanceof CTShapetypeImpl);
         CTShapetype st = (CTShapetype)xst;
-        assertEquals(STStrokeJoinStyle.MITER, st.getStrokeArray(0).getJoinstyle());
+        assertSame(STStrokeJoinStyle.MITER, st.getStrokeArray(0).getJoinstyle());
     }
 }
\ No newline at end of file

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java Fri May 14 00:37:50 2021
@@ -17,6 +17,11 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
+import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleFileStream;
+import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOut;
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -27,12 +32,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.Iterator;
@@ -72,7 +75,6 @@ import org.apache.poi.util.TempFile;
 import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData;
 import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
 import org.apache.poi.xssf.XSSFITestDataProvider;
-import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.xssf.model.StylesTable;
 import org.junit.jupiter.api.Test;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcPr;
@@ -92,94 +94,87 @@ public final class  TestXSSFWorkbook ext
      */
     @Test
     void saveLoadNew() throws IOException, InvalidFormatException {
-        XSSFWorkbook wb1 = new XSSFWorkbook();
-
-        //check that the default date system is set to 1900
-        CTWorkbookPr pr = wb1.getCTWorkbook().getWorkbookPr();
-        assertNotNull(pr);
-        assertTrue(pr.isSetDate1904());
-        assertFalse(pr.getDate1904(), "XSSF must use the 1900 date system");
-
-        Sheet sheet1 = wb1.createSheet("sheet1");
-        Sheet sheet2 = wb1.createSheet("sheet2");
-        wb1.createSheet("sheet3");
-
-        RichTextString rts = wb1.getCreationHelper().createRichTextString("hello world");
-
-        sheet1.createRow(0).createCell((short)0).setCellValue(1.2);
-        sheet1.createRow(1).createCell((short)0).setCellValue(rts);
-        sheet2.createRow(0);
-
-        assertEquals(0, wb1.getSheetAt(0).getFirstRowNum());
-        assertEquals(1, wb1.getSheetAt(0).getLastRowNum());
-        assertEquals(0, wb1.getSheetAt(1).getFirstRowNum());
-        assertEquals(0, wb1.getSheetAt(1).getLastRowNum());
-        assertEquals(-1, wb1.getSheetAt(2).getFirstRowNum());
-        assertEquals(-1, wb1.getSheetAt(2).getLastRowNum());
-
-        File file = TempFile.createTempFile("poi-", ".xlsx");
-        OutputStream out = new FileOutputStream(file);
-        wb1.write(out);
-        out.close();
-
-        // Check the package contains what we'd expect it to
-        OPCPackage pkg = OPCPackage.open(file.toString());
-        PackagePart wbRelPart =
-            pkg.getPart(PackagingURIHelper.createPartName("/xl/_rels/workbook.xml.rels"));
-        assertNotNull(wbRelPart);
-        assertTrue(wbRelPart.isRelationshipPart());
-        assertEquals(ContentTypes.RELATIONSHIPS_PART, wbRelPart.getContentType());
-
-        PackagePart wbPart =
-            pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
-        // Links to the three sheets, shared strings and styles
-        assertTrue(wbPart.hasRelationships());
-        assertEquals(5, wbPart.getRelationships().size());
-        wb1.close();
-
-        // Load back the XSSFWorkbook
-        @SuppressWarnings("resource")
-        XSSFWorkbook wb2 = new XSSFWorkbook(pkg);
-        assertEquals(3, wb2.getNumberOfSheets());
-        assertNotNull(wb2.getSheetAt(0));
-        assertNotNull(wb2.getSheetAt(1));
-        assertNotNull(wb2.getSheetAt(2));
+        File file;
+        try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
 
-        assertNotNull(wb2.getSharedStringSource());
-        assertNotNull(wb2.getStylesSource());
+            //check that the default date system is set to 1900
+            CTWorkbookPr pr = wb1.getCTWorkbook().getWorkbookPr();
+            assertNotNull(pr);
+            assertTrue(pr.isSetDate1904());
+            assertFalse(pr.getDate1904(), "XSSF must use the 1900 date system");
+
+            Sheet sheet1 = wb1.createSheet("sheet1");
+            Sheet sheet2 = wb1.createSheet("sheet2");
+            wb1.createSheet("sheet3");
+
+            RichTextString rts = wb1.getCreationHelper().createRichTextString("hello world");
+
+            sheet1.createRow(0).createCell((short) 0).setCellValue(1.2);
+            sheet1.createRow(1).createCell((short) 0).setCellValue(rts);
+            sheet2.createRow(0);
+
+            assertEquals(0, wb1.getSheetAt(0).getFirstRowNum());
+            assertEquals(1, wb1.getSheetAt(0).getLastRowNum());
+            assertEquals(0, wb1.getSheetAt(1).getFirstRowNum());
+            assertEquals(0, wb1.getSheetAt(1).getLastRowNum());
+            assertEquals(-1, wb1.getSheetAt(2).getFirstRowNum());
+            assertEquals(-1, wb1.getSheetAt(2).getLastRowNum());
 
-        assertEquals(0, wb2.getSheetAt(0).getFirstRowNum());
-        assertEquals(1, wb2.getSheetAt(0).getLastRowNum());
-        assertEquals(0, wb2.getSheetAt(1).getFirstRowNum());
-        assertEquals(0, wb2.getSheetAt(1).getLastRowNum());
-        assertEquals(-1, wb2.getSheetAt(2).getFirstRowNum());
-        assertEquals(-1, wb2.getSheetAt(2).getLastRowNum());
-
-        sheet1 = wb2.getSheetAt(0);
-        assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001);
-        assertEquals("hello world", sheet1.getRow(1).getCell(0).getRichStringCellValue().getString());
+            file = writeOut(wb1, "poi-.xlsx");
+        }
 
-        pkg.close();
+        // Check the package contains what we'd expect it to
+        try (OPCPackage pkg = OPCPackage.open(file.toString())) {
+            PackagePart wbRelPart =
+                pkg.getPart(PackagingURIHelper.createPartName("/xl/_rels/workbook.xml.rels"));
+            assertNotNull(wbRelPart);
+            assertTrue(wbRelPart.isRelationshipPart());
+            assertEquals(ContentTypes.RELATIONSHIPS_PART, wbRelPart.getContentType());
+
+            PackagePart wbPart =
+                pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
+            // Links to the three sheets, shared strings and styles
+            assertTrue(wbPart.hasRelationships());
+            assertEquals(5, wbPart.getRelationships().size());
+
+            // Load back the XSSFWorkbook
+            try (XSSFWorkbook wb2 = new XSSFWorkbook(pkg)) {
+                assertEquals(3, wb2.getNumberOfSheets());
+                assertNotNull(wb2.getSheetAt(0));
+                assertNotNull(wb2.getSheetAt(1));
+                assertNotNull(wb2.getSheetAt(2));
+
+                assertNotNull(wb2.getSharedStringSource());
+                assertNotNull(wb2.getStylesSource());
+
+                assertEquals(0, wb2.getSheetAt(0).getFirstRowNum());
+                assertEquals(1, wb2.getSheetAt(0).getLastRowNum());
+                assertEquals(0, wb2.getSheetAt(1).getFirstRowNum());
+                assertEquals(0, wb2.getSheetAt(1).getLastRowNum());
+                assertEquals(-1, wb2.getSheetAt(2).getFirstRowNum());
+                assertEquals(-1, wb2.getSheetAt(2).getLastRowNum());
+
+                Sheet sheet1 = wb2.getSheetAt(0);
+                assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001);
+                assertEquals("hello world", sheet1.getRow(1).getCell(0).getRichStringCellValue().getString());
+            }
+        }
     }
 
     @Test
     void existing() throws Exception {
-
-        XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
-        assertNotNull(workbook.getSharedStringSource());
-        assertNotNull(workbook.getStylesSource());
-
-        // And check a few low level bits too
-        OPCPackage pkg = OPCPackage.open(HSSFTestDataSamples.openSampleFileStream("Formatting.xlsx"));
-        PackagePart wbPart =
-            pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
-
-        // Links to the three sheets, shared, styles and themes
-        assertTrue(wbPart.hasRelationships());
-        assertEquals(6, wbPart.getRelationships().size());
-
-        pkg.close();
-        workbook.close();
+        try (XSSFWorkbook workbook = openSampleWorkbook("Formatting.xlsx");
+             OPCPackage pkg = OPCPackage.open(openSampleFileStream("Formatting.xlsx"))) {
+            assertNotNull(workbook.getSharedStringSource());
+            assertNotNull(workbook.getStylesSource());
+
+            // And check a few low level bits too
+            PackagePart wbPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
+
+            // Links to the three sheets, shared, styles and themes
+            assertTrue(wbPart.hasRelationships());
+            assertEquals(6, wbPart.getRelationships().size());
+        }
     }
 
     @Test
@@ -230,7 +225,7 @@ public final class  TestXSSFWorkbook ext
 
     @Test
     void loadSave() throws IOException {
-        XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
+        XSSFWorkbook workbook = openSampleWorkbook("Formatting.xlsx");
         assertEquals(3, workbook.getNumberOfSheets());
         assertEquals("dd/mm/yyyy", workbook.getSheetAt(0).getRow(1).getCell(0).getRichStringCellValue().getString());
         assertNotNull(workbook.getSharedStringSource());
@@ -238,7 +233,7 @@ public final class  TestXSSFWorkbook ext
 
         // Write out, and check
         // Load up again, check all still there
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(workbook);
+        XSSFWorkbook wb2 = writeOutAndReadBack(workbook);
         assertEquals(3, wb2.getNumberOfSheets());
         assertNotNull(wb2.getSheetAt(0));
         assertNotNull(wb2.getSheetAt(1));
@@ -257,43 +252,41 @@ public final class  TestXSSFWorkbook ext
 
     @Test
     void styles() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
-
-        StylesTable ss = wb1.getStylesSource();
-        assertNotNull(ss);
-        StylesTable st = ss;
-
-        // Has 8 number formats
-        assertEquals(8, st.getNumDataFormats());
-        // Has 2 fonts
-        assertEquals(2, st.getFonts().size());
-        // Has 2 fills
-        assertEquals(2, st.getFills().size());
-        // Has 1 border
-        assertEquals(1, st.getBorders().size());
+        try (XSSFWorkbook wb1 = openSampleWorkbook("Formatting.xlsx")) {
+            StylesTable ss = wb1.getStylesSource();
+            assertNotNull(ss);
+            StylesTable st = ss;
+
+            // Has 8 number formats
+            assertEquals(8, st.getNumDataFormats());
+            // Has 2 fonts
+            assertEquals(2, st.getFonts().size());
+            // Has 2 fills
+            assertEquals(2, st.getFills().size());
+            // Has 1 border
+            assertEquals(1, st.getBorders().size());
 
-        // Add two more styles
-        assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
+            // Add two more styles
+            assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
                 st.putNumberFormat("testFORMAT"));
-        assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
+            assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
                 st.putNumberFormat("testFORMAT"));
-        assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9,
+            assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9,
                 st.putNumberFormat("testFORMAT2"));
-        assertEquals(10, st.getNumDataFormats());
-
-
-        // Save, load back in again, and check
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
+            assertEquals(10, st.getNumDataFormats());
 
-        ss = wb2.getStylesSource();
-        assertNotNull(ss);
 
-        assertEquals(10, st.getNumDataFormats());
-        assertEquals(2, st.getFonts().size());
-        assertEquals(2, st.getFills().size());
-        assertEquals(1, st.getBorders().size());
-        wb2.close();
+            // Save, load back in again, and check
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                ss = wb2.getStylesSource();
+                assertNotNull(ss);
+
+                assertEquals(10, st.getNumDataFormats());
+                assertEquals(2, st.getFonts().size());
+                assertEquals(2, st.getFills().size());
+                assertEquals(1, st.getBorders().size());
+            }
+        }
     }
 
     @Test
@@ -305,7 +298,7 @@ public final class  TestXSSFWorkbook ext
             assertEquals(2, sheetId);
 
             //test file with gaps in the sheetId sequence
-            try (XSSFWorkbook wbBack = XSSFTestDataSamples.openSampleWorkbook("47089.xlsm")) {
+            try (XSSFWorkbook wbBack = openSampleWorkbook("47089.xlsm")) {
                 int lastSheetId = (int) wbBack.getSheetAt(wbBack.getNumberOfSheets() - 1).sheet.getSheetId();
                 sheetId = (int) wbBack.createSheet().sheet.getSheetId();
                 assertEquals(lastSheetId + 1, sheetId);
@@ -328,15 +321,15 @@ public final class  TestXSSFWorkbook ext
             assertNotNull(opcProps);
 
             opcProps.setTitleProperty("Testing Bugzilla #47460");
-            assertEquals("Apache POI", opcProps.getCreatorProperty().get());
+            assertEquals("Apache POI", opcProps.getCreatorProperty().orElse(""));
             opcProps.setCreatorProperty("poi-dev@poi.apache.org");
 
-            XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(workbook);
-            assertEquals("Apache POI", wbBack.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
-            opcProps = wbBack.getProperties().getCoreProperties().getUnderlyingProperties();
-            assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().get());
-            assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().get());
-            wbBack.close();
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(workbook)) {
+                assertEquals("Apache POI", wbBack.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
+                opcProps = wbBack.getProperties().getCoreProperties().getUnderlyingProperties();
+                assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().orElse(""));
+                assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().orElse(""));
+            }
         }
     }
 
@@ -346,36 +339,36 @@ public final class  TestXSSFWorkbook ext
      */
     @Test
     void bug47668() throws Exception {
-        XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("47668.xlsx");
-        List<XSSFPictureData> allPictures = workbook.getAllPictures();
-        assertEquals(1, allPictures.size());
+        try (XSSFWorkbook workbook = openSampleWorkbook("47668.xlsx")) {
+            List<XSSFPictureData> allPictures = workbook.getAllPictures();
+            assertEquals(1, allPictures.size());
 
-        PackagePartName imagePartName = PackagingURIHelper
+            PackagePartName imagePartName = PackagingURIHelper
                 .createPartName("/xl/media/image1.jpeg");
-        PackagePart imagePart = workbook.getPackage().getPart(imagePartName);
-        assertNotNull(imagePart);
+            PackagePart imagePart = workbook.getPackage().getPart(imagePartName);
+            assertNotNull(imagePart);
 
-        for (XSSFPictureData pictureData : allPictures) {
-            PackagePart picturePart = pictureData.getPackagePart();
-            assertSame(imagePart, picturePart);
-        }
-
-        XSSFSheet sheet0 = workbook.getSheetAt(0);
-        XSSFDrawing drawing0 = sheet0.createDrawingPatriarch();
-        XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0);
-        byte[] data0 = pictureData0.getData();
-        CRC32 crc0 = new CRC32();
-        crc0.update(data0);
-
-        XSSFSheet sheet1 = workbook.getSheetAt(1);
-        XSSFDrawing drawing1 = sheet1.createDrawingPatriarch();
-        XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0);
-        byte[] data1 = pictureData1.getData();
-        CRC32 crc1 = new CRC32();
-        crc1.update(data1);
+            for (XSSFPictureData pictureData : allPictures) {
+                PackagePart picturePart = pictureData.getPackagePart();
+                assertSame(imagePart, picturePart);
+            }
 
-        assertEquals(crc0.getValue(), crc1.getValue());
-        workbook.close();
+            XSSFSheet sheet0 = workbook.getSheetAt(0);
+            XSSFDrawing drawing0 = sheet0.createDrawingPatriarch();
+            XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0);
+            byte[] data0 = pictureData0.getData();
+            CRC32 crc0 = new CRC32();
+            crc0.update(data0);
+
+            XSSFSheet sheet1 = workbook.getSheetAt(1);
+            XSSFDrawing drawing1 = sheet1.createDrawingPatriarch();
+            XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0);
+            byte[] data1 = pictureData1.getData();
+            CRC32 crc1 = new CRC32();
+            crc1.update(data1);
+
+            assertEquals(crc0.getValue(), crc1.getValue());
+        }
     }
 
     /**
@@ -384,27 +377,26 @@ public final class  TestXSSFWorkbook ext
     @SuppressWarnings("deprecation")
     @Test
     void bug47737() throws IOException {
-        XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47737.xlsx");
-        assertEquals(2, wb.getNumberOfNames());
-        assertNotNull(wb.getCalculationChain());
-
-        XSSFName nm0 = wb.getNameAt(0);
-        assertTrue(nm0.getCTName().isSetLocalSheetId());
-        assertEquals(0, nm0.getCTName().getLocalSheetId());
-
-        XSSFName nm1 = wb.getNameAt(1);
-        assertTrue(nm1.getCTName().isSetLocalSheetId());
-        assertEquals(1, nm1.getCTName().getLocalSheetId());
-
-        wb.removeSheetAt(0);
-        assertEquals(1, wb.getNumberOfNames());
-        XSSFName nm2 = wb.getNameAt(0);
-        assertTrue(nm2.getCTName().isSetLocalSheetId());
-        assertEquals(0, nm2.getCTName().getLocalSheetId());
-        //calculation chain is removed as well
-        assertNull(wb.getCalculationChain());
-        wb.close();
-
+        try (XSSFWorkbook wb = openSampleWorkbook("47737.xlsx")) {
+            assertEquals(2, wb.getNumberOfNames());
+            assertNotNull(wb.getCalculationChain());
+
+            XSSFName nm0 = wb.getNameAt(0);
+            assertTrue(nm0.getCTName().isSetLocalSheetId());
+            assertEquals(0, nm0.getCTName().getLocalSheetId());
+
+            XSSFName nm1 = wb.getNameAt(1);
+            assertTrue(nm1.getCTName().isSetLocalSheetId());
+            assertEquals(1, nm1.getCTName().getLocalSheetId());
+
+            wb.removeSheetAt(0);
+            assertEquals(1, wb.getNumberOfNames());
+            XSSFName nm2 = wb.getNameAt(0);
+            assertTrue(nm2.getCTName().isSetLocalSheetId());
+            assertEquals(0, nm2.getCTName().getLocalSheetId());
+            //calculation chain is removed as well
+            assertNull(wb.getCalculationChain());
+        }
     }
 
     /**
@@ -412,28 +404,28 @@ public final class  TestXSSFWorkbook ext
      */
     @Test
     void bug47813() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("47813.xlsx");
-        assertEquals(3, wb1.getNumberOfSheets());
-        assertNotNull(wb1.getCalculationChain());
-
-        assertEquals("Numbers", wb1.getSheetName(0));
-        //the second sheet is of type 'chartsheet'
-        assertEquals("Chart", wb1.getSheetName(1));
-        assertTrue(wb1.getSheetAt(1) instanceof XSSFChartSheet);
-        assertEquals("SomeJunk", wb1.getSheetName(2));
-
-        wb1.removeSheetAt(2);
-        assertEquals(2, wb1.getNumberOfSheets());
-        assertNull(wb1.getCalculationChain());
-
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        assertEquals(2, wb2.getNumberOfSheets());
-        assertNull(wb2.getCalculationChain());
+        try (XSSFWorkbook wb1 = openSampleWorkbook("47813.xlsx")) {
+            assertEquals(3, wb1.getNumberOfSheets());
+            assertNotNull(wb1.getCalculationChain());
+
+            assertEquals("Numbers", wb1.getSheetName(0));
+            //the second sheet is of type 'chartsheet'
+            assertEquals("Chart", wb1.getSheetName(1));
+            assertTrue(wb1.getSheetAt(1) instanceof XSSFChartSheet);
+            assertEquals("SomeJunk", wb1.getSheetName(2));
+
+            wb1.removeSheetAt(2);
+            assertEquals(2, wb1.getNumberOfSheets());
+            assertNull(wb1.getCalculationChain());
+
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                assertEquals(2, wb2.getNumberOfSheets());
+                assertNull(wb2.getCalculationChain());
 
-        assertEquals("Numbers", wb2.getSheetName(0));
-        assertEquals("Chart", wb2.getSheetName(1));
-        wb2.close();
-        wb1.close();
+                assertEquals("Numbers", wb2.getSheetName(0));
+                assertEquals("Chart", wb2.getSheetName(1));
+            }
+        }
     }
 
     /**
@@ -461,14 +453,14 @@ public final class  TestXSSFWorkbook ext
             assertNull(wb1.getCellStyleAt((short) 2), "Shouldn't be able to get style at 2 that doesn't exist");
 
             // Save and reload
-            try (XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+            try (XSSFWorkbook nwb = writeOutAndReadBack(wb1)) {
                 assertEquals(2, nwb.getNumCellStyles());
                 nwb.getCellStyleAt((short) 0);
                 nwb.getCellStyleAt((short) 1);
                 assertNull(nwb.getCellStyleAt((short) 2), "Shouldn't be able to get style at 2 that doesn't exist");
 
                 // Now with an existing file
-                try (XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx")) {
+                try (XSSFWorkbook wb2 = openSampleWorkbook("sample.xlsx")) {
                     assertEquals(3, wb2.getNumCellStyles());
                     wb2.getCellStyleAt((short) 0);
                     wb2.getCellStyleAt((short) 1);
@@ -501,7 +493,7 @@ public final class  TestXSSFWorkbook ext
             // calcMode="manual" is unset when forceFormulaRecalculation=true
             calcPr.setCalcMode(STCalcMode.MANUAL);
             wb.setForceFormulaRecalculation(true);
-            assertEquals(STCalcMode.AUTO, calcPr.getCalcMode());
+            assertSame(STCalcMode.AUTO, calcPr.getCalcMode());
             assertTrue(wb.getForceFormulaRecalculation());
 
             wb.setForceFormulaRecalculation(false);
@@ -514,26 +506,22 @@ public final class  TestXSSFWorkbook ext
 
     @Test
     void columnWidthPOI52233() throws Exception {
-        XSSFWorkbook workbook = new XSSFWorkbook();
-        XSSFSheet sheet = workbook.createSheet();
-        XSSFRow row = sheet.createRow(0);
-        XSSFCell cell = row.createCell(0);
-        cell.setCellValue("hello world");
-
-        sheet = workbook.createSheet();
-        sheet.setColumnWidth(4, 5000);
-        sheet.setColumnWidth(5, 5000);
-
-        sheet.groupColumn((short) 4, (short) 5);
-
-        accessWorkbook(workbook);
-
-        try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
-            workbook.write(stream);
+        try (XSSFWorkbook workbook = new XSSFWorkbook()) {
+            XSSFSheet sheet = workbook.createSheet();
+            XSSFRow row = sheet.createRow(0);
+            XSSFCell cell = row.createCell(0);
+            cell.setCellValue("hello world");
+
+            sheet = workbook.createSheet();
+            sheet.setColumnWidth(4, 5000);
+            sheet.setColumnWidth(5, 5000);
+
+            sheet.groupColumn((short) 4, (short) 5);
+
+            accessWorkbook(workbook);
+            workbook.write(NULL_OUTPUT_STREAM);
+            accessWorkbook(workbook);
         }
-
-        accessWorkbook(workbook);
-        workbook.close();
     }
 
     private void accessWorkbook(XSSFWorkbook workbook) {
@@ -546,136 +534,128 @@ public final class  TestXSSFWorkbook ext
 
     @Test
     void bug48495() throws IOException {
-        Workbook wb = XSSFTestDataSamples.openSampleWorkbook("48495.xlsx");
+        try (Workbook wb = openSampleWorkbook("48495.xlsx")) {
+            assertSheetOrder(wb, "Sheet1");
+
+            Sheet sheet = wb.getSheetAt(0);
+            sheet.shiftRows(2, sheet.getLastRowNum(), 1, true, false);
+            Row newRow = sheet.getRow(2);
+            if (newRow == null) {
+                newRow = sheet.createRow(2);
+            }
+            newRow.createCell(0).setCellValue(" Another Header");
+            wb.cloneSheet(0);
 
-        assertSheetOrder(wb, "Sheet1");
+            assertSheetOrder(wb, "Sheet1", "Sheet1 (2)");
 
-        Sheet sheet = wb.getSheetAt(0);
-        sheet.shiftRows(2, sheet.getLastRowNum(), 1, true, false);
-        Row newRow = sheet.getRow(2);
-        if (newRow == null) {
-            newRow = sheet.createRow(2);
-        }
-        newRow.createCell(0).setCellValue(" Another Header");
-        wb.cloneSheet(0);
-
-        assertSheetOrder(wb, "Sheet1", "Sheet1 (2)");
-
-        //            FileOutputStream fileOut = new FileOutputStream("/tmp/bug48495.xlsx");
-//            try {
-//                wb.write(fileOut);
-//            } finally {
-//                fileOut.close();
-//            }
-
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(wb);
-        assertNotNull(read);
-        assertSheetOrder(read, "Sheet1", "Sheet1 (2)");
-        read.close();
-        wb.close();
+            try (Workbook read = writeOutAndReadBack(wb)) {
+                assertNotNull(read);
+                assertSheetOrder(read, "Sheet1", "Sheet1 (2)");
+            }
+        }
     }
 
     @Test
     void bug47090a() throws IOException {
-        Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("47090.xlsx");
-        assertSheetOrder(workbook, "Sheet1", "Sheet2");
-        workbook.removeSheetAt(0);
-        assertSheetOrder(workbook, "Sheet2");
-        workbook.createSheet();
-        assertSheetOrder(workbook, "Sheet2", "Sheet1");
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(workbook);
-        assertSheetOrder(read, "Sheet2", "Sheet1");
-        read.close();
-        workbook.close();
+        try (Workbook workbook = openSampleWorkbook("47090.xlsx")) {
+            assertSheetOrder(workbook, "Sheet1", "Sheet2");
+            workbook.removeSheetAt(0);
+            assertSheetOrder(workbook, "Sheet2");
+            workbook.createSheet();
+            assertSheetOrder(workbook, "Sheet2", "Sheet1");
+            try (Workbook read = writeOutAndReadBack(workbook)) {
+                assertSheetOrder(read, "Sheet2", "Sheet1");
+            }
+        }
     }
 
     @Test
     void bug47090b() throws IOException {
-        Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("47090.xlsx");
-        assertSheetOrder(workbook, "Sheet1", "Sheet2");
-        workbook.removeSheetAt(1);
-        assertSheetOrder(workbook, "Sheet1");
-        workbook.createSheet();
-        assertSheetOrder(workbook, "Sheet1", "Sheet0");        // Sheet0 because it uses "Sheet" + sheets.size() as starting point!
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(workbook);
-        assertSheetOrder(read, "Sheet1", "Sheet0");
-        read.close();
-        workbook.close();
+        try (Workbook workbook = openSampleWorkbook("47090.xlsx")) {
+            assertSheetOrder(workbook, "Sheet1", "Sheet2");
+            workbook.removeSheetAt(1);
+            assertSheetOrder(workbook, "Sheet1");
+            workbook.createSheet();
+            assertSheetOrder(workbook, "Sheet1", "Sheet0");        // Sheet0 because it uses "Sheet" + sheets.size() as starting point!
+            try (Workbook read = writeOutAndReadBack(workbook)) {
+                assertSheetOrder(read, "Sheet1", "Sheet0");
+            }
+        }
     }
 
     @Test
     void bug47090c() throws IOException {
-        Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("47090.xlsx");
-        assertSheetOrder(workbook, "Sheet1", "Sheet2");
-        workbook.removeSheetAt(0);
-        assertSheetOrder(workbook, "Sheet2");
-        workbook.cloneSheet(0);
-        assertSheetOrder(workbook, "Sheet2", "Sheet2 (2)");
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(workbook);
-        assertSheetOrder(read, "Sheet2", "Sheet2 (2)");
-        read.close();
-        workbook.close();
+        try (Workbook workbook = openSampleWorkbook("47090.xlsx")) {
+            assertSheetOrder(workbook, "Sheet1", "Sheet2");
+            workbook.removeSheetAt(0);
+            assertSheetOrder(workbook, "Sheet2");
+            workbook.cloneSheet(0);
+            assertSheetOrder(workbook, "Sheet2", "Sheet2 (2)");
+            try (Workbook read = writeOutAndReadBack(workbook)) {
+                assertSheetOrder(read, "Sheet2", "Sheet2 (2)");
+            }
+        }
     }
 
     @Test
     void bug47090d() throws IOException {
-        Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("47090.xlsx");
-        assertSheetOrder(workbook, "Sheet1", "Sheet2");
-        workbook.createSheet();
-        assertSheetOrder(workbook, "Sheet1", "Sheet2", "Sheet0");
-        workbook.removeSheetAt(0);
-        assertSheetOrder(workbook, "Sheet2", "Sheet0");
-        workbook.createSheet();
-        assertSheetOrder(workbook, "Sheet2", "Sheet0", "Sheet1");
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(workbook);
-        assertSheetOrder(read, "Sheet2", "Sheet0", "Sheet1");
-        read.close();
-        workbook.close();
+        try (Workbook workbook = openSampleWorkbook("47090.xlsx")) {
+            assertSheetOrder(workbook, "Sheet1", "Sheet2");
+            workbook.createSheet();
+            assertSheetOrder(workbook, "Sheet1", "Sheet2", "Sheet0");
+            workbook.removeSheetAt(0);
+            assertSheetOrder(workbook, "Sheet2", "Sheet0");
+            workbook.createSheet();
+            assertSheetOrder(workbook, "Sheet2", "Sheet0", "Sheet1");
+            try (Workbook read = writeOutAndReadBack(workbook)) {
+                assertSheetOrder(read, "Sheet2", "Sheet0", "Sheet1");
+            }
+        }
     }
 
     @Test
     void bug51158() throws IOException {
         // create a workbook
-        final XSSFWorkbook wb1 = new XSSFWorkbook();
-        XSSFSheet sheet = wb1.createSheet("Test Sheet");
-        XSSFRow row = sheet.createRow(2);
-        XSSFCell cell = row.createCell(3);
-        cell.setCellValue("test1");
-
-        //XSSFCreationHelper helper = workbook.getCreationHelper();
-        //cell.setHyperlink(helper.createHyperlink(0));
-
-        XSSFComment comment = sheet.createDrawingPatriarch().createCellComment(new XSSFClientAnchor());
-        assertNotNull(comment);
-        comment.setString("some comment");
+        try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
+            XSSFSheet sheet = wb1.createSheet("Test Sheet");
+            XSSFRow row = sheet.createRow(2);
+            XSSFCell cell = row.createCell(3);
+            cell.setCellValue("test1");
+
+            //XSSFCreationHelper helper = workbook.getCreationHelper();
+            //cell.setHyperlink(helper.createHyperlink(0));
+
+            XSSFComment comment = sheet.createDrawingPatriarch().createCellComment(new XSSFClientAnchor());
+            assertNotNull(comment);
+            comment.setString("some comment");
 
 //        CellStyle cs = workbook.createCellStyle();
 //        cs.setShrinkToFit(false);
 //        row.createCell(0).setCellStyle(cs);
 
-        // write the first excel file
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        assertNotNull(wb2);
-        sheet = wb2.getSheetAt(0);
-        row = sheet.getRow(2);
-        assertEquals("test1", row.getCell(3).getStringCellValue());
-        assertNull(row.getCell(4));
-
-        // add a new cell to the sheet
-        cell = row.createCell(4);
-        cell.setCellValue("test2");
-
-        // write the second excel file
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        assertNotNull(wb3);
-        sheet = wb3.getSheetAt(0);
-        row = sheet.getRow(2);
-
-        assertEquals("test1", row.getCell(3).getStringCellValue());
-        assertEquals("test2", row.getCell(4).getStringCellValue());
-        wb3.close();
-        wb2.close();
-        wb1.close();
+            // write the first excel file
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                assertNotNull(wb2);
+                sheet = wb2.getSheetAt(0);
+                row = sheet.getRow(2);
+                assertEquals("test1", row.getCell(3).getStringCellValue());
+                assertNull(row.getCell(4));
+
+                // add a new cell to the sheet
+                cell = row.createCell(4);
+                cell.setCellValue("test2");
+
+                // write the second excel file
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2)) {
+                    assertNotNull(wb3);
+                    sheet = wb3.getSheetAt(0);
+                    row = sheet.getRow(2);
+
+                    assertEquals("test1", row.getCell(3).getStringCellValue());
+                    assertEquals("test2", row.getCell(4).getStringCellValue());
+                }
+            }
+        }
     }
 
     @Test
@@ -704,20 +684,20 @@ public final class  TestXSSFWorkbook ext
 
     @Test
     void bug60509() throws Exception {
-        XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("60509.xlsx");
-        assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3");
-        int sheetIndex = wb.getSheetIndex("Sheet1");
-        wb.setSheetName(sheetIndex, "Sheet1-Renamed");
-        Workbook read = XSSFTestDataSamples.writeOutAndReadBack(wb);
-        assertNotNull(read);
-        assertSheetOrder(read, "Sheet1-Renamed", "Sheet2", "Sheet3");
-        XSSFSheet sheet = (XSSFSheet) read.getSheet("Sheet1-Renamed");
-        XDDFChartData.Series series = sheet.getDrawingPatriarch().getCharts().get(0).getChartSeries().get(0).getSeries(0);
-        assertTrue(series instanceof XDDFBarChartData.Series, "should be a bar chart data series");
-        String formula = series.getCategoryData().getFormula();
-        assertTrue(formula.startsWith("'Sheet1-Renamed'!"), "should contain new sheet name");
-        read.close();
-        wb.close();
+        try (XSSFWorkbook wb = openSampleWorkbook("60509.xlsx")) {
+            assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3");
+            int sheetIndex = wb.getSheetIndex("Sheet1");
+            wb.setSheetName(sheetIndex, "Sheet1-Renamed");
+            try (Workbook read = writeOutAndReadBack(wb)) {
+                assertNotNull(read);
+                assertSheetOrder(read, "Sheet1-Renamed", "Sheet2", "Sheet3");
+                XSSFSheet sheet = (XSSFSheet) read.getSheet("Sheet1-Renamed");
+                XDDFChartData.Series series = sheet.getDrawingPatriarch().getCharts().get(0).getChartSeries().get(0).getSeries(0);
+                assertTrue(series instanceof XDDFBarChartData.Series, "should be a bar chart data series");
+                String formula = series.getCategoryData().getFormula();
+                assertTrue(formula.startsWith("'Sheet1-Renamed'!"), "should contain new sheet name");
+            }
+        }
     }
 
     private static final int INDEX_NOT_FOUND = -1;
@@ -850,15 +830,14 @@ public final class  TestXSSFWorkbook ext
             assertEquals(idx2, wb.getFirstVisibleTab());
             assertEquals(idx3, wb.getActiveSheetIndex());
 
-            Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
-
-            sheet2 = wbBack.getSheetAt(idx2);
-            assertNotNull(sheet2);
-            sheet3 = wbBack.getSheetAt(idx3);
-            assertNotNull(sheet3);
-            assertEquals(idx2, wb.getFirstVisibleTab());
-            assertEquals(idx3, wb.getActiveSheetIndex());
-            wbBack.close();
+            try (Workbook wbBack = writeOutAndReadBack(wb)) {
+                sheet2 = wbBack.getSheetAt(idx2);
+                assertNotNull(sheet2);
+                sheet3 = wbBack.getSheetAt(idx3);
+                assertNotNull(sheet3);
+                assertEquals(idx2, wb.getFirstVisibleTab());
+                assertEquals(idx3, wb.getActiveSheetIndex());
+            }
         }
     }
 
@@ -873,42 +852,39 @@ public final class  TestXSSFWorkbook ext
             allBytes[i] = (byte) (i - 128);
         }
 
-        XSSFWorkbook wb1 = new XSSFWorkbook();
-        wb1.createSheet();
-        wb1.setVBAProject(new ByteArrayInputStream(allBytes));
-        file = TempFile.createTempFile("poi-", ".xlsm");
-        OutputStream out = new FileOutputStream(file);
-        wb1.write(out);
-        out.close();
-        wb1.close();
+        try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
+            wb1.createSheet();
+            wb1.setVBAProject(new ByteArrayInputStream(allBytes));
+            file = writeOut(wb1, "ooi-.xlsm");
+        }
 
         // Check the package contains what we'd expect it to
-        OPCPackage pkg = OPCPackage.open(file.toString());
-        PackagePart wbPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
-        assertTrue(wbPart.hasRelationships());
-        final PackageRelationshipCollection relationships = wbPart.getRelationships().getRelationships(XSSFRelation.VBA_MACROS.getRelation());
-        assertEquals(1, relationships.size());
-        PackageRelationship relationship = relationships.getRelationship(0);
-        assertNotNull(relationship);
-        assertEquals(XSSFRelation.VBA_MACROS.getDefaultFileName(), relationship.getTargetURI().toString());
-        PackagePart vbaPart = pkg.getPart(PackagingURIHelper.createPartName(XSSFRelation.VBA_MACROS.getDefaultFileName()));
-        assertNotNull(vbaPart);
-        assertFalse(vbaPart.isRelationshipPart());
-        assertEquals(XSSFRelation.VBA_MACROS.getContentType(), vbaPart.getContentType());
-        final byte[] fromFile = IOUtils.toByteArray(vbaPart.getInputStream());
-        assertArrayEquals(allBytes, fromFile);
-
-        // Load back the XSSFWorkbook just to check nothing explodes
-        @SuppressWarnings("resource")
-        XSSFWorkbook wb2 = new XSSFWorkbook(pkg);
-        assertEquals(1, wb2.getNumberOfSheets());
-        assertEquals(XSSFWorkbookType.XLSM, wb2.getWorkbookType());
-        pkg.close();
+        try (OPCPackage pkg = OPCPackage.open(file.toString())) {
+            PackagePart wbPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
+            assertTrue(wbPart.hasRelationships());
+            final PackageRelationshipCollection relationships = wbPart.getRelationships().getRelationships(XSSFRelation.VBA_MACROS.getRelation());
+            assertEquals(1, relationships.size());
+            PackageRelationship relationship = relationships.getRelationship(0);
+            assertNotNull(relationship);
+            assertEquals(XSSFRelation.VBA_MACROS.getDefaultFileName(), relationship.getTargetURI().toString());
+            PackagePart vbaPart = pkg.getPart(PackagingURIHelper.createPartName(XSSFRelation.VBA_MACROS.getDefaultFileName()));
+            assertNotNull(vbaPart);
+            assertFalse(vbaPart.isRelationshipPart());
+            assertEquals(XSSFRelation.VBA_MACROS.getContentType(), vbaPart.getContentType());
+            final byte[] fromFile = IOUtils.toByteArray(vbaPart.getInputStream());
+            assertArrayEquals(allBytes, fromFile);
+
+            // Load back the XSSFWorkbook just to check nothing explodes
+            try (XSSFWorkbook wb2 = new XSSFWorkbook(pkg)) {
+                assertEquals(1, wb2.getNumberOfSheets());
+                assertEquals(XSSFWorkbookType.XLSM, wb2.getWorkbookType());
+            }
+        }
     }
 
     @Test
     void testBug54399() throws IOException {
-        try (XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("54399.xlsx")) {
+        try (XSSFWorkbook workbook = openSampleWorkbook("54399.xlsx")) {
 
             for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                 String name = "SheetRenamed" + (i + 1);
@@ -920,14 +896,14 @@ public final class  TestXSSFWorkbook ext
     }
 
     /**
-     *  Iterator<XSSFSheet> XSSFWorkbook.iterator was committed in r700472 on 2008-09-30
-     *  and has been replaced with Iterator<Sheet> XSSFWorkbook.iterator
+     *  {@code Iterator<XSSFSheet> XSSFWorkbook.iterator} was committed in r700472 on 2008-09-30
+     *  and has been replaced with {@code Iterator<Sheet> XSSFWorkbook.iterator}
      *
      *  In order to make code for looping over sheets in workbooks standard, regardless
      *  of the type of workbook (HSSFWorkbook, XSSFWorkbook, SXSSFWorkbook), the previously
-     *  available Iterator<XSSFSheet> iterator and Iterator<XSSFSheet> sheetIterator
-     *  have been replaced with Iterator<Sheet>  {@link Sheet#iterator} and
-     *  Iterator<Sheet> {@link Workbook#sheetIterator}. This makes iterating over sheets in a workbook
+     *  available {@code Iterator<XSSFSheet> iterator} and {@code Iterator<XSSFSheet> sheetIterator}
+     *  have been replaced with {@code Iterator<Sheet>} {@link Sheet#iterator} and
+     *  {@code Iterator<Sheet>} {@link Workbook#sheetIterator}. This makes iterating over sheets in a workbook
      *  similar to iterating over rows in a sheet and cells in a row.
      *
      *  Note: this breaks backwards compatibility! Existing codebases will need to
@@ -1054,7 +1030,7 @@ public final class  TestXSSFWorkbook ext
 
             assertThrows(IOException.class, () -> {
                 try {
-                    XSSFTestDataSamples.writeOutAndReadBack(wb);
+                    writeOutAndReadBack(wb);
                 } catch (RuntimeException e) {
                     throw e.getCause();
                 }
@@ -1067,7 +1043,7 @@ public final class  TestXSSFWorkbook ext
      */
     @Test
     void getTable() throws IOException {
-       XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithTable.xlsx");
+       XSSFWorkbook wb = openSampleWorkbook("WithTable.xlsx");
        XSSFTable table1 = wb.getTable("Tabella1");
        assertNotNull(table1, "Tabella1 was not found in workbook");
        assertEquals("Tabella1", table1.getName(), "Table name");

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/util/TestEvilUnclosedBRFixingInputStream.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/util/TestEvilUnclosedBRFixingInputStream.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/util/TestEvilUnclosedBRFixingInputStream.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/util/TestEvilUnclosedBRFixingInputStream.java Fri May 14 00:37:50 2021
@@ -20,10 +20,10 @@ package org.apache.poi.xssf.util;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.ReplacingInputStream;
 import org.junit.jupiter.api.Test;
@@ -68,23 +68,20 @@ public final class TestEvilUnclosedBRFix
         // Vary the buffer size, so that we can end up with the br in the
         //  overflow or only part in the buffer
         for(int i=5; i<orig.length; i++) {
-            EvilUnclosedBRFixingInputStream inp = new EvilUnclosedBRFixingInputStream(orig);
-
-            ByteArrayOutputStream bout = new ByteArrayOutputStream();
-            boolean going = true;
-            while(going) {
-                byte[] b = new byte[i];
-                int r = inp.read(b);
-                if(r > 0) {
+            try (EvilUnclosedBRFixingInputStream inp = new EvilUnclosedBRFixingInputStream(orig);
+                 UnsynchronizedByteArrayOutputStream bout = new UnsynchronizedByteArrayOutputStream()) {
+                for (;;) {
+                    byte[] b = new byte[i];
+                    int r = inp.read(b);
+                    if (r <= 0) {
+                        break;
+                    }
                     bout.write(b, 0, r);
-                } else {
-                    going = false;
                 }
-            }
 
-            byte[] result = bout.toByteArray();
-            assertArrayEquals(fixed, result);
-            inp.close();
+                byte[] result = bout.toByteArray();
+                assertArrayEquals(fixed, result);
+            }
         }
     }
 

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/XWPFTestDataSamples.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/XWPFTestDataSamples.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/XWPFTestDataSamples.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/XWPFTestDataSamples.java Fri May 14 00:37:50 2021
@@ -16,11 +16,10 @@
 ==================================================================== */
 package org.apache.poi.xwpf;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
@@ -33,10 +32,9 @@ public class XWPFTestDataSamples {
     }
 
     public static XWPFDocument writeOutAndReadBack(XWPFDocument doc) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
+        UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(4096);
         doc.write(baos);
-        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        return new XWPFDocument(bais);
+        return new XWPFDocument(baos.toInputStream());
     }
 
     public static byte[] getImage(String filename) throws IOException {

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestChangeTracking.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestChangeTracking.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestChangeTracking.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestChangeTracking.java Fri May 14 00:37:50 2021
@@ -19,9 +19,9 @@ package org.apache.poi.xwpf.usermodel;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.xwpf.XWPFTestDataSamples;
 import org.junit.jupiter.api.Test;
 
@@ -58,14 +58,14 @@ class TestChangeTracking {
             r1.setText("Lorem ipsum dolor sit amet.");
             doc.setTrackRevisions(true);
 
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            doc.write(out);
+            try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream()) {
+                doc.write(out);
 
-            ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray());
-            XWPFDocument document = new XWPFDocument(inputStream);
-            inputStream.close();
-
-            assertTrue(document.isTrackRevisions());
+                try (InputStream inputStream = out.toInputStream()) {
+                    XWPFDocument document = new XWPFDocument(inputStream);
+                    assertTrue(document.isTrackRevisions());
+                }
+            }
         }
     }
 }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java Fri May 14 00:37:50 2021
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.xwpf.usermodel;
 
+import static org.apache.poi.xwpf.XWPFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -23,8 +24,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.math.BigInteger;
 import java.util.List;
@@ -170,15 +169,11 @@ class TestXWPFBugs {
     @Test
     void test59378() throws IOException {
         try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("59378.docx")) {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            doc.write(out);
-            out.close();
-
-            try (XWPFDocument doc2 = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()))) {
+            try (XWPFDocument doc2 = writeOutAndReadBack(doc)) {
                 assertNotNull(doc2);
             }
 
-            try (XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc)) {
+            try (XWPFDocument docBack = writeOutAndReadBack(doc)) {
                 assertNotNull(docBack);
             }
         }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java Fri May 14 00:37:50 2021
@@ -16,15 +16,17 @@
 ==================================================================== */
 package org.apache.poi.xwpf.usermodel;
 
+import static org.apache.poi.xwpf.XWPFTestDataSamples.openSampleDocument;
+import static org.apache.poi.xwpf.XWPFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.math.BigInteger;
 import java.util.List;
@@ -296,7 +298,7 @@ class TestXWPFRun {
      */
     @Test
     void testExisting() throws IOException {
-        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
+        XWPFDocument doc = openSampleDocument("TestDocument.docx");
         XWPFParagraph p;
         XWPFRun run;
 
@@ -430,7 +432,7 @@ class TestXWPFRun {
 
     @Test
     void testPictureInHeader() throws IOException {
-        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
+        XWPFDocument sampleDoc = openSampleDocument("headerPic.docx");
         XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
 
         XWPFHeader header = policy.getDefaultHeader();
@@ -486,7 +488,7 @@ class TestXWPFRun {
 
     @Test
     void testAddPicture() throws Exception {
-        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
+        XWPFDocument doc = openSampleDocument("TestDocument.docx");
         XWPFParagraph p = doc.getParagraphArray(2);
         XWPFRun r = p.getRuns().get(0);
 
@@ -498,7 +500,7 @@ class TestXWPFRun {
         assertEquals(1, doc.getAllPictures().size());
         assertEquals(1, r.getEmbeddedPictures().size());
 
-        XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
+        XWPFDocument docBack = writeOutAndReadBack(doc);
         XWPFParagraph pBack = docBack.getParagraphArray(2);
         XWPFRun rBack = pBack.getRuns().get(0);
 
@@ -513,39 +515,39 @@ class TestXWPFRun {
      */
     @Test
     void testAddPictureInHeader() throws IOException, InvalidFormatException {
-        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
-        XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT);
-        XWPFParagraph p = hdr.createParagraph();
-        XWPFRun r = p.createRun();
+        try (XWPFDocument doc = openSampleDocument("TestDocument.docx")) {
+            XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT);
+            XWPFParagraph p = hdr.createParagraph();
+            XWPFRun r = p.createRun();
 
-        assertEquals(0, hdr.getAllPictures().size());
-        assertEquals(0, r.getEmbeddedPictures().size());
+            assertEquals(0, hdr.getAllPictures().size());
+            assertEquals(0, r.getEmbeddedPictures().size());
 
-        r.addPicture(new ByteArrayInputStream(new byte[0]), Document.PICTURE_TYPE_JPEG, "test.jpg", 21, 32);
+            r.addPicture(new ByteArrayInputStream(new byte[0]), Document.PICTURE_TYPE_JPEG, "test.jpg", 21, 32);
 
-        assertEquals(1, hdr.getAllPictures().size());
-        assertEquals(1, r.getEmbeddedPictures().size());
+            assertEquals(1, hdr.getAllPictures().size());
+            assertEquals(1, r.getEmbeddedPictures().size());
 
-        XWPFPicture pic = r.getEmbeddedPictures().get(0);
-        CTPicture ctPic = pic.getCTPicture();
-        CTBlipFillProperties ctBlipFill = ctPic.getBlipFill();
+            XWPFPicture pic = r.getEmbeddedPictures().get(0);
+            CTPicture ctPic = pic.getCTPicture();
+            CTBlipFillProperties ctBlipFill = ctPic.getBlipFill();
 
-        assertNotNull(ctBlipFill);
+            assertNotNull(ctBlipFill);
 
-        CTBlip ctBlip = ctBlipFill.getBlip();
+            CTBlip ctBlip = ctBlipFill.getBlip();
 
-        assertNotNull(ctBlip);
-        assertEquals("rId1", ctBlip.getEmbed());
+            assertNotNull(ctBlip);
+            assertEquals("rId1", ctBlip.getEmbed());
 
-        XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
-        XWPFHeader hdrBack = docBack.getHeaderArray(0);
-        XWPFParagraph pBack = hdrBack.getParagraphArray(0);
-        XWPFRun rBack = pBack.getRuns().get(0);
+            try (XWPFDocument docBack = writeOutAndReadBack(doc)) {
+                XWPFHeader hdrBack = docBack.getHeaderArray(0);
+                XWPFParagraph pBack = hdrBack.getParagraphArray(0);
+                XWPFRun rBack = pBack.getRuns().get(0);
 
-        assertEquals(1, hdrBack.getAllPictures().size());
-        assertEquals(1, rBack.getEmbeddedPictures().size());
-        docBack.close();
-        doc.close();
+                assertEquals(1, hdrBack.getAllPictures().size());
+                assertEquals(1, rBack.getEmbeddedPictures().size());
+            }
+        }
     }
 
     /**
@@ -554,7 +556,7 @@ class TestXWPFRun {
      */
     @Test
     void testSetFontFamily_52288() throws IOException {
-        try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52288.docx")) {
+        try (XWPFDocument doc = openSampleDocument("52288.docx")) {
             doc.getParagraphs().stream()
                 .flatMap(p -> p.getRuns().stream())
                 .filter(p -> p != null && p.getText(0) != null)
@@ -565,157 +567,148 @@ class TestXWPFRun {
     @Test
     void testBug55476() throws IOException, InvalidFormatException {
         byte[] image = XWPFTestDataSamples.getImage("abstract1.jpg");
-        XWPFDocument document = new XWPFDocument();
+        try (XWPFDocument document = new XWPFDocument()) {
 
-        document.createParagraph().createRun().addPicture(
+            document.createParagraph().createRun().addPicture(
                 new ByteArrayInputStream(image), Document.PICTURE_TYPE_JPEG, "test.jpg", Units.toEMU(300), Units.toEMU(100));
 
-        XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(document);
-        List<XWPFPicture> pictures = docBack.getParagraphArray(0).getRuns().get(0).getEmbeddedPictures();
-        assertEquals(1, pictures.size());
-        docBack.close();
-
-        /*OutputStream stream = new FileOutputStream("c:\\temp\\55476.docx");
-        try {
-            document.write(stream);
-        } finally {
-            stream.close();
-        }*/
-
-        document.close();
+            try (XWPFDocument docBack = writeOutAndReadBack(document)) {
+                List<XWPFPicture> pictures = docBack.getParagraphArray(0).getRuns().get(0).getEmbeddedPictures();
+                assertEquals(1, pictures.size());
+            }
+        }
     }
 
     @Test
     void testBug58922() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-
-        final XWPFRun run = document.createParagraph().createRun();
+        try (XWPFDocument document = new XWPFDocument()) {
 
+            final XWPFRun run = document.createParagraph().createRun();
 
-        assertEquals(-1, run.getFontSize());
 
-        run.setFontSize(10);
-        assertEquals(10, run.getFontSize());
+            assertEquals(-1, run.getFontSize());
 
-        run.setFontSize(Short.MAX_VALUE-1);
-        assertEquals(Short.MAX_VALUE-1, run.getFontSize());
+            run.setFontSize(10);
+            assertEquals(10, run.getFontSize());
 
-        run.setFontSize(Short.MAX_VALUE);
-        assertEquals(Short.MAX_VALUE, run.getFontSize());
+            run.setFontSize(Short.MAX_VALUE - 1);
+            assertEquals(Short.MAX_VALUE - 1, run.getFontSize());
 
-        run.setFontSize(Short.MAX_VALUE+1);
-        assertEquals(Short.MAX_VALUE+1, run.getFontSize());
+            run.setFontSize(Short.MAX_VALUE);
+            assertEquals(Short.MAX_VALUE, run.getFontSize());
 
-        run.setFontSize(Integer.MAX_VALUE-1);
-        assertEquals(Integer.MAX_VALUE-1, run.getFontSize());
+            run.setFontSize(Short.MAX_VALUE + 1);
+            assertEquals(Short.MAX_VALUE + 1, run.getFontSize());
 
-        run.setFontSize(Integer.MAX_VALUE);
-        assertEquals(Integer.MAX_VALUE, run.getFontSize());
+            run.setFontSize(Integer.MAX_VALUE - 1);
+            assertEquals(Integer.MAX_VALUE - 1, run.getFontSize());
 
-        run.setFontSize(-1);
-        assertEquals(-1, run.getFontSize());
+            run.setFontSize(Integer.MAX_VALUE);
+            assertEquals(Integer.MAX_VALUE, run.getFontSize());
 
+            run.setFontSize(-1);
+            assertEquals(-1, run.getFontSize());
 
-        assertEquals(-1, run.getTextPosition());
 
-        run.setTextPosition(10);
-        assertEquals(10, run.getTextPosition());
+            assertEquals(-1, run.getTextPosition());
 
-        run.setTextPosition(Short.MAX_VALUE-1);
-        assertEquals(Short.MAX_VALUE-1, run.getTextPosition());
+            run.setTextPosition(10);
+            assertEquals(10, run.getTextPosition());
 
-        run.setTextPosition(Short.MAX_VALUE);
-        assertEquals(Short.MAX_VALUE, run.getTextPosition());
+            run.setTextPosition(Short.MAX_VALUE - 1);
+            assertEquals(Short.MAX_VALUE - 1, run.getTextPosition());
 
-        run.setTextPosition(Short.MAX_VALUE+1);
-        assertEquals(Short.MAX_VALUE+1, run.getTextPosition());
+            run.setTextPosition(Short.MAX_VALUE);
+            assertEquals(Short.MAX_VALUE, run.getTextPosition());
 
-        run.setTextPosition(Short.MAX_VALUE+1);
-        assertEquals(Short.MAX_VALUE+1, run.getTextPosition());
+            run.setTextPosition(Short.MAX_VALUE + 1);
+            assertEquals(Short.MAX_VALUE + 1, run.getTextPosition());
 
-        run.setTextPosition(Integer.MAX_VALUE-1);
-        assertEquals(Integer.MAX_VALUE-1, run.getTextPosition());
+            run.setTextPosition(Short.MAX_VALUE + 1);
+            assertEquals(Short.MAX_VALUE + 1, run.getTextPosition());
 
-        run.setTextPosition(Integer.MAX_VALUE);
-        assertEquals(Integer.MAX_VALUE, run.getTextPosition());
+            run.setTextPosition(Integer.MAX_VALUE - 1);
+            assertEquals(Integer.MAX_VALUE - 1, run.getTextPosition());
 
-        run.setTextPosition(-1);
-        assertEquals(-1, run.getTextPosition());
+            run.setTextPosition(Integer.MAX_VALUE);
+            assertEquals(Integer.MAX_VALUE, run.getTextPosition());
 
-        document.close();
+            run.setTextPosition(-1);
+            assertEquals(-1, run.getTextPosition());
+        }
     }
 
     @Test
-    void testSetters() {
-        XWPFDocument document = new XWPFDocument();
-        final XWPFRun run = document.createParagraph().createRun();
-
-        // at least trigger some of the setters to ensure classes are included in
-        // the poi-ooxml-lite
-        run.setBold(true);
-        run.setCapitalized(true);
-        run.setCharacterSpacing(2);
-        assertEquals(2, run.getCharacterSpacing());
-        run.setColor("000000");
-        run.setDoubleStrikethrough(true);
-        run.setEmbossed(true);
-        run.setFontFamily("Calibri");
-        assertEquals("Calibri", run.getFontFamily());
-        run.setFontSize(10);
-        assertEquals(10, run.getFontSize());
-        run.setImprinted(true);
-        run.setItalic(true);
+    void testSetters() throws IOException {
+        try (XWPFDocument document = new XWPFDocument()) {
+            final XWPFRun run = document.createParagraph().createRun();
+
+            // at least trigger some of the setters to ensure classes are included in
+            // the poi-ooxml-lite
+            run.setBold(true);
+            run.setCapitalized(true);
+            run.setCharacterSpacing(2);
+            assertEquals(2, run.getCharacterSpacing());
+            run.setColor("000000");
+            run.setDoubleStrikethrough(true);
+            run.setEmbossed(true);
+            run.setFontFamily("Calibri");
+            assertEquals("Calibri", run.getFontFamily());
+            run.setFontSize(10);
+            assertEquals(10, run.getFontSize());
+            run.setImprinted(true);
+            run.setItalic(true);
+        }
     }
 
     @Test
     void testSetGetTextScale() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        final XWPFRun run = document.createParagraph().createRun();
-        assertEquals(100, run.getTextScale());
-        run.setTextScale(200);
-        assertEquals(200, run.getTextScale());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            final XWPFRun run = document.createParagraph().createRun();
+            assertEquals(100, run.getTextScale());
+            run.setTextScale(200);
+            assertEquals(200, run.getTextScale());
+        }
     }
 
     @Test
     void testSetGetTextHighlightColor() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        final XWPFRun run = document.createParagraph().createRun();
-        assertEquals(STHighlightColor.NONE, run.getTextHightlightColor());
-        assertFalse(run.isHighlighted());
-        run.setTextHighlightColor("darkGreen"); // See 17.18.40 ST_HighlightColor (Text Highlight Colors)
-        assertEquals(STHighlightColor.DARK_GREEN, run.getTextHightlightColor());
-        assertTrue(run.isHighlighted());
-        run.setTextHighlightColor("none");
-        assertFalse(run.isHighlighted());
-
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            final XWPFRun run = document.createParagraph().createRun();
+            assertSame(STHighlightColor.NONE, run.getTextHightlightColor());
+            assertFalse(run.isHighlighted());
+            run.setTextHighlightColor("darkGreen"); // See 17.18.40 ST_HighlightColor (Text Highlight Colors)
+            assertSame(STHighlightColor.DARK_GREEN, run.getTextHightlightColor());
+            assertTrue(run.isHighlighted());
+            run.setTextHighlightColor("none");
+            assertFalse(run.isHighlighted());
+        }
     }
 
     @Test
     void testSetGetVanish() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        final XWPFRun run = document.createParagraph().createRun();
-        assertFalse(run.isVanish());
-        run.setVanish(true);
-        assertTrue(run.isVanish());
-        run.setVanish(false);
-        assertFalse(run.isVanish());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            final XWPFRun run = document.createParagraph().createRun();
+            assertFalse(run.isVanish());
+            run.setVanish(true);
+            assertTrue(run.isVanish());
+            run.setVanish(false);
+            assertFalse(run.isVanish());
+        }
     }
 
     @Test
     void testSetGetVerticalAlignment() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        XWPFRun run = document.createParagraph().createRun();
-        assertEquals(STVerticalAlignRun.BASELINE, run.getVerticalAlignment());
-        // Reset to a fresh run so we test case of run not having vertical alignment at all
-        run = document.createParagraph().createRun();
-        run.setVerticalAlignment("subscript");
-        assertEquals(STVerticalAlignRun.SUBSCRIPT, run.getVerticalAlignment());
-        run.setVerticalAlignment("superscript");
-        assertEquals(STVerticalAlignRun.SUPERSCRIPT, run.getVerticalAlignment());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            XWPFRun run = document.createParagraph().createRun();
+            assertSame(STVerticalAlignRun.BASELINE, run.getVerticalAlignment());
+            // Reset to a fresh run so we test case of run not having vertical alignment at all
+            run = document.createParagraph().createRun();
+            run.setVerticalAlignment("subscript");
+            assertSame(STVerticalAlignRun.SUBSCRIPT, run.getVerticalAlignment());
+            run.setVerticalAlignment("superscript");
+            assertSame(STVerticalAlignRun.SUPERSCRIPT, run.getVerticalAlignment());
+        }
     }
 
     @Test
@@ -726,82 +719,81 @@ class TestXWPFRun {
         XWPFRun run = new XWPFRun(ctRun, irb);
 
         run.setSubscript(VerticalAlign.BASELINE);
-        assertEquals(STVerticalAlignRun.BASELINE, rpr.getVertAlignArray(0).getVal());
+        assertSame(STVerticalAlignRun.BASELINE, rpr.getVertAlignArray(0).getVal());
     }
 
     @Test
     void testSetGetEmphasisMark() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        XWPFRun run = document.createParagraph().createRun();
-        assertEquals(STEm.NONE, run.getEmphasisMark());
-        // Reset to a fresh run so we test case of run not having property at all
-        run = document.createParagraph().createRun();
-        run.setEmphasisMark("dot");
-        assertEquals(STEm.DOT, run.getEmphasisMark());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            XWPFRun run = document.createParagraph().createRun();
+            assertSame(STEm.NONE, run.getEmphasisMark());
+            // Reset to a fresh run so we test case of run not having property at all
+            run = document.createParagraph().createRun();
+            run.setEmphasisMark("dot");
+            assertSame(STEm.DOT, run.getEmphasisMark());
+        }
     }
 
     @Test
     void testSetGetUnderlineColor() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        XWPFRun run = document.createParagraph().createRun();
-        assertEquals("auto", run.getUnderlineColor());
-        // Reset to a fresh run so we test case of run not having property at all
-        run = document.createParagraph().createRun();
-        String colorRgb = "C0F1a2";
-        run.setUnderlineColor(colorRgb);
-        assertEquals(colorRgb.toUpperCase(LocaleUtil.getUserLocale()), run.getUnderlineColor());
-        run.setUnderlineColor("auto");
-        assertEquals("auto", run.getUnderlineColor());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            XWPFRun run = document.createParagraph().createRun();
+            assertEquals("auto", run.getUnderlineColor());
+            // Reset to a fresh run so we test case of run not having property at all
+            run = document.createParagraph().createRun();
+            String colorRgb = "C0F1a2";
+            run.setUnderlineColor(colorRgb);
+            assertEquals(colorRgb.toUpperCase(LocaleUtil.getUserLocale()), run.getUnderlineColor());
+            run.setUnderlineColor("auto");
+            assertEquals("auto", run.getUnderlineColor());
+        }
     }
 
     @Test
     void testSetGetUnderlineThemeColor() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        XWPFRun run = document.createParagraph().createRun();
-        assertEquals(STThemeColor.NONE, run.getUnderlineThemeColor());
-        // Reset to a fresh run so we test case of run not having property at all
-        run = document.createParagraph().createRun();
-        String colorName = "accent4";
-        run.setUnderlineThemeColor(colorName);
-        assertEquals(STThemeColor.Enum.forString(colorName), run.getUnderlineThemeColor());
-        run.setUnderlineThemeColor("none");
-        assertEquals(STThemeColor.NONE, run.getUnderlineThemeColor());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            XWPFRun run = document.createParagraph().createRun();
+            assertSame(STThemeColor.NONE, run.getUnderlineThemeColor());
+            // Reset to a fresh run so we test case of run not having property at all
+            run = document.createParagraph().createRun();
+            String colorName = "accent4";
+            run.setUnderlineThemeColor(colorName);
+            assertSame(STThemeColor.Enum.forString(colorName), run.getUnderlineThemeColor());
+            run.setUnderlineThemeColor("none");
+            assertSame(STThemeColor.NONE, run.getUnderlineThemeColor());
+        }
     }
 
 
     @Test
     void testSetStyleId() throws IOException {
-        XWPFDocument document = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
-        final XWPFRun run = document.createParagraph().createRun();
+        try (XWPFDocument document = openSampleDocument("SampleDoc.docx")) {
+            final XWPFRun run = document.createParagraph().createRun();
 
-        String styleId = "bolditalic";
-        run.setStyle(styleId);
-        String candStyleId = run.getCTR().getRPr().getRStyleArray(0).getVal();
-        assertNotNull( candStyleId, "Expected to find a run style ID" );
-        assertEquals(styleId, candStyleId);
+            String styleId = "bolditalic";
+            run.setStyle(styleId);
+            String candStyleId = run.getCTR().getRPr().getRStyleArray(0).getVal();
+            assertNotNull(candStyleId, "Expected to find a run style ID");
+            assertEquals(styleId, candStyleId);
 
-        assertEquals(styleId, run.getStyle());
-
-        document.close();
+            assertEquals(styleId, run.getStyle());
+        }
     }
 
     @Test
     void testGetEmptyStyle() throws IOException {
-        XWPFDocument document = new XWPFDocument();
-        final XWPFRun run = document.createParagraph().createRun();
-        assertEquals("", run.getStyle());
-
-        run.getCTR().addNewRPr();
-        assertEquals("", run.getStyle());
-        document.close();
+        try (XWPFDocument document = new XWPFDocument()) {
+            final XWPFRun run = document.createParagraph().createRun();
+            assertEquals("", run.getStyle());
+
+            run.getCTR().addNewRPr();
+            assertEquals("", run.getStyle());
+        }
     }
 
     @Test
     void testGetDepthWidth() throws IOException, InvalidFormatException {
-        try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx")) {
+        try (XWPFDocument doc = openSampleDocument("TestDocument.docx")) {
             XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT);
             XWPFParagraph p = hdr.createParagraph();
             XWPFRun r = p.createRun();
@@ -827,35 +819,28 @@ class TestXWPFRun {
                 "  The quick brown fox",
                 "\t\tjumped over the lazy dog"
         };
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        try (XWPFDocument doc = new XWPFDocument();) {
+        try (XWPFDocument doc1 = new XWPFDocument()) {
             for(String s : text) {
-                XWPFParagraph p1 = doc.createParagraph();
+                XWPFParagraph p1 = doc1.createParagraph();
                 XWPFRun r1 = p1.createRun();
                 r1.setText(s);
             }
 
-            doc.write(bos);
-            bos.flush();
-        }
-
-        try (
-                ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-                XWPFDocument doc = new XWPFDocument(bis)
-        ) {
-            List<XWPFParagraph> paragraphs = doc.getParagraphs();
-            assertEquals(2, paragraphs.size());
-            for (int i = 0; i < text.length; i++) {
-                XWPFParagraph p1 = paragraphs.get(i);
-                String expected = text[i];
-                assertEquals(expected, p1.getText());
-                CTP ctp = p1.getCTP();
-                CTR ctr = ctp.getRArray(0);
-                CTText ctText = ctr.getTArray(0);
-                // if text has leading whitespace then expect xml-fragment to have xml:space="preserve" set
-                // <xml-fragment xml:space="preserve" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
-                boolean isWhitespace = Character.isWhitespace(expected.charAt(0));
-                assertEquals(isWhitespace, ctText.isSetSpace());
+            try (XWPFDocument doc2 = writeOutAndReadBack(doc1)) {
+                List<XWPFParagraph> paragraphs = doc2.getParagraphs();
+                assertEquals(2, paragraphs.size());
+                for (int i = 0; i < text.length; i++) {
+                    XWPFParagraph p1 = paragraphs.get(i);
+                    String expected = text[i];
+                    assertEquals(expected, p1.getText());
+                    CTP ctp = p1.getCTP();
+                    CTR ctr = ctp.getRArray(0);
+                    CTText ctText = ctr.getTArray(0);
+                    // if text has leading whitespace then expect xml-fragment to have xml:space="preserve" set
+                    // <xml-fragment xml:space="preserve" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+                    boolean isWhitespace = Character.isWhitespace(expected.charAt(0));
+                    assertEquals(isWhitespace, ctText.isSetSpace());
+                }
             }
         }
     }

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hdgf/HDGFLZW.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hdgf/HDGFLZW.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hdgf/HDGFLZW.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hdgf/HDGFLZW.java Fri May 14 00:37:50 2021
@@ -16,11 +16,11 @@
 ==================================================================== */
 package org.apache.poi.hdgf;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.util.LZWDecompresser;
 
 /**
@@ -53,7 +53,7 @@ public class HDGFLZW extends LZWDecompre
     * @throws IOException when the InputStream can't be read
     */
    public byte[] compress(InputStream src) throws IOException {
-      ByteArrayOutputStream res = new ByteArrayOutputStream();
+      UnsynchronizedByteArrayOutputStream res = new UnsynchronizedByteArrayOutputStream();
       compress(src,res);
       return res.toByteArray();
    }

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emf/HemfFill.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emf/HemfFill.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emf/HemfFill.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emf/HemfFill.java Fri May 14 00:37:50 2021
@@ -26,8 +26,6 @@ import java.awt.geom.AffineTransform;
 import java.awt.geom.Area;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -36,6 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.function.Supplier;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hemf.draw.HemfDrawProperties;
 import org.apache.poi.hemf.draw.HemfGraphics;
 import org.apache.poi.hwmf.draw.HwmfGraphics;
@@ -793,14 +792,14 @@ public final class HemfFill {
             return (long)undefinedSpace1 + bitmap.init(leis, dibSize);
         }
 
-        final ByteArrayOutputStream bos = new ByteArrayOutputStream(cbBmi+cbBits);
+        final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(cbBmi+cbBits);
         final long cbBmiSrcAct = IOUtils.copy(leis, bos, cbBmi);
         assert (cbBmiSrcAct == cbBmi);
         leis.skipFully(undefinedSpace2);
         final long cbBitsSrcAct = IOUtils.copy(leis, bos, cbBits);
         assert (cbBitsSrcAct == cbBits);
 
-        final LittleEndianInputStream leisDib = new LittleEndianInputStream(new ByteArrayInputStream(bos.toByteArray()));
+        final LittleEndianInputStream leisDib = new LittleEndianInputStream(bos.toInputStream());
         final int dibSizeAct = bitmap.init(leisDib, dibSize);
         assert (dibSizeAct <= dibSize);
         return (long)undefinedSpace1 + cbBmi + undefinedSpace2 + cbBits;

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java Fri May 14 00:37:50 2021
@@ -27,7 +27,6 @@ import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.AbstractMap;
 import java.util.Arrays;
@@ -41,6 +40,7 @@ import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.common.usermodel.GenericRecord;
 import org.apache.poi.hemf.draw.HemfDrawProperties;
 import org.apache.poi.hemf.draw.HemfGraphics;
@@ -399,7 +399,7 @@ public class HemfPlusBrush {
         }
 
         public byte[] getRawData(List<? extends EmfPlusObjectData> continuedObjectData) {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
             try {
                 bos.write(getBrushBytes());
                 if (continuedObjectData != null) {
@@ -473,6 +473,7 @@ public class HemfPlusBrush {
     public static class EmfPlusHatchBrushData implements EmfPlusBrushData {
         private EmfPlusHatchStyle style;
         private Color foreColor, backColor;
+        @Override
         public long init(LittleEndianInputStream leis, long dataSize) {
             style = EmfPlusHatchStyle.valueOf(leis.readInt());
             foreColor = readARGB(leis.readInt());



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org