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 [15/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/src/test/java/org/apache/poi/hssf/model/TestDrawingShapes.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingShapes.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingShapes.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingShapes.java Fri May 14 00:37:50 2021
@@ -469,152 +469,152 @@ class TestDrawingShapes {
 
     @Test
     void testRemoveShapes() throws IOException {
-        HSSFWorkbook wb1 = new HSSFWorkbook();
-        HSSFSheet sheet = wb1.createSheet();
-        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
+        try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+            HSSFSheet sheet1 = wb1.createSheet();
+            HSSFPatriarch patriarch1 = sheet1.createDrawingPatriarch();
 
-        HSSFSimpleShape rectangle = patriarch.createSimpleShape(new HSSFClientAnchor());
-        rectangle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
+            HSSFSimpleShape rectangle = patriarch1.createSimpleShape(new HSSFClientAnchor());
+            rectangle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
 
-        int idx = wb1.addPicture(new byte[]{1,2,3}, Workbook.PICTURE_TYPE_JPEG);
-        patriarch.createPicture(new HSSFClientAnchor(), idx);
+            int idx = wb1.addPicture(new byte[]{1, 2, 3}, Workbook.PICTURE_TYPE_JPEG);
+            patriarch1.createPicture(new HSSFClientAnchor(), idx);
 
-        patriarch.createCellComment(new HSSFClientAnchor());
+            patriarch1.createCellComment(new HSSFClientAnchor());
 
-        HSSFPolygon polygon = patriarch.createPolygon(new HSSFClientAnchor());
-        polygon.setPoints(new int[]{1,2}, new int[]{2,3});
+            HSSFPolygon polygon1 = patriarch1.createPolygon(new HSSFClientAnchor());
+            polygon1.setPoints(new int[]{1, 2}, new int[]{2, 3});
 
-        patriarch.createTextbox(new HSSFClientAnchor());
+            patriarch1.createTextbox(new HSSFClientAnchor());
 
-        HSSFShapeGroup group = patriarch.createGroup(new HSSFClientAnchor());
-        group.createTextbox(new HSSFChildAnchor());
-        group.createPicture(new HSSFChildAnchor(), idx);
+            HSSFShapeGroup group1 = patriarch1.createGroup(new HSSFClientAnchor());
+            group1.createTextbox(new HSSFChildAnchor());
+            group1.createPicture(new HSSFChildAnchor(), idx);
 
-        assertEquals(patriarch.getChildren().size(), 6);
-        assertEquals(group.getChildren().size(), 2);
+            assertEquals(patriarch1.getChildren().size(), 6);
+            assertEquals(group1.getChildren().size(), 2);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 12);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
+            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch1).getShapeToObjMapping().size(), 12);
+            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch1).getTailRecords().size(), 1);
 
-        HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-        sheet = wb2.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+            try (HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+                HSSFSheet sheet2 = wb2.getSheetAt(0);
+                HSSFPatriarch patriarch2 = sheet2.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 12);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
+                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch2).getShapeToObjMapping().size(), 12);
+                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch2).getTailRecords().size(), 1);
 
-        assertEquals(patriarch.getChildren().size(), 6);
+                assertEquals(patriarch2.getChildren().size(), 6);
 
-        group = (HSSFShapeGroup) patriarch.getChildren().get(5);
-        group.removeShape(group.getChildren().get(0));
+                HSSFShapeGroup group2 = (HSSFShapeGroup) patriarch2.getChildren().get(5);
+                group2.removeShape(group2.getChildren().get(0));
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 10);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
+                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch2).getShapeToObjMapping().size(), 10);
+                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch2).getTailRecords().size(), 1);
 
-        HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2);
-        wb2.close();
-        sheet = wb3.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                try (HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2)) {
+                    HSSFSheet sheet3 = wb3.getSheetAt(0);
+                    HSSFPatriarch patriarch3 = sheet3.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 10);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
+                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch3).getShapeToObjMapping().size(), 10);
+                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch3).getTailRecords().size(), 1);
 
-        group = (HSSFShapeGroup) patriarch.getChildren().get(5);
-        patriarch.removeShape(group);
+                    HSSFShapeGroup group3 = (HSSFShapeGroup) patriarch3.getChildren().get(5);
+                    patriarch3.removeShape(group3);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 8);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
+                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch3).getShapeToObjMapping().size(), 8);
+                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch3).getTailRecords().size(), 1);
 
-        HSSFWorkbook wb4 = HSSFTestDataSamples.writeOutAndReadBack(wb3);
-        wb3.close();
-        sheet = wb4.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                    try (HSSFWorkbook wb4 = HSSFTestDataSamples.writeOutAndReadBack(wb3)) {
+                        HSSFSheet sheet4 = wb4.getSheetAt(0);
+                        HSSFPatriarch patriarch4 = sheet4.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 8);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
-        assertEquals(patriarch.getChildren().size(), 5);
+                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch4).getShapeToObjMapping().size(), 8);
+                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch4).getTailRecords().size(), 1);
+                        assertEquals(patriarch4.getChildren().size(), 5);
 
-        HSSFShape shape = patriarch.getChildren().get(0);
-        patriarch.removeShape(shape);
+                        HSSFShape shape4 = patriarch4.getChildren().get(0);
+                        patriarch4.removeShape(shape4);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 6);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
-        assertEquals(patriarch.getChildren().size(), 4);
+                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch4).getShapeToObjMapping().size(), 6);
+                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch4).getTailRecords().size(), 1);
+                        assertEquals(patriarch4.getChildren().size(), 4);
 
-        HSSFWorkbook wb5 = HSSFTestDataSamples.writeOutAndReadBack(wb4);
-        wb4.close();
-        sheet = wb5.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                        try (HSSFWorkbook wb5 = HSSFTestDataSamples.writeOutAndReadBack(wb4)) {
+                            HSSFSheet sheet5 = wb5.getSheetAt(0);
+                            HSSFPatriarch patriarch5 = sheet5.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 6);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
-        assertEquals(patriarch.getChildren().size(), 4);
+                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch5).getShapeToObjMapping().size(), 6);
+                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch5).getTailRecords().size(), 1);
+                            assertEquals(patriarch5.getChildren().size(), 4);
 
-        HSSFPicture picture = (HSSFPicture) patriarch.getChildren().get(0);
-        patriarch.removeShape(picture);
+                            HSSFPicture picture5 = (HSSFPicture) patriarch5.getChildren().get(0);
+                            patriarch5.removeShape(picture5);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 5);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
-        assertEquals(patriarch.getChildren().size(), 3);
+                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch5).getShapeToObjMapping().size(), 5);
+                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch5).getTailRecords().size(), 1);
+                            assertEquals(patriarch5.getChildren().size(), 3);
 
-        HSSFWorkbook wb6 = HSSFTestDataSamples.writeOutAndReadBack(wb5);
-        wb5.close();
-        sheet = wb6.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                            try (HSSFWorkbook wb6 = HSSFTestDataSamples.writeOutAndReadBack(wb5)) {
+                                HSSFSheet sheet6 = wb6.getSheetAt(0);
+                                HSSFPatriarch patriarch6 = sheet6.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 5);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 1);
-        assertEquals(patriarch.getChildren().size(), 3);
+                                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch6).getShapeToObjMapping().size(), 5);
+                                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch6).getTailRecords().size(), 1);
+                                assertEquals(patriarch6.getChildren().size(), 3);
 
-        HSSFComment comment = (HSSFComment) patriarch.getChildren().get(0);
-        patriarch.removeShape(comment);
+                                HSSFComment comment6 = (HSSFComment) patriarch6.getChildren().get(0);
+                                patriarch6.removeShape(comment6);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 3);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 2);
+                                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch6).getShapeToObjMapping().size(), 3);
+                                assertEquals(HSSFTestHelper.getEscherAggregate(patriarch6).getTailRecords().size(), 0);
+                                assertEquals(patriarch6.getChildren().size(), 2);
 
-        HSSFWorkbook wb7 = HSSFTestDataSamples.writeOutAndReadBack(wb6);
-        wb6.close();
-        sheet = wb7.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                                try (HSSFWorkbook wb7 = HSSFTestDataSamples.writeOutAndReadBack(wb6)) {
+                                    HSSFSheet sheet7 = wb7.getSheetAt(0);
+                                    HSSFPatriarch patriarch7 = sheet7.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 3);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 2);
+                                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch7).getShapeToObjMapping().size(), 3);
+                                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch7).getTailRecords().size(), 0);
+                                    assertEquals(patriarch7.getChildren().size(), 2);
 
-        polygon = (HSSFPolygon) patriarch.getChildren().get(0);
-        patriarch.removeShape(polygon);
+                                    HSSFPolygon polygon7 = (HSSFPolygon) patriarch7.getChildren().get(0);
+                                    patriarch7.removeShape(polygon7);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 2);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 1);
+                                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch7).getShapeToObjMapping().size(), 2);
+                                    assertEquals(HSSFTestHelper.getEscherAggregate(patriarch7).getTailRecords().size(), 0);
+                                    assertEquals(patriarch7.getChildren().size(), 1);
 
-        HSSFWorkbook wb8 = HSSFTestDataSamples.writeOutAndReadBack(wb7);
-        wb7.close();
-        sheet = wb8.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                                    try (HSSFWorkbook wb8 = HSSFTestDataSamples.writeOutAndReadBack(wb7)) {
+                                        HSSFSheet sheet8 = wb8.getSheetAt(0);
+                                        HSSFPatriarch patriarch8 = sheet8.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 2);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 1);
+                                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch8).getShapeToObjMapping().size(), 2);
+                                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch8).getTailRecords().size(), 0);
+                                        assertEquals(patriarch8.getChildren().size(), 1);
 
-        HSSFTextbox textbox = (HSSFTextbox) patriarch.getChildren().get(0);
-        patriarch.removeShape(textbox);
+                                        HSSFTextbox textbox8 = (HSSFTextbox) patriarch8.getChildren().get(0);
+                                        patriarch8.removeShape(textbox8);
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 0);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 0);
+                                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch8).getShapeToObjMapping().size(), 0);
+                                        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch8).getTailRecords().size(), 0);
+                                        assertEquals(patriarch8.getChildren().size(), 0);
 
-        HSSFWorkbook wb9 = HSSFTestDataSamples.writeOutAndReadBack(wb8);
-        wb8.close();
-        sheet = wb9.getSheetAt(0);
-        patriarch = sheet.getDrawingPatriarch();
+                                        try (HSSFWorkbook wb9 = HSSFTestDataSamples.writeOutAndReadBack(wb8)) {
+                                            HSSFSheet sheet9 = wb9.getSheetAt(0);
+                                            HSSFPatriarch patriarch9 = sheet9.getDrawingPatriarch();
 
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getShapeToObjMapping().size(), 0);
-        assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);
-        assertEquals(patriarch.getChildren().size(), 0);
-        wb9.close();
+                                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch9).getShapeToObjMapping().size(), 0);
+                                            assertEquals(HSSFTestHelper.getEscherAggregate(patriarch9).getTailRecords().size(), 0);
+                                            assertEquals(patriarch9.getChildren().size(), 0);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
     }
 
     @Test

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java Fri May 14 00:37:50 2021
@@ -17,20 +17,16 @@
 
 package org.apache.poi.hssf.model;
 
-import static org.apache.poi.ddf.DefaultEscherRecordFactory.isContainer;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 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.assertTrue;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
-import java.util.Random;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ddf.EscherContainerRecord;
-import org.apache.poi.ddf.EscherTextboxRecord;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.EscherAggregate;
 import org.apache.poi.hssf.record.Record;
@@ -43,7 +39,7 @@ import org.junit.jupiter.api.Test;
 class TestEscherRecordFactory {
 
     private static byte[] toByteArray(List<RecordBase> records) {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
         for (RecordBase rb : records) {
             Record r = (org.apache.poi.hssf.record.Record) rb;
             try {
@@ -56,31 +52,6 @@ class TestEscherRecordFactory {
     }
 
     @Test
-    void testDetectContainer() {
-        Random rnd = new Random();
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.DG_CONTAINER));
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.SOLVER_CONTAINER));
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.SP_CONTAINER));
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.DGG_CONTAINER));
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.BSTORE_CONTAINER));
-        assertTrue(isContainer((short) 0x0, EscherContainerRecord.SPGR_CONTAINER));
-
-        for (short i=EscherContainerRecord.DGG_CONTAINER; i<= EscherContainerRecord.SOLVER_CONTAINER; i++){
-            assertTrue(isContainer(Integer.valueOf(rnd.nextInt(Short.MAX_VALUE)).shortValue(), i));
-        }
-
-        assertFalse(isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue()));
-        assertFalse(isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.SOLVER_CONTAINER + 1).shortValue()));
-
-        assertTrue(isContainer((short) 0x000F, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue()));
-        assertTrue(isContainer((short) 0xFFFF, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue()));
-        assertFalse(isContainer((short) 0x000C, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue()));
-        assertFalse(isContainer((short) 0xCCCC, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue()));
-        assertFalse(isContainer((short) 0x000F, EscherTextboxRecord.RECORD_ID));
-        assertFalse(isContainer((short) 0xCCCC, EscherTextboxRecord.RECORD_ID));
-    }
-
-    @Test
     void testDgContainerMustBeRootOfHSSFSheetEscherRecords() {
         HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("47251.xls");
         HSSFSheet sh = wb.getSheetAt(0);

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java Fri May 14 00:37:50 2021
@@ -24,10 +24,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.util.LittleEndianOutputStream;
 import org.junit.jupiter.api.Test;
 
@@ -209,7 +209,7 @@ class TestDConRefRecord {
     private void testReadWrite(byte[] data, String message) throws IOException {
         RecordInputStream is = TestcaseRecordInputStream.create(81, data);
         DConRefRecord d = new DConRefRecord(is);
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(data.length);
         LittleEndianOutputStream o = new LittleEndianOutputStream(bos);
         d.serialize(o);
         o.flush();

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java Fri May 14 00:37:50 2021
@@ -21,12 +21,11 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.junit.jupiter.api.Test;
 
 final class TestDrawingRecord {
@@ -39,7 +38,7 @@ final class TestDrawingRecord {
     void testReadContinued() throws IOException {
 
         //simulate a continues drawing record
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
         //main part
         DrawingRecord dg = new DrawingRecord();
         byte[] data1 = new byte[8224];
@@ -53,7 +52,7 @@ final class TestDrawingRecord {
         ContinueRecord cn = new ContinueRecord(data2);
         out.write(cn.serialize());
 
-        List<org.apache.poi.hssf.record.Record> rec = RecordFactory.createRecords(new ByteArrayInputStream(out.toByteArray()));
+        List<org.apache.poi.hssf.record.Record> rec = RecordFactory.createRecords(out.toInputStream());
         assertEquals(2, rec.size());
         assertTrue(rec.get(0) instanceof DrawingRecord);
         assertTrue(rec.get(1) instanceof ContinueRecord);

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java Fri May 14 00:37:50 2021
@@ -25,9 +25,9 @@ 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 org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ss.formula.ptg.AreaPtg;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.HexRead;
@@ -166,7 +166,7 @@ final class TestLbsDataSubRecord {
         try (LittleEndianInputStream in = new LittleEndianInputStream(new ByteArrayInputStream(data))) {
             LbsDataSubRecord.LbsDropData lbs = new LbsDataSubRecord.LbsDropData(in);
 
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
             try (LittleEndianOutputStream out = new LittleEndianOutputStream(baos)) {
                 lbs.serialize(out);
 

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java Fri May 14 00:37:50 2021
@@ -22,11 +22,11 @@ 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.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.HexRead;
 import org.junit.jupiter.api.Test;
@@ -185,7 +185,7 @@ final class TestRecordFactory {
 		assertTrue(records.get(4) instanceof ObjRecord);
 
 		//serialize and verify that the serialized data is the same as the original
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
 		for(org.apache.poi.hssf.record.Record rec : records){
 			out.write(rec.serialize());
 		}
@@ -204,7 +204,7 @@ final class TestRecordFactory {
 			BOFRecord.createSheetBOF(),
 			EOFRecord.instance,
 		};
-		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
 		for (org.apache.poi.hssf.record.Record rec : recs) {
 			try {
 				baos.write(rec.serialize());
@@ -222,13 +222,13 @@ final class TestRecordFactory {
 		}
 
 
-		POIFSFileSystem fs = new POIFSFileSystem();
-        fs.createDocument(new ByteArrayInputStream(baos.toByteArray()), "dummy");
-		InputStream is = fs.getRoot().createDocumentInputStream("dummy");
-
-		List<org.apache.poi.hssf.record.Record> outRecs = RecordFactory.createRecords(is);
-		// Buffer underrun - requested 512 bytes but 192 was available
-		assertEquals(5, outRecs.size());
-		fs.close();
+		try (POIFSFileSystem fs = new POIFSFileSystem()) {
+			fs.createDocument(baos.toInputStream(), "dummy");
+			InputStream is = fs.getRoot().createDocumentInputStream("dummy");
+
+			List<org.apache.poi.hssf.record.Record> outRecs = RecordFactory.createRecords(is);
+			// Buffer underrun - requested 512 bytes but 192 was available
+			assertEquals(5, outRecs.size());
+		}
 	}
 }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java Fri May 14 00:37:50 2021
@@ -24,13 +24,13 @@ import static org.junit.jupiter.api.Asse
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Arrays;
 import java.util.Iterator;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -49,7 +49,7 @@ final class TestSSTRecord {
      */
     private static byte[] concatHexDumps(String... hexDumpFileNames) throws IOException {
         int nFiles = hexDumpFileNames.length;
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(nFiles * 8228);
+        UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(nFiles * 8228);
         for (String sampleFileName : hexDumpFileNames) {
             try (InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName)) {
                 BufferedReader br = new BufferedReader(new InputStreamReader(is, LocaleUtil.CHARSET_1252));

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java Fri May 14 00:37:50 2021
@@ -21,10 +21,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hssf.record.ContinueRecord;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
@@ -36,11 +36,11 @@ import org.apache.poi.ss.usermodel.CellS
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.util.LittleEndianByteArrayInputStream;
-import org.apache.poi.util.LittleEndianByteArrayOutputStream;
 import org.apache.poi.util.LittleEndianConsts;
 import org.apache.poi.util.LittleEndianInput;
 import org.apache.poi.util.LittleEndianInputStream;
 import org.apache.poi.util.LittleEndianOutputStream;
+import org.apache.poi.util.LittleEndianByteArrayOutputStream;
 import org.apache.poi.util.StringUtil;
 import org.junit.jupiter.api.Test;
 
@@ -185,7 +185,7 @@ final class TestUnicodeString {
        assertEquals(4, fr.getCharacterPos());
        assertEquals(0x15c, fr.getFontIndex());
 
-       ByteArrayOutputStream baos = new ByteArrayOutputStream();
+       UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
        LittleEndianOutputStream out = new LittleEndianOutputStream(baos);
 
        fr.serialize(out);
@@ -216,7 +216,7 @@ final class TestUnicodeString {
        assertEquals(0, ext.getPhRuns().length);
        assertEquals(10, ext.getDataSize()); // Excludes 4 byte header
 
-       ByteArrayOutputStream baos = new ByteArrayOutputStream();
+       UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
        LittleEndianOutputStream out = new LittleEndianOutputStream(baos);
        ContinuableRecordOutput cout = new ContinuableRecordOutput(out, 0xffff);
 

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java Fri May 14 00:37:50 2021
@@ -24,7 +24,6 @@ import static org.junit.jupiter.api.Asse
 
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
@@ -46,6 +45,7 @@ import java.util.stream.IntStream;
 
 import javax.imageio.ImageIO;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hpsf.PropertySet;
 import org.apache.poi.hpsf.SummaryInformation;
 import org.apache.poi.hssf.HSSFITestDataProvider;
@@ -1175,9 +1175,9 @@ final class TestBugs extends BaseTestBug
     @Test
     void bug32191() throws IOException {
         try (HSSFWorkbook wb = openSampleWorkbook("27394.xls");
-             ByteArrayOutputStream out1 = new ByteArrayOutputStream();
-             ByteArrayOutputStream out2 = new ByteArrayOutputStream();
-             ByteArrayOutputStream out3 = new ByteArrayOutputStream()) {
+             UnsynchronizedByteArrayOutputStream out1 = new UnsynchronizedByteArrayOutputStream();
+             UnsynchronizedByteArrayOutputStream out2 = new UnsynchronizedByteArrayOutputStream();
+             UnsynchronizedByteArrayOutputStream out3 = new UnsynchronizedByteArrayOutputStream()) {
             wb.write(out1);
             wb.write(out2);
             wb.write(out3);
@@ -2220,7 +2220,7 @@ final class TestBugs extends BaseTestBug
 
     /**
      * Read, write, read for formulas point to cells in other files.
-     * See {@link #bug46670()} for the main test, this just
+     * See bug46670() for the main test, this just
      * covers reading an existing file and checking it.
      *
      * See base-test-class for some related tests that still fail
@@ -2331,7 +2331,7 @@ final class TestBugs extends BaseTestBug
             }
 
             // Convert BufferedImage to byte[]
-            ByteArrayOutputStream imageBAOS = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream imageBAOS = new UnsynchronizedByteArrayOutputStream();
             ImageIO.write(bimage, "jpeg", imageBAOS);
             imageBAOS.flush();
             byte[] imageBytes = imageBAOS.toByteArray();
@@ -2552,7 +2552,7 @@ final class TestBugs extends BaseTestBug
         "46904.xls, org.apache.poi.hssf.OldExcelFormatException, The supplied spreadsheet seems to be Excel",
         "51832.xls, org.apache.poi.EncryptedDocumentException, Default password is invalid for salt/verifier/verifierHash"
     })
-    void simpleTest(String fileName, String exClazz, String exMessage) throws IOException, ClassNotFoundException {
+    void simpleTest(String fileName, String exClazz, String exMessage) throws ClassNotFoundException {
         Class<? extends Exception> ex = (Class<? extends Exception>)Class.forName(exClazz);
         Exception e = assertThrows(ex, () -> simpleTest(fileName, null));
         assertTrue(e.getMessage().startsWith(exMessage));

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java Fri May 14 00:37:50 2021
@@ -24,13 +24,13 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hssf.HSSFITestDataProvider;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.DVRecord;
@@ -61,7 +61,7 @@ final class TestDataValidation extends B
 	void assertDataValidation(Workbook wb) {
 
         byte[] generatedContent;
-		try (ByteArrayOutputStream baos = new ByteArrayOutputStream(22000)) {
+		try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(22000)) {
 			wb.write(baos);
             generatedContent = baos.toByteArray();
 		} catch (IOException e) {
@@ -133,7 +133,7 @@ final class TestDataValidation extends B
 
             sheet.addValidationData(dv);
 
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
             wb.write(baos);
 
             byte[] wbData = baos.toByteArray();

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java Fri May 14 00:37:50 2021
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -24,8 +25,6 @@ import static org.junit.jupiter.api.Asse
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.FontMetrics;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
 import org.junit.jupiter.api.AfterEach;
@@ -46,7 +45,7 @@ final class TestEscherGraphics {
     private EscherGraphics graphics;
 
     @BeforeEach
-    void setUp() throws IOException {
+    void setUp() {
         workbook = new HSSFWorkbook();
 
         HSSFSheet sheet = workbook.createSheet("test");
@@ -82,7 +81,7 @@ final class TestEscherGraphics {
 
     @Test
     void testSetFont() {
-        Font f = new Font("Helvetica", 0, 12);
+        Font f = new Font("Helvetica", Font.PLAIN, 12);
         graphics.setFont(f);
         assertEquals(f, graphics.getFont());
     }
@@ -112,18 +111,15 @@ final class TestEscherGraphics {
     }
 
     @Test
-    void testGetDataBackAgain() throws Exception {
+    void testGetDataBackAgain() {
     	HSSFSheet s;
     	HSSFShapeGroup s1;
     	HSSFShapeGroup s2;
 
     	patriarch.setCoordinates(10, 20, 30, 40);
 
-    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    	workbook.write(baos);
-    	workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-    	s = workbook.getSheetAt(0);
-
+		workbook = writeOutAndReadBack(workbook);
+		s = workbook.getSheetAt(0);
     	patriarch = s.getDrawingPatriarch();
 
     	assertNotNull(patriarch);
@@ -160,11 +156,9 @@ final class TestEscherGraphics {
 
 
     	// Write and re-load once more, to check that's ok
-    	baos = new ByteArrayOutputStream();
-    	workbook.write(baos);
-    	workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-    	s = workbook.getSheetAt(0);
-    	patriarch = s.getDrawingPatriarch();
+		workbook = writeOutAndReadBack(workbook);
+		s = workbook.getSheetAt(0);
+		patriarch = s.getDrawingPatriarch();
 
     	assertNotNull(patriarch);
     	assertEquals(10, patriarch.getX1());
@@ -202,11 +196,9 @@ final class TestEscherGraphics {
     	//  but not of their anchors
     	s1.setCoordinates(2, 3, 1021, 242);
 
-    	baos = new ByteArrayOutputStream();
-    	workbook.write(baos);
-    	workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-    	s = workbook.getSheetAt(0);
-    	patriarch = s.getDrawingPatriarch();
+		workbook = writeOutAndReadBack(workbook);
+		s = workbook.getSheetAt(0);
+		patriarch = s.getDrawingPatriarch();
 
     	assertNotNull(patriarch);
     	assertEquals(10, patriarch.getX1());
@@ -254,12 +246,9 @@ final class TestEscherGraphics {
     	assertEquals(3, patriarch.getChildren().size());
 
 
-    	baos = new ByteArrayOutputStream();
-    	workbook.write(baos);
-    	workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-    	s = workbook.getSheetAt(0);
-
-    	patriarch = s.getDrawingPatriarch();
+		workbook = writeOutAndReadBack(workbook);
+		s = workbook.getSheetAt(0);
+		patriarch = s.getDrawingPatriarch();
 
     	assertNotNull(patriarch);
     	assertEquals(10, patriarch.getX1());

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFPicture.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFPicture.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFPicture.java Fri May 14 00:37:50 2021
@@ -47,6 +47,7 @@ final class TestHSSFPicture extends Base
         super(HSSFITestDataProvider.instance);
     }
 
+    @Override
     protected Picture getPictureShape(Drawing<?> pat, int picIdx) {
         return (Picture)((HSSFPatriarch)pat).getChildren().get(picIdx);
     }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Fri May 14 00:37:50 2021
@@ -28,8 +28,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -41,6 +39,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.POIDataSamples;
 import org.apache.poi.ddf.EscherBSERecord;
 import org.apache.poi.hpsf.ClassID;
@@ -72,6 +71,7 @@ import org.apache.poi.ss.usermodel.Workb
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.TempFile;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
@@ -554,21 +554,17 @@ public final class TestHSSFWorkbook exte
      */
     @Test
     void bug47920() throws IOException {
-        POIFSFileSystem fs1 = new POIFSFileSystem(samples.openResourceAsStream("47920.xls"));
-        HSSFWorkbook wb = new HSSFWorkbook(fs1);
-        ClassID clsid1 = fs1.getRoot().getStorageClsid();
-
-        ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
-        wb.write(out);
-        byte[] bytes = out.toByteArray();
-        POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(bytes));
-        ClassID clsid2 = fs2.getRoot().getStorageClsid();
-
-        assertEquals(clsid1, clsid2);
-
-        fs2.close();
-        wb.close();
-        fs1.close();
+        try (POIFSFileSystem fs1 = new POIFSFileSystem(samples.openResourceAsStream("47920.xls"));
+             HSSFWorkbook wb = new HSSFWorkbook(fs1)) {
+            ClassID clsid1 = fs1.getRoot().getStorageClsid();
+
+            UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(4096);
+            wb.write(out);
+            try (POIFSFileSystem fs2 = new POIFSFileSystem(out.toInputStream())) {
+                ClassID clsid2 = fs2.getRoot().getStorageClsid();
+                assertEquals(clsid1, clsid2);
+            }
+        }
     }
 
     /**
@@ -582,8 +578,7 @@ public final class TestHSSFWorkbook exte
         "testEXCEL_95.xls,BIFF5"
     })
     void helpfulExceptionOnOldFiles(String file, String format) throws Exception {
-        POIDataSamples xlsData = samples;
-        try (InputStream is = xlsData.openResourceAsStream(file)) {
+        try (InputStream is = samples.openResourceAsStream(file)) {
             OldExcelFormatException e = assertThrows(OldExcelFormatException.class, () -> new HSSFWorkbook(is),
                 "Shouldn't be able to load an Excel " + format + " file");
             assertContains(e.getMessage(), format);
@@ -978,7 +973,7 @@ public final class TestHSSFWorkbook exte
         assertNotNull(name);
         assertEquals("ASheet!A1", name.getRefersToFormula());
 
-		ByteArrayOutputStream stream = new ByteArrayOutputStream();
+		UnsynchronizedByteArrayOutputStream stream = new UnsynchronizedByteArrayOutputStream();
 		wb.write(stream);
 
 		assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3", "ASheet");
@@ -989,15 +984,15 @@ public final class TestHSSFWorkbook exte
 		assertSheetOrder(wb, "Sheet1", "Sheet3", "ASheet");
 		assertEquals("ASheet!A1", name.getRefersToFormula());
 
-		ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
+		UnsynchronizedByteArrayOutputStream stream2 = new UnsynchronizedByteArrayOutputStream();
 		wb.write(stream2);
 
 		assertSheetOrder(wb, "Sheet1", "Sheet3", "ASheet");
 		assertEquals("ASheet!A1", name.getRefersToFormula());
 
-		HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(stream.toByteArray()));
+		HSSFWorkbook wb2 = new HSSFWorkbook(stream.toInputStream());
 		expectName(wb2, nameName, "ASheet!A1");
-		HSSFWorkbook wb3 = new HSSFWorkbook(new ByteArrayInputStream(stream2.toByteArray()));
+		HSSFWorkbook wb3 = new HSSFWorkbook(stream2.toInputStream());
 		expectName(wb3, nameName, "ASheet!A1");
 		wb3.close();
 		wb2.close();
@@ -1078,7 +1073,7 @@ public final class TestHSSFWorkbook exte
 
     private void writeAndCloseWorkbook(Workbook workbook, File file)
     throws IOException {
-        final ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+        final UnsynchronizedByteArrayOutputStream bytesOut = new UnsynchronizedByteArrayOutputStream();
         workbook.write(bytesOut);
         workbook.close();
 
@@ -1183,7 +1178,8 @@ public final class TestHSSFWorkbook exte
         }
     }
 
-    void createDrawing() throws Exception {
+    @Disabled
+    void createDrawing() {
         // the dimensions for this image are different than for XSSF and SXSSF
     }
 }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java Fri May 14 00:37:50 2021
@@ -21,12 +21,11 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
@@ -60,73 +59,70 @@ final class TestOLE2Embeding {
 
     @Test
     void testReallyEmbedSomething() throws Exception {
-    	HSSFWorkbook wb1 = new HSSFWorkbook();
-    	HSSFSheet sheet = wb1.createSheet();
-    	HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
-
-    	byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("logoKarmokar4.png");
-    	byte[] picturePPT = POIDataSamples.getSlideShowInstance().readFile("clock.jpg");
-    	int imgIdx = wb1.addPicture(pictureData, HSSFWorkbook.PICTURE_TYPE_PNG);
-    	POIFSFileSystem pptPoifs = getSamplePPT();
-    	int pptIdx = wb1.addOlePackage(pptPoifs, "Sample-PPT", "sample.ppt", "sample.ppt");
-    	POIFSFileSystem xlsPoifs = getSampleXLS();
-    	int imgPPT = wb1.addPicture(picturePPT, HSSFWorkbook.PICTURE_TYPE_JPEG);
-    	int xlsIdx = wb1.addOlePackage(xlsPoifs, "Sample-XLS", "sample.xls", "sample.xls");
-    	int txtIdx = wb1.addOlePackage(getSampleTXT(), "Sample-TXT", "sample.txt", "sample.txt");
-
-        int rowoffset = 5;
-        int coloffset = 5;
-
-        CreationHelper ch = wb1.getCreationHelper();
-        HSSFClientAnchor anchor = (HSSFClientAnchor)ch.createClientAnchor();
-        anchor.setAnchor((short)(2+coloffset), 1+rowoffset, 0, 0, (short)(3+coloffset), 5+rowoffset, 0, 0);
-        anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
-
-        patriarch.createObjectData(anchor, pptIdx, imgPPT);
-
-        anchor = (HSSFClientAnchor)ch.createClientAnchor();
-        anchor.setAnchor((short)(5+coloffset), 1+rowoffset, 0, 0, (short)(6+coloffset), 5+rowoffset, 0, 0);
-        anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
-
-        patriarch.createObjectData(anchor, xlsIdx, imgIdx);
-
-        anchor = (HSSFClientAnchor)ch.createClientAnchor();
-        anchor.setAnchor((short)(3+coloffset), 10+rowoffset, 0, 0, (short)(5+coloffset), 11+rowoffset, 0, 0);
-        anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
-
-        patriarch.createObjectData(anchor, txtIdx, imgIdx);
-
-        anchor = (HSSFClientAnchor)ch.createClientAnchor();
-        anchor.setAnchor((short)(1+coloffset), -2+rowoffset, 0, 0, (short)(7+coloffset), 14+rowoffset, 0, 0);
-        anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
-
-        HSSFSimpleShape circle = patriarch.createSimpleShape(anchor);
-        circle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
-        circle.setNoFill(true);
-
-        HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        HSSFObjectData od = wb2.getAllEmbeddedObjects().get(0);
-        Ole10Native ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode)od.getDirectory());
-        bos.reset();
-        pptPoifs.writeFilesystem(bos);
-        assertArrayEquals(ole10.getDataBuffer(), bos.toByteArray());
-
-        od = wb2.getAllEmbeddedObjects().get(1);
-        ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode)od.getDirectory());
-        bos.reset();
-        xlsPoifs.writeFilesystem(bos);
-        assertArrayEquals(ole10.getDataBuffer(), bos.toByteArray());
-
-        od = wb2.getAllEmbeddedObjects().get(2);
-        ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode)od.getDirectory());
-        assertArrayEquals(ole10.getDataBuffer(), getSampleTXT());
-
-        xlsPoifs.close();
-        pptPoifs.close();
-        wb2.close();
+    	try (HSSFWorkbook wb1 = new HSSFWorkbook();
+             POIFSFileSystem pptPoifs = getSamplePPT();
+             POIFSFileSystem xlsPoifs = getSampleXLS()) {
+            HSSFSheet sheet = wb1.createSheet();
+            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
+
+            byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("logoKarmokar4.png");
+            byte[] picturePPT = POIDataSamples.getSlideShowInstance().readFile("clock.jpg");
+            int imgIdx = wb1.addPicture(pictureData, HSSFWorkbook.PICTURE_TYPE_PNG);
+
+            int pptIdx = wb1.addOlePackage(pptPoifs, "Sample-PPT", "sample.ppt", "sample.ppt");
+            int imgPPT = wb1.addPicture(picturePPT, HSSFWorkbook.PICTURE_TYPE_JPEG);
+            int xlsIdx = wb1.addOlePackage(xlsPoifs, "Sample-XLS", "sample.xls", "sample.xls");
+            int txtIdx = wb1.addOlePackage(getSampleTXT(), "Sample-TXT", "sample.txt", "sample.txt");
+
+            int rowoffset = 5;
+            int coloffset = 5;
+
+            CreationHelper ch = wb1.getCreationHelper();
+            HSSFClientAnchor anchor = (HSSFClientAnchor) ch.createClientAnchor();
+            anchor.setAnchor((short) (2 + coloffset), 1 + rowoffset, 0, 0, (short) (3 + coloffset), 5 + rowoffset, 0, 0);
+            anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
+
+            patriarch.createObjectData(anchor, pptIdx, imgPPT);
+
+            anchor = (HSSFClientAnchor) ch.createClientAnchor();
+            anchor.setAnchor((short) (5 + coloffset), 1 + rowoffset, 0, 0, (short) (6 + coloffset), 5 + rowoffset, 0, 0);
+            anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
+
+            patriarch.createObjectData(anchor, xlsIdx, imgIdx);
+
+            anchor = (HSSFClientAnchor) ch.createClientAnchor();
+            anchor.setAnchor((short) (3 + coloffset), 10 + rowoffset, 0, 0, (short) (5 + coloffset), 11 + rowoffset, 0, 0);
+            anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
+
+            patriarch.createObjectData(anchor, txtIdx, imgIdx);
+
+            anchor = (HSSFClientAnchor) ch.createClientAnchor();
+            anchor.setAnchor((short) (1 + coloffset), -2 + rowoffset, 0, 0, (short) (7 + coloffset), 14 + rowoffset, 0, 0);
+            anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
+
+            HSSFSimpleShape circle = patriarch.createSimpleShape(anchor);
+            circle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
+            circle.setNoFill(true);
+
+            try (HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+                UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
+                HSSFObjectData od = wb2.getAllEmbeddedObjects().get(0);
+                Ole10Native ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode) od.getDirectory());
+                bos.reset();
+                pptPoifs.writeFilesystem(bos);
+                assertArrayEquals(ole10.getDataBuffer(), bos.toByteArray());
+
+                od = wb2.getAllEmbeddedObjects().get(1);
+                ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode) od.getDirectory());
+                bos.reset();
+                xlsPoifs.writeFilesystem(bos);
+                assertArrayEquals(ole10.getDataBuffer(), bos.toByteArray());
+
+                od = wb2.getAllEmbeddedObjects().get(2);
+                ole10 = Ole10Native.createFromEmbeddedOleObject((DirectoryNode) od.getDirectory());
+                assertArrayEquals(ole10.getDataBuffer(), getSampleTXT());
+            }
+        }
     }
 
     static POIFSFileSystem getSamplePPT() throws IOException {
@@ -139,15 +135,15 @@ final class TestOLE2Embeding {
     }
 
     static POIFSFileSystem getSampleXLS() throws IOException {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet sheet = wb.createSheet();
-        sheet.createRow(5).createCell(2).setCellValue("yo dawg i herd you like embeddet objekts, so we put a ole in your ole so you can save a file while you save a file");
-
-    	ByteArrayOutputStream bos = new ByteArrayOutputStream();
-    	wb.write(bos);
-    	wb.close();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
+        try (HSSFWorkbook wb = new HSSFWorkbook()) {
+            HSSFSheet sheet = wb.createSheet();
+            sheet.createRow(5).createCell(2).setCellValue("yo dawg i herd you like embeddet objekts, so we put a ole in your ole so you can save a file while you save a file");
+
+            wb.write(bos);
+        }
 
-        return new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()));
+        return new POIFSFileSystem(bos.toInputStream());
     }
 
     static byte[] getSampleTXT() {

Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java Fri May 14 00:37:50 2021
@@ -21,11 +21,14 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.poi.hpsf.*;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
+import org.apache.poi.hpsf.NoPropertySetStreamException;
+import org.apache.poi.hpsf.PropertySetFactory;
+import org.apache.poi.hpsf.SummaryInformation;
+import org.apache.poi.hpsf.WritingNotSupportedException;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.HexDump;
@@ -38,12 +41,11 @@ class TestPOIFSProperties {
     private static final String title = "Testing POIFS properties";
 
     @Test
-    void testFail() throws Exception {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        { // read the workbook, adjust the SummaryInformation and write the data to a byte array
-            POIFSFileSystem fs = openFileSystem();
-
-            HSSFWorkbook wb = new HSSFWorkbook(fs);
+    void testFail() throws IOException, NoPropertySetStreamException, WritingNotSupportedException {
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
+        // read the workbook, adjust the SummaryInformation and write the data to a byte array
+        try (POIFSFileSystem fs = openFileSystem();
+             HSSFWorkbook wb = new HSSFWorkbook(fs)) {
 
             //set POIFS properties after constructing HSSFWorkbook
             //(a piece of code that used to work up to POI 3.0.2)
@@ -51,8 +53,6 @@ class TestPOIFSProperties {
 
             //save the workbook and read the property
             wb.write(out);
-            out.close();
-            wb.close();
         }
 
         // process the byte array
@@ -61,18 +61,16 @@ class TestPOIFSProperties {
 
     @Test
     void testOK() throws Exception {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        { // read the workbook, adjust the SummaryInformation and write the data to a byte array
-            POIFSFileSystem fs = openFileSystem();
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
+        // read the workbook, adjust the SummaryInformation and write the data to a byte array
+        try (POIFSFileSystem fs = openFileSystem()) {
 
             //set POIFS properties before constructing HSSFWorkbook
             setTitle(fs);
 
-            HSSFWorkbook wb = new HSSFWorkbook(fs);
-
-            wb.write(out);
-            out.close();
-            wb.close();
+            try (HSSFWorkbook wb = new HSSFWorkbook(fs)) {
+                wb.write(out);
+            }
         }
 
         // process the byte array
@@ -80,13 +78,12 @@ class TestPOIFSProperties {
     }
 
     private POIFSFileSystem openFileSystem() throws IOException {
-        InputStream is = HSSFTestDataSamples.openSampleFileStream("Simple.xls");
-        POIFSFileSystem fs = new POIFSFileSystem(is);
-        is.close();
-        return fs;
+        try (InputStream is = HSSFTestDataSamples.openSampleFileStream("Simple.xls")) {
+            return new POIFSFileSystem(is);
+        }
     }
 
-    private void setTitle(POIFSFileSystem fs) throws NoPropertySetStreamException, MarkUnsupportedException, IOException, WritingNotSupportedException {
+    private void setTitle(POIFSFileSystem fs) throws NoPropertySetStreamException, IOException, WritingNotSupportedException {
         SummaryInformation summary1 = (SummaryInformation) PropertySetFactory.create(fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
         assertNotNull(summary1);
 
@@ -100,16 +97,15 @@ class TestPOIFSProperties {
         assertNotNull(summaryCheck);
     }
 
-    private void checkFromByteArray(byte[] bytes) throws IOException, NoPropertySetStreamException, MarkUnsupportedException {
+    private void checkFromByteArray(byte[] bytes) throws IOException, NoPropertySetStreamException {
         // on some environments in CI we see strange failures, let's verify that the size is exactly right
         // this can be removed again after the problem is identified
         assertEquals(5120, bytes.length, "Had: " + HexDump.toHex(bytes));
 
-        POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(bytes));
-        SummaryInformation summary2 = (SummaryInformation) PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
-        assertNotNull(summary2);
-
-        assertEquals(title, summary2.getTitle());
-        fs2.close();
+        try (POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(bytes))) {
+            SummaryInformation summary2 = (SummaryInformation) PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME));
+            assertNotNull(summary2);
+            assertEquals(title, summary2.getTitle());
+        }
     }
 }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/crypt/TestXorEncryption.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/crypt/TestXorEncryption.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/crypt/TestXorEncryption.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/crypt/TestXorEncryption.java Fri May 14 00:37:50 2021
@@ -17,12 +17,12 @@
 
 package org.apache.poi.poifs.crypt;
 
+import static org.apache.poi.hssf.HSSFTestDataSamples.getSampleFile;
+import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 
@@ -37,9 +37,6 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 class TestXorEncryption {
-
-    private static final HSSFTestDataSamples samples = new HSSFTestDataSamples();
-
     @Test
     void testXorEncryption() {
         // Xor-Password: abc
@@ -56,10 +53,9 @@ class TestXorEncryption {
         assertThat(xorArrExp, equalTo(xorArrAct));
     }
 
-    @SuppressWarnings("static-access")
     @Test
     void testUserFile() throws IOException {
-        File f = samples.getSampleFile("xor-encryption-abc.xls");
+        File f = getSampleFile("xor-encryption-abc.xls");
         Biff8EncryptionKey.setCurrentUserPassword("abc");
         try (POIFSFileSystem fs = new POIFSFileSystem(f, true);
              HSSFWorkbook hwb = new HSSFWorkbook(fs.getRoot(), true)) {
@@ -75,16 +71,14 @@ class TestXorEncryption {
     @Test
     @Disabled("currently not supported")
     void encrypt() throws IOException {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
         try {
             try (HSSFWorkbook hwb = HSSFTestDataSamples.openSampleWorkbook("SampleSS.xls")) {
                 Biff8EncryptionKey.setCurrentUserPassword("abc");
                 hwb.getInternalWorkbook().getWorkbookRecordList()
                     .add(1, new FilePassRecord(EncryptionMode.xor));
-                hwb.write(bos);
-            }
-            try (HSSFWorkbook hwb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
-                assertEquals(3, hwb.getNumberOfSheets());
+                try (HSSFWorkbook hwb2 = writeOutAndReadBack(hwb)) {
+                    assertEquals(3, hwb2.getNumberOfSheets());
+                }
             }
         } finally {
             Biff8EncryptionKey.setCurrentUserPassword(null);

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/dev/TestPOIFSDump.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/dev/TestPOIFSDump.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/dev/TestPOIFSDump.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/dev/TestPOIFSDump.java Fri May 14 00:37:50 2021
@@ -34,7 +34,7 @@ import org.apache.poi.poifs.filesystem.N
 import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.poifs.property.PropertyTable;
-import org.apache.poi.util.NullPrintStream;
+import org.apache.commons.io.output.NullPrintStream;
 import org.apache.poi.util.TempFile;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
@@ -150,7 +150,7 @@ public class TestPOIFSDump {
     }
 
     @Test
-    void testMainNoArgs() throws Exception {
+    void testMainNoArgs() {
         SecurityManager sm = System.getSecurityManager();
         try {
             System.setSecurityManager(new SecurityManager() {

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocument.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocument.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocument.java Fri May 14 00:37:50 2021
@@ -21,14 +21,15 @@ import static org.apache.poi.poifs.commo
 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 static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.stream.IntStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.poifs.property.DocumentProperty;
 import org.apache.poi.poifs.storage.RawDataUtil;
 import org.apache.poi.util.IOUtils;
@@ -67,7 +68,7 @@ class TestDocument {
             // verify that output is correct
             POIFSDocument document = checkDocument(poifs, LARGER_BIG_BLOCK_SIZE + 1);
             DocumentProperty property = document.getDocumentProperty();
-            ByteArrayOutputStream stream = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream stream = new UnsynchronizedByteArrayOutputStream();
 
             property.writeData(stream);
             byte[] output = stream.toByteArray();
@@ -111,7 +112,7 @@ class TestDocument {
     private static byte[] checkValues(final int blockCountExp, POIFSDocument document, byte[] input) throws IOException {
         assertNotNull(document);
         assertNotNull(document.getDocumentProperty().getDocument());
-        assertEquals(document, document.getDocumentProperty().getDocument());
+        assertSame(document, document.getDocumentProperty().getDocument());
 
         ByteArrayInputStream bis = new ByteArrayInputStream(input);
 
@@ -134,7 +135,7 @@ class TestDocument {
 
         assertEquals(blockCountExp, blockCountAct);
 
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream stream = new UnsynchronizedByteArrayOutputStream();
         try (DocumentInputStream dis = document.getFileSystem().createDocumentInputStream(
                 document.getDocumentProperty().getName())) {
             IOUtils.copy(dis, stream);

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java Fri May 14 00:37:50 2021
@@ -22,10 +22,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.util.IOUtils;
 import org.junit.jupiter.api.Test;
 
@@ -46,7 +46,7 @@ final class TestDocumentOutputStream {
 
             try {
                 for (byte b : expected) {
-                    dstream.write((int)b);
+                    dstream.write(b);
                 }
             } catch (IOException ignored) {
                 fail("stream exhausted too early");
@@ -115,7 +115,7 @@ final class TestDocumentOutputStream {
             root.createDocument("foo", expected.length, l);
 
             try (DocumentInputStream is = root.createDocumentInputStream("foo")) {
-                final ByteArrayOutputStream bos = new ByteArrayOutputStream(expected.length);
+                final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(expected.length);
                 IOUtils.copy(is, bos);
                 assertArrayEquals(expected, bos.toByteArray());
             }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEmptyDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEmptyDocument.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEmptyDocument.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEmptyDocument.java Fri May 14 00:37:50 2021
@@ -22,10 +22,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.stream.Stream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.poi.util.IOUtils;
@@ -82,9 +82,9 @@ final class TestEmptyDocument {
 			DirectoryEntry dir = fs.getRoot();
 			emptyDoc.handle(dir);
 
-			ByteArrayOutputStream out = new ByteArrayOutputStream();
+			UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
 			fs.writeFilesystem(out);
-			assertDoesNotThrow(() -> new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())));
+			assertDoesNotThrow(() -> new POIFSFileSystem(out.toInputStream()));
 		}
 	}
 
@@ -92,7 +92,7 @@ final class TestEmptyDocument {
 	void testEmptyDocumentBug11744() throws Exception {
 		byte[] testData = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
 		try (POIFSFileSystem fs = new POIFSFileSystem()) {
 			fs.createDocument(new ByteArrayInputStream(new byte[0]), "Empty");
 			fs.createDocument(new ByteArrayInputStream(testData), "NotEmpty");
@@ -100,7 +100,7 @@ final class TestEmptyDocument {
 		}
 
 		// This line caused the error.
-		try (POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray()))) {
+		try (POIFSFileSystem fs = new POIFSFileSystem(out.toInputStream())) {
 			DocumentEntry entry = (DocumentEntry) fs.getRoot().getEntry("Empty");
 			assertEquals(0, entry.getSize(), "Expected zero size");
 			byte[] actualReadbackData;

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEntryUtils.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEntryUtils.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEntryUtils.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestEntryUtils.java Fri May 14 00:37:50 2021
@@ -24,12 +24,13 @@ 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.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.junit.jupiter.api.Test;
 
 class TestEntryUtils {
@@ -101,51 +102,52 @@ class TestEntryUtils {
 
     @Test
     void testAreDocumentsIdentical() throws IOException {
-       POIFSFileSystem fs = new POIFSFileSystem();
-       DirectoryEntry dirA = fs.createDirectory("DirA");
-       DirectoryEntry dirB = fs.createDirectory("DirB");
+       try (POIFSFileSystem fs = new POIFSFileSystem()) {
+          DirectoryEntry dirA = fs.createDirectory("DirA");
+          DirectoryEntry dirB = fs.createDirectory("DirB");
 
-       DocumentEntry entryA1 = dirA.createDocument("Entry1", new ByteArrayInputStream(dataSmallA));
-       DocumentEntry entryA1b = dirA.createDocument("Entry1b", new ByteArrayInputStream(dataSmallA));
-       DocumentEntry entryA2 = dirA.createDocument("Entry2", new ByteArrayInputStream(dataSmallB));
-       DocumentEntry entryB1 = dirB.createDocument("Entry1", new ByteArrayInputStream(dataSmallA));
+          DocumentEntry entryA1 = dirA.createDocument("Entry1", new ByteArrayInputStream(dataSmallA));
+          DocumentEntry entryA1b = dirA.createDocument("Entry1b", new ByteArrayInputStream(dataSmallA));
+          DocumentEntry entryA2 = dirA.createDocument("Entry2", new ByteArrayInputStream(dataSmallB));
+          DocumentEntry entryB1 = dirB.createDocument("Entry1", new ByteArrayInputStream(dataSmallA));
 
 
-       // Names must match
-       assertNotEquals(entryA1.getName(), entryA1b.getName());
-       assertFalse(EntryUtils.areDocumentsIdentical(entryA1, entryA1b));
+          // Names must match
+          assertNotEquals(entryA1.getName(), entryA1b.getName());
+          assertFalse(EntryUtils.areDocumentsIdentical(entryA1, entryA1b));
 
-       // Contents must match
-       assertFalse(EntryUtils.areDocumentsIdentical(entryA1, entryA2));
+          // Contents must match
+          assertFalse(EntryUtils.areDocumentsIdentical(entryA1, entryA2));
 
-       // Parents don't matter if contents + names are the same
-       assertNotEquals(entryA1.getParent(), entryB1.getParent());
-       assertTrue(EntryUtils.areDocumentsIdentical(entryA1, entryB1));
+          // Parents don't matter if contents + names are the same
+          assertNotEquals(entryA1.getParent(), entryB1.getParent());
+          assertTrue(EntryUtils.areDocumentsIdentical(entryA1, entryB1));
 
 
-       // Can work with POIFS
-       ByteArrayOutputStream tmpO = new ByteArrayOutputStream();
-       fs.writeFilesystem(tmpO);
+          // Can work with POIFS
+          try (UnsynchronizedByteArrayOutputStream tmpO = new UnsynchronizedByteArrayOutputStream()) {
+             fs.writeFilesystem(tmpO);
 
-       ByteArrayInputStream tmpI = new ByteArrayInputStream(tmpO.toByteArray());
-       POIFSFileSystem nfs = new POIFSFileSystem(tmpI);
+             try (InputStream tmpI = tmpO.toInputStream();
+                  POIFSFileSystem nfs = new POIFSFileSystem(tmpI)) {
 
-       DirectoryEntry dN1 = (DirectoryEntry)nfs.getRoot().getEntry("DirA");
-       DirectoryEntry dN2 = (DirectoryEntry)nfs.getRoot().getEntry("DirB");
-       DocumentEntry eNA1 = (DocumentEntry)dN1.getEntry(entryA1.getName());
-       DocumentEntry eNA2 = (DocumentEntry)dN1.getEntry(entryA2.getName());
-       DocumentEntry eNB1 = (DocumentEntry)dN2.getEntry(entryB1.getName());
+                DirectoryEntry dN1 = (DirectoryEntry) nfs.getRoot().getEntry("DirA");
+                DirectoryEntry dN2 = (DirectoryEntry) nfs.getRoot().getEntry("DirB");
+                DocumentEntry eNA1 = (DocumentEntry) dN1.getEntry(entryA1.getName());
+                DocumentEntry eNA2 = (DocumentEntry) dN1.getEntry(entryA2.getName());
+                DocumentEntry eNB1 = (DocumentEntry) dN2.getEntry(entryB1.getName());
 
-       assertFalse(EntryUtils.areDocumentsIdentical(eNA1, eNA2));
-       assertTrue(EntryUtils.areDocumentsIdentical(eNA1, eNB1));
+                assertFalse(EntryUtils.areDocumentsIdentical(eNA1, eNA2));
+                assertTrue(EntryUtils.areDocumentsIdentical(eNA1, eNB1));
 
-       assertFalse(EntryUtils.areDocumentsIdentical(eNA1, entryA1b));
-       assertFalse(EntryUtils.areDocumentsIdentical(eNA1, entryA2));
+                assertFalse(EntryUtils.areDocumentsIdentical(eNA1, entryA1b));
+                assertFalse(EntryUtils.areDocumentsIdentical(eNA1, entryA2));
 
-       assertTrue(EntryUtils.areDocumentsIdentical(eNA1, entryA1));
-       assertTrue(EntryUtils.areDocumentsIdentical(eNA1, entryB1));
-       nfs.close();
-       fs.close();
+                assertTrue(EntryUtils.areDocumentsIdentical(eNA1, entryA1));
+                assertTrue(EntryUtils.areDocumentsIdentical(eNA1, entryB1));
+             }
+          }
+       }
     }
 
     @Test

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java Fri May 14 00:37:50 2021
@@ -20,8 +20,6 @@ package org.apache.poi.poifs.filesystem;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -29,6 +27,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
@@ -141,11 +140,10 @@ final class TestFileSystemBugs {
         EntryUtils.copyNodes(root, dest);
 
         // Re-load
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
         root.getFileSystem().writeFilesystem(baos);
 
-        POIFSFileSystem read = new POIFSFileSystem(
-                new ByteArrayInputStream(baos.toByteArray()));
+        POIFSFileSystem read = new POIFSFileSystem(baos.toInputStream());
 
         // Check the structure matches
         checkSizes("/", read.getRoot(), entries);

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java Fri May 14 00:37:50 2021
@@ -23,7 +23,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.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,6 +30,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.RecordFormatException;
@@ -62,25 +62,24 @@ class TestOle10Native {
         };
 
         for (File f : files) {
-            POIFSFileSystem fs = new POIFSFileSystem(f, true);
-            List<Entry> entries = new ArrayList<>();
-            findOle10(entries, fs.getRoot(), "/");
-
-            for (Entry e : entries) {
-                ByteArrayOutputStream bosExp = new ByteArrayOutputStream();
-                InputStream is = ((DirectoryNode)e.getParent()).createDocumentInputStream(e);
-                IOUtils.copy(is,bosExp);
-                is.close();
+            try (POIFSFileSystem fs = new POIFSFileSystem(f, true)) {
+                List<Entry> entries = new ArrayList<>();
+                findOle10(entries, fs.getRoot(), "/");
+
+                for (Entry e : entries) {
+                    UnsynchronizedByteArrayOutputStream bosExp = new UnsynchronizedByteArrayOutputStream();
+                    try (InputStream is = ((DirectoryNode) e.getParent()).createDocumentInputStream(e)) {
+                        IOUtils.copy(is, bosExp);
+                    }
 
-                Ole10Native ole = Ole10Native.createFromEmbeddedOleObject((DirectoryNode)e.getParent());
+                    Ole10Native ole = Ole10Native.createFromEmbeddedOleObject((DirectoryNode) e.getParent());
 
-                ByteArrayOutputStream bosAct = new ByteArrayOutputStream();
-                ole.writeOut(bosAct);
+                    UnsynchronizedByteArrayOutputStream bosAct = new UnsynchronizedByteArrayOutputStream();
+                    ole.writeOut(bosAct);
 
-                assertThat(bosExp.toByteArray(), equalTo(bosAct.toByteArray()));
+                    assertThat(bosExp.toByteArray(), equalTo(bosAct.toByteArray()));
+                }
             }
-
-            fs.close();
         }
     }
 

Modified: poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java Fri May 14 00:37:50 2021
@@ -23,13 +23,13 @@ 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.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hpsf.NoPropertySetStreamException;
 import org.apache.poi.hpsf.Property;
@@ -44,7 +44,6 @@ import org.apache.poi.util.IOUtils;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
-import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Tests for the older OPOIFS-based POIFSFileSystem
@@ -147,7 +146,7 @@ final class TestPOIFSFileSystem {
 		try (POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream(file))) {
 
 			// Write it into a temp output array
-			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
 			fs.writeFilesystem(baos);
 
 			// Check sizes
@@ -186,7 +185,7 @@ final class TestPOIFSFileSystem {
 	         "BIG", new ByteArrayInputStream(hugeStream)
 	   );
 
-	   ByteArrayOutputStream baos = new ByteArrayOutputStream();
+	   UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
 	   fs.writeFilesystem(baos);
 	   byte[] fsData = baos.toByteArray();
 



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