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 [3/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/openxml4j/opc/internal/TestContentTypeManager.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java Fri May 14 00:37:50 2021
@@ -23,12 +23,11 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.poi.ooxml.util.POIXMLUnits;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackageAccess;
@@ -40,11 +39,9 @@ import org.apache.poi.openxml4j.opc.Pack
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
 import org.apache.poi.ss.usermodel.ClientAnchor;
 import org.apache.poi.ss.usermodel.CreationHelper;
-import org.apache.poi.ss.usermodel.Drawing;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.XSSFTestDataSamples;
-import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFDrawing;
 import org.apache.poi.xssf.usermodel.XSSFPicture;
 import org.apache.poi.xssf.usermodel.XSSFPictureData;
@@ -53,8 +50,6 @@ import org.apache.poi.xssf.usermodel.XSS
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
-import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTTwoCellAnchor;
 
 public final class TestContentTypeManager {
 
@@ -137,7 +132,7 @@ public final class TestContentTypeManage
     }
 
     protected byte[] toByteArray(Workbook wb) {
-        try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+        try (UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream()) {
             wb.write(os);
             return os.toByteArray();
         } catch (IOException e) {

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/marshallers/TestZipPackagePropertiesMarshaller.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/marshallers/TestZipPackagePropertiesMarshaller.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/marshallers/TestZipPackagePropertiesMarshaller.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/internal/marshallers/TestZipPackagePropertiesMarshaller.java Fri May 14 00:37:50 2021
@@ -17,16 +17,17 @@
 
 package org.apache.poi.openxml4j.opc.internal.marshallers;
 
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
 import static org.apache.poi.openxml4j.opc.PackagingURIHelper.PACKAGE_RELATIONSHIPS_ROOT_URI;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
@@ -38,7 +39,7 @@ class TestZipPackagePropertiesMarshaller
     private final PartMarshaller marshaller = new ZipPackagePropertiesMarshaller();
 
     private boolean marshall() throws OpenXML4JException {
-        return marshall(new ZipArchiveOutputStream(new ByteArrayOutputStream()));
+        return marshall(new ZipArchiveOutputStream(new UnsynchronizedByteArrayOutputStream()));
     }
 
     private boolean marshall(OutputStream zos) throws OpenXML4JException {
@@ -50,8 +51,7 @@ class TestZipPackagePropertiesMarshaller
 
     @Test
     void nonZipOutputStream() {
-        OutputStream notAZipOutputStream = new ByteArrayOutputStream(0);
-        assertThrows(IllegalArgumentException.class, () -> marshall(notAZipOutputStream));
+        assertThrows(IllegalArgumentException.class, () -> marshall(NULL_OUTPUT_STREAM));
     }
 
     @Test
@@ -61,7 +61,7 @@ class TestZipPackagePropertiesMarshaller
 
     @Test
     void ioException() {
-        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new ByteArrayOutputStream()) {
+        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new UnsynchronizedByteArrayOutputStream()) {
             @Override
             public void putArchiveEntry(final ArchiveEntry archiveEntry) throws IOException {
                 throw new IOException("TestException");

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java Fri May 14 00:37:50 2021
@@ -32,7 +32,6 @@ import static org.junit.jupiter.api.Assu
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -77,6 +76,7 @@ import javax.xml.crypto.dsig.Canonicaliz
 import javax.xml.crypto.dsig.XMLSignatureException;
 import javax.xml.crypto.dsig.dom.DOMSignContext;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -160,6 +160,8 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 import org.w3.x2000.x09.xmldsig.ReferenceType;
 import org.w3.x2000.x09.xmldsig.SignatureDocument;
 import org.w3c.dom.Document;
@@ -210,36 +212,36 @@ class TestSignatureInfo {
     @Test
     void bug61182() throws Exception {
         final String pfxInput =
-                "H4sIAAAAAAAAAFXTfzzTeRwH8P2uGRmG6hKSmJh9a2HsuPy60VnHCEU6v86sieZH2Jr2qFl+s+ZHJ5tfUcfKb4uho/OjiFq1qTv5ceFyp0PqEK"+
-                        "fH4+66++Pz+Dwer9fj8f7r9cRzEd4QMBTPRWxDIM14ZN47NfAWsJgL34Bx4at4Lvwdngvd9b8KqgbjQpGbMXzzgRGovytVFTBEzIXU47kQCd4U"+
-                        "ofJPvHl8JwyTjRS55hbKoor3UJLDE1i/PcPKCBAIDATjQlKiK67XjVYdcnkZgD2txroiAUb8W9dtn57DvTsbM+3wIsdocXDEN7TdPKgaSl+tU1"+
-                        "xq9oqiB5yMaZCPho8uUEbFU9U6u3N7lEMLTJGeA0RfX+5FMRrpXPFrbrlJ8uNUCE2H247P28Ckyfqlsy32yeKg/HTbH5JpqUDNw2B32+SaiRw7"+
-                        "ofRMePUpaAoK7KYgmd5ZIc0rLLYjJBfOWCb28xlrGhbpJvdToFdqt5PXVjEz5YOJ6g7W0fskuKW9/iZP0yLEVpR9XkkHmb6tfpcE8YwCdWNCan"+
-                        "LvAsco25JdF1j2/FLAMVU79HdOex07main90dy40511OZtTGZ+TdVd3lKZ7D3clEg9hLESHwSNnZ6239X4yLM4xYSElQ/hqSbwdmiozYG9PhF2"+
-                        "Zf0XaZnxzTK0Iot+rJ3kYoxWTLE8DR9leV62Ywbtlg4mapYOxb3lT7fQ1x4EQ44flh2oFWSPLR8LMbsc6jzJsV6OZ3TrODjHEdw9W+8OD32vd8"+
-                        "XQ6iCaIHcrSOn6qS0TKLr786234eeSAhvAQbEsVn7vrvc/487Be/O2e/+5Y5zRq2zAtz6pfcNyraJNDqMW1inNkgJ3t3VESbZ3pNzyl3KHILs0"+
-                        "51dY6msDYSlWhw40TglXxj9rw95O6gFWIuN012W/vhS50jpKXcao4gc1aLaXtJXxirbRkpZ/0e7a0pD6TDa7+GxEdEEML3VGo9udD5YUKhU3y7"+
-                        "SzWAgN6WIEIglq7LilvCjqIVLIfg8CvVGL9f5iSsCDf5hef4vMxbyvcjINuy06gZu+iPYOWNxjfrwKGYzoqqotK2aywgYVrPMh0JovfkDuN95n"+
-                        "MdVlYHbN1Mnn4TxAwuv+u3AkBlDZvRUUCwoDMUGxeMNPhTaAgWl60xhhBgCBaEMgAACReMAav7n3x598IDYJ9GxGXRAwaPOT/kfO/1AgPqLQkp"+
-                        "MiIVaHthnUS4v2y32e2BjdMPyIImUTBW3cV3R5tjVQm0MOm+D2C5+bBW9vHLjLR4lun4toQiY3Ls/v4bES/OJ4EmpZk5xhL9i5ClofYZNEsxFn"+
-                        "An/q821Tg+Cq9Er4XYGQe8ogjjLJ2b7dUsJ3auFQFNUJF7Ke7yUL2EeYYxl6vz5l4q5u8704mRbFts1E1eWMp6WIy91GPrsVlRGvtuNERfrjfE"+
-                        "YtzUI3Flcv65zJUbUBEzUnTS0fEYso2XyToAl8kb251mUY2o2lJzv5dp/1htmcjeeP2MjxC+3S45ljx7jd52Pv9XAat+ryiauFOF7YgztkoWWD"+
-                        "h62tplPH1bzDV+d0NLdaE5AfVJ09HuUYTFS+iggtvT5Euyk+unj4N2XvzW91n+GNjtgWfKOHmkinUPvYRh70Jv+wlPJrVaT8mL7GxJLqDC9jbv"+
-                        "Gznoiae6es+wQejnk3XjU366MrK/zXxngBYj9J6NnXc9mMiTFLX8WqQ8iTelTAFs2NJzPoDzrBUz4JFIEOa6Dja6dULc68g1jFDTeEHZyra7RZ"+
-                        "2ElqGDEqcNRo3SNX6feMy9EF1GOyZK0Sa87KwjKw8aM68dpsIYjfLcTXaZ6atg0BKfMnl6axeUGEaIFSP7rzj9wjzumRbG3jgUVp2lX5AK/tsO"+
-                        "7R4TQX/9/H6RiN34c9KldmPZZGANXzzTajZS9mR2OSvlJ+F4AgSko4htrMAKFTBu51/5SWNsO1vlRaaG48ZRJ+8PzuHQMdvS36gNpRPi7jhF1S"+
-                        "H3B2ycI4y0VURv6SrqJNUY/X645ZFJQ+eBO+ptG7o8axf1dcqh2beiQk+GRTeZ37LVeUlaeo9vl1/+8tyBfyT2v5lFC5E19WdKIyCuZe7r99Px"+
-                        "D/Od4Qj0TA92+DQnbCQTCMy/wwse9O4gsEebkkpPIP5GBV3Q0YBsj75XE0uSFQ1tCZSW8bNa9MUJZ/nPBfExohHlgGAAA=";
+            "H4sIAAAAAAAAAFXTfzzTeRwH8P2uGRmG6hKSmJh9a2HsuPy60VnHCEU6v86sieZH2Jr2qFl+s+ZHJ5tfUcfKb4uho/OjiFq1qTv5ceFyp0PqEK"+
+            "fH4+66++Pz+Dwer9fj8f7r9cRzEd4QMBTPRWxDIM14ZN47NfAWsJgL34Bx4at4Lvwdngvd9b8KqgbjQpGbMXzzgRGovytVFTBEzIXU47kQCd4U"+
+            "ofJPvHl8JwyTjRS55hbKoor3UJLDE1i/PcPKCBAIDATjQlKiK67XjVYdcnkZgD2txroiAUb8W9dtn57DvTsbM+3wIsdocXDEN7TdPKgaSl+tU1"+
+            "xq9oqiB5yMaZCPho8uUEbFU9U6u3N7lEMLTJGeA0RfX+5FMRrpXPFrbrlJ8uNUCE2H247P28Ckyfqlsy32yeKg/HTbH5JpqUDNw2B32+SaiRw7"+
+            "ofRMePUpaAoK7KYgmd5ZIc0rLLYjJBfOWCb28xlrGhbpJvdToFdqt5PXVjEz5YOJ6g7W0fskuKW9/iZP0yLEVpR9XkkHmb6tfpcE8YwCdWNCan"+
+            "LvAsco25JdF1j2/FLAMVU79HdOex07main90dy40511OZtTGZ+TdVd3lKZ7D3clEg9hLESHwSNnZ6239X4yLM4xYSElQ/hqSbwdmiozYG9PhF2"+
+            "Zf0XaZnxzTK0Iot+rJ3kYoxWTLE8DR9leV62Ywbtlg4mapYOxb3lT7fQ1x4EQ44flh2oFWSPLR8LMbsc6jzJsV6OZ3TrODjHEdw9W+8OD32vd8"+
+            "XQ6iCaIHcrSOn6qS0TKLr786234eeSAhvAQbEsVn7vrvc/487Be/O2e/+5Y5zRq2zAtz6pfcNyraJNDqMW1inNkgJ3t3VESbZ3pNzyl3KHILs0"+
+            "51dY6msDYSlWhw40TglXxj9rw95O6gFWIuN012W/vhS50jpKXcao4gc1aLaXtJXxirbRkpZ/0e7a0pD6TDa7+GxEdEEML3VGo9udD5YUKhU3y7"+
+            "SzWAgN6WIEIglq7LilvCjqIVLIfg8CvVGL9f5iSsCDf5hef4vMxbyvcjINuy06gZu+iPYOWNxjfrwKGYzoqqotK2aywgYVrPMh0JovfkDuN95n"+
+            "MdVlYHbN1Mnn4TxAwuv+u3AkBlDZvRUUCwoDMUGxeMNPhTaAgWl60xhhBgCBaEMgAACReMAav7n3x598IDYJ9GxGXRAwaPOT/kfO/1AgPqLQkp"+
+            "MiIVaHthnUS4v2y32e2BjdMPyIImUTBW3cV3R5tjVQm0MOm+D2C5+bBW9vHLjLR4lun4toQiY3Ls/v4bES/OJ4EmpZk5xhL9i5ClofYZNEsxFn"+
+            "An/q821Tg+Cq9Er4XYGQe8ogjjLJ2b7dUsJ3auFQFNUJF7Ke7yUL2EeYYxl6vz5l4q5u8704mRbFts1E1eWMp6WIy91GPrsVlRGvtuNERfrjfE"+
+            "YtzUI3Flcv65zJUbUBEzUnTS0fEYso2XyToAl8kb251mUY2o2lJzv5dp/1htmcjeeP2MjxC+3S45ljx7jd52Pv9XAat+ryiauFOF7YgztkoWWD"+
+            "h62tplPH1bzDV+d0NLdaE5AfVJ09HuUYTFS+iggtvT5Euyk+unj4N2XvzW91n+GNjtgWfKOHmkinUPvYRh70Jv+wlPJrVaT8mL7GxJLqDC9jbv"+
+            "Gznoiae6es+wQejnk3XjU366MrK/zXxngBYj9J6NnXc9mMiTFLX8WqQ8iTelTAFs2NJzPoDzrBUz4JFIEOa6Dja6dULc68g1jFDTeEHZyra7RZ"+
+            "2ElqGDEqcNRo3SNX6feMy9EF1GOyZK0Sa87KwjKw8aM68dpsIYjfLcTXaZ6atg0BKfMnl6axeUGEaIFSP7rzj9wjzumRbG3jgUVp2lX5AK/tsO"+
+            "7R4TQX/9/H6RiN34c9KldmPZZGANXzzTajZS9mR2OSvlJ+F4AgSko4htrMAKFTBu51/5SWNsO1vlRaaG48ZRJ+8PzuHQMdvS36gNpRPi7jhF1S"+
+            "H3B2ycI4y0VURv6SrqJNUY/X645ZFJQ+eBO+ptG7o8axf1dcqh2beiQk+GRTeZ37LVeUlaeo9vl1/+8tyBfyT2v5lFC5E19WdKIyCuZe7r99Px"+
+            "D/Od4Qj0TA92+DQnbCQTCMy/wwse9O4gsEebkkpPIP5GBV3Q0YBsj75XE0uSFQ1tCZSW8bNa9MUJZ/nPBfExohHlgGAAA=";
 
         // Unix
         final String unixSignExp =
-                "QkqTFQZjXagjRAoOWKpAGa8AR0rKqkSfBtfSWqtjBmTgyjarn+t2POHkpySIpheHAbg+90GKSH88ACMtPHbG7q" +
-                        "FL4gtgAD9Kjew6j16j0IRBwy145UlPrSLFMfF7YF7UlU1k1LBkIlRJ6Fv4MAJl6XspuzZOZIUmHZrWrdxycUQ=";
+            "QkqTFQZjXagjRAoOWKpAGa8AR0rKqkSfBtfSWqtjBmTgyjarn+t2POHkpySIpheHAbg+90GKSH88ACMtPHbG7q" +
+            "FL4gtgAD9Kjew6j16j0IRBwy145UlPrSLFMfF7YF7UlU1k1LBkIlRJ6Fv4MAJl6XspuzZOZIUmHZrWrdxycUQ=";
 
         // Windows
         final String winSignExp =
-                "GmAlL7+bT1r3FsMHJOp3pKg8betblYieZTjhMIrPZPRBbSzjO7KsYRGNtr0aOE3qr8xzyYJN6/8QdF5X7pUEUc" +
-                        "2m8ctrm7s5o2vZTkAqk9ENJGDjBPXX7TnuVOiVeL1cJdtjHC2QpjtRwkFR+B54G6b1OXLOFuQpP3vqR3+/XXE=";
+            "GmAlL7+bT1r3FsMHJOp3pKg8betblYieZTjhMIrPZPRBbSzjO7KsYRGNtr0aOE3qr8xzyYJN6/8QdF5X7pUEUc" +
+            "2m8ctrm7s5o2vZTkAqk9ENJGDjBPXX7TnuVOiVeL1cJdtjHC2QpjtRwkFR+B54G6b1OXLOFuQpP3vqR3+/XXE=";
 
         // Mac
         final String macSignExp =
@@ -259,13 +261,13 @@ class TestSignatureInfo {
         SignatureInfo si = new SignatureInfo();
         si.setSignatureConfig(signatureConfig);
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(100000);
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(100000);
         try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
             wb1.createSheet().createRow(1).createCell(1).setCellValue("Test");
             wb1.write(bos);
         }
 
-        try (OPCPackage pkg1 = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (OPCPackage pkg1 = OPCPackage.open(bos.toInputStream())) {
             si.setOpcPackage(pkg1);
             si.confirmSignature();
             assertTrue(si.verifySignature());
@@ -273,7 +275,7 @@ class TestSignatureInfo {
             pkg1.save(bos);
         }
 
-        try (XSSFWorkbook wb2 = new XSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
             assertEquals("Test", wb2.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
             OPCPackage pkg2 = wb2.getPackage();
             si.setOpcPackage(pkg2);
@@ -306,71 +308,65 @@ class TestSignatureInfo {
         }
     }
 
-    @Test
-    void getSignerUnsigned() throws Exception {
-        String[] testFiles = {
-                "hello-world-unsigned.docx",
-                "hello-world-unsigned.pptx",
-                "hello-world-unsigned.xlsx",
-                "hello-world-office-2010-technical-preview-unsigned.docx"
-        };
-
-        for (String testFile : testFiles) {
-            List<X509Certificate> result = new ArrayList<>();
-            try (OPCPackage pkg = OPCPackage.open(testdata.getFile(testFile), PackageAccess.READ)) {
-                SignatureConfig sic = new SignatureConfig();
-                SignatureInfo si = new SignatureInfo();
-                si.setOpcPackage(pkg);
-                si.setSignatureConfig(sic);
-                for (SignaturePart sp : si.getSignatureParts()) {
-                    if (sp.validate()) {
-                        result.add(sp.getSigner());
-                    }
+    @ParameterizedTest
+    @ValueSource(strings = {
+        "hello-world-unsigned.docx",
+        "hello-world-unsigned.pptx",
+        "hello-world-unsigned.xlsx",
+        "hello-world-office-2010-technical-preview-unsigned.docx"
+    })
+    void getSignerUnsigned(String testFile) throws Exception {
+        List<X509Certificate> result = new ArrayList<>();
+        try (OPCPackage pkg = OPCPackage.open(testdata.getFile(testFile), PackageAccess.READ)) {
+            SignatureConfig sic = new SignatureConfig();
+            SignatureInfo si = new SignatureInfo();
+            si.setOpcPackage(pkg);
+            si.setSignatureConfig(sic);
+            for (SignaturePart sp : si.getSignatureParts()) {
+                if (sp.validate()) {
+                    result.add(sp.getSigner());
                 }
-                pkg.revert();
             }
-            assertNotNull(result);
-            assertTrue(result.isEmpty());
+            pkg.revert();
         }
+        assertNotNull(result);
+        assertTrue(result.isEmpty());
     }
 
-    @Test
-    void getSigner() throws Exception {
-        String[] testFiles = {
-                "hyperlink-example-signed.docx",
-                "hello-world-signed.docx",
-                "hello-world-signed.pptx",
-                "hello-world-signed.xlsx",
-                "hello-world-office-2010-technical-preview.docx",
-                "ms-office-2010-signed.docx",
-                "ms-office-2010-signed.pptx",
-                "ms-office-2010-signed.xlsx",
-                "Office2010-SP1-XAdES-X-L.docx",
-                "signed.docx"
-        };
-
-        for (String testFile : testFiles) {
-            try (OPCPackage pkg = OPCPackage.open(testdata.getFile(testFile), PackageAccess.READ)) {
-                SignatureConfig sic = new SignatureConfig();
-                SignatureInfo si = new SignatureInfo();
-                si.setOpcPackage(pkg);
-                si.setSignatureConfig(sic);
-                List<X509Certificate> result = new ArrayList<>();
-                for (SignaturePart sp : si.getSignatureParts()) {
-                    if (sp.validate()) {
-                        result.add(sp.getSigner());
-                    }
+    @ParameterizedTest
+    @ValueSource(strings = {
+        "hyperlink-example-signed.docx",
+        "hello-world-signed.docx",
+        "hello-world-signed.pptx",
+        "hello-world-signed.xlsx",
+        "hello-world-office-2010-technical-preview.docx",
+        "ms-office-2010-signed.docx",
+        "ms-office-2010-signed.pptx",
+        "ms-office-2010-signed.xlsx",
+        "Office2010-SP1-XAdES-X-L.docx",
+        "signed.docx"
+    })
+    void getSigner(String testFile) throws Exception {
+        try (OPCPackage pkg = OPCPackage.open(testdata.getFile(testFile), PackageAccess.READ)) {
+            SignatureConfig sic = new SignatureConfig();
+            SignatureInfo si = new SignatureInfo();
+            si.setOpcPackage(pkg);
+            si.setSignatureConfig(sic);
+            List<X509Certificate> result = new ArrayList<>();
+            for (SignaturePart sp : si.getSignatureParts()) {
+                if (sp.validate()) {
+                    result.add(sp.getSigner());
                 }
+            }
 
-                assertNotNull(result);
-                assertEquals(1, result.size(), "test-file: " + testFile);
-                X509Certificate signer = result.get(0);
-                LOG.atDebug().log("signer: {}", signer.getSubjectX500Principal());
+            assertNotNull(result);
+            assertEquals(1, result.size(), "test-file: " + testFile);
+            X509Certificate signer = result.get(0);
+            LOG.atDebug().log("signer: {}", signer.getSubjectX500Principal());
 
-                boolean b = si.verifySignature();
-                assertTrue(b, "test-file: " + testFile);
-                pkg.revert();
-            }
+            boolean b = si.verifySignature();
+            assertTrue(b, "test-file: " + testFile);
+            pkg.revert();
         }
     }
 
@@ -474,7 +470,7 @@ class TestSignatureInfo {
     void testSignEnvelopingDocument() throws Exception {
         String testFile = "hello-world-unsigned.xlsx";
         File sigCopy = testdata.getFile(testFile);
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(50000);
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(50000);
 
         final String execTimestr;
 
@@ -613,7 +609,7 @@ class TestSignatureInfo {
             pkg.save(bos);
         }
 
-        try (OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (OPCPackage pkg = OPCPackage.open(bos.toInputStream())) {
             SignatureConfig signatureConfig = new SignatureConfig();
             signatureConfig.setUpdateConfigOnValidate(true);
 
@@ -752,7 +748,7 @@ class TestSignatureInfo {
     void bug65214() throws Exception {
         initKeyPair();
 
-	    ByteArrayOutputStream bos = new ByteArrayOutputStream();
+	    UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
 	    try (XWPFDocument doc = new XWPFDocument()) {
             XWPFHyperlinkRun r = doc.createParagraph().createHyperlinkRun("http://poi.apache.org");
 	        r.setText("Hyperlink");
@@ -765,7 +761,7 @@ class TestSignatureInfo {
         signatureConfig.setKey(keyPair.getPrivate());
         signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
         signatureConfig.setDigestAlgo(HashAlgorithm.sha256);
-        try (OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (OPCPackage pkg = OPCPackage.open(bos.toInputStream())) {
             SignatureInfo si = new SignatureInfo();
             si.setOpcPackage(pkg);
             si.setSignatureConfig(signatureConfig);
@@ -776,7 +772,7 @@ class TestSignatureInfo {
             assumeTrue(e.getMessage().startsWith("Export Restrictions"));
         }
 
-        try (OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (OPCPackage pkg = OPCPackage.open(bos.toInputStream())) {
             SignatureInfo si = new SignatureInfo();
             si.setOpcPackage(pkg);
             si.setSignatureConfig(signatureConfig);
@@ -793,10 +789,10 @@ class TestSignatureInfo {
         try (SXSSFWorkbook wb1 = new SXSSFWorkbook((XSSFWorkbook)WorkbookFactory.create(tpl), 10)) {
             wb1.setCompressTempFiles(true);
             wb1.removeSheetAt(0);
-            ByteArrayOutputStream os = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
             wb1.write(os);
 
-            try (OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(os.toByteArray()))) {
+            try (OPCPackage pkg = OPCPackage.open(os.toInputStream())) {
                 initKeyPair();
                 SignatureConfig signatureConfig = new SignatureConfig();
                 signatureConfig.setKey(keyPair.getPrivate());

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestAgileEncryptionParameters.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestAgileEncryptionParameters.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestAgileEncryptionParameters.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestAgileEncryptionParameters.java Fri May 14 00:37:50 2021
@@ -20,8 +20,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
@@ -30,6 +28,7 @@ import java.util.stream.Stream;
 
 import javax.crypto.Cipher;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.poifs.crypt.ChainingMode;
 import org.apache.poi.poifs.crypt.CipherAlgorithm;
@@ -79,7 +78,7 @@ class TestAgileEncryptionParameters {
         int maxKeyLen = Cipher.getMaxAllowedKeyLength(ca.jceId);
         assumeTrue(maxKeyLen >= ca.defaultKeySize, "Please install JCE Unlimited Strength Jurisdiction Policy files");
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
 
         POIFSFileSystem fsEnc = new POIFSFileSystem();
         EncryptionInfo infoEnc = new EncryptionInfo(EncryptionMode.agile, ca, ha, -1, -1, cm);
@@ -92,7 +91,7 @@ class TestAgileEncryptionParameters {
         fsEnc.writeFilesystem(bos);
         fsEnc.close();
 
-        POIFSFileSystem fsDec = new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()));
+        POIFSFileSystem fsDec = new POIFSFileSystem(bos.toInputStream());
         EncryptionInfo infoDec = new EncryptionInfo(fsDec);
         Decryptor dec = infoDec.getDecryptor();
         boolean passed = dec.verifyPassword("foobaa");

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestDecryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestDecryptor.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestDecryptor.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestDecryptor.java Fri May 14 00:37:50 2021
@@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -34,6 +33,7 @@ import javax.crypto.Cipher;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.poifs.crypt.CryptoFunctions;
 import org.apache.poi.poifs.crypt.Decryptor;
@@ -142,7 +142,7 @@ class TestDecryptor {
             Decryptor d = Decryptor.getInstance(info);
             d.verifyPassword("pwd123");
 
-            final ByteArrayOutputStream bos = new ByteArrayOutputStream(10000);
+            final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(10000);
             try (final ZipArchiveInputStream zis = new ZipArchiveInputStream(d.getDataStream(fs))) {
                 int[] sizes = { 3711, 1155, 445, 9376, 450, 588, 1337, 2593, 304, 7910 };
                 for (int size : sizes) {

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestEncryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestEncryptor.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestEncryptor.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestEncryptor.java Fri May 14 00:37:50 2021
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.poifs.crypt.tests;
 
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
 import static org.apache.poi.poifs.crypt.CryptoFunctions.getMessageDigest;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -24,8 +25,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -39,6 +38,7 @@ import java.util.Random;
 
 import javax.crypto.Cipher;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.openxml4j.opc.ContentTypes;
 import org.apache.poi.openxml4j.opc.OPCPackage;
@@ -59,7 +59,6 @@ import org.apache.poi.poifs.filesystem.E
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.poifs.filesystem.TempFilePOIFSFileSystem;
 import org.apache.poi.util.IOUtils;
-import org.apache.poi.util.NullOutputStream;
 import org.apache.poi.util.TempFile;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
@@ -78,7 +77,7 @@ class TestEncryptor {
             payloadExpected = IOUtils.toByteArray(is);
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
         try (POIFSFileSystem fs = new POIFSFileSystem()) {
             EncryptionInfo ei = new EncryptionInfo(EncryptionMode.binaryRC4);
             Encryptor enc = ei.getEncryptor();
@@ -92,7 +91,7 @@ class TestEncryptor {
         }
 
         final byte[] payloadActual;
-        try (POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (POIFSFileSystem fs = new POIFSFileSystem(bos.toInputStream())) {
             EncryptionInfo ei = new EncryptionInfo(fs);
             Decryptor dec = ei.getDecryptor();
             boolean b = dec.verifyPassword(password);
@@ -115,7 +114,7 @@ class TestEncryptor {
             payloadExpected = IOUtils.toByteArray(is);
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
         try (POIFSFileSystem fs = new TempFilePOIFSFileSystem()) {
             EncryptionInfo ei = new EncryptionInfo(EncryptionMode.agile);
             Encryptor enc = ei.getEncryptor();
@@ -129,7 +128,7 @@ class TestEncryptor {
         }
 
         final byte[] payloadActual;
-        try (POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (POIFSFileSystem fs = new POIFSFileSystem(bos.toInputStream())) {
             EncryptionInfo ei = new EncryptionInfo(fs);
             Decryptor dec = ei.getDecryptor();
             boolean b = dec.verifyPassword(password);
@@ -202,7 +201,7 @@ class TestEncryptor {
         Encryptor e = Encryptor.getInstance(infoActual);
         e.confirmPassword(pass, keySpec, keySalt, verifierExpected, verifierSaltExpected, integritySalt);
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
         try (POIFSFileSystem fs = new POIFSFileSystem()) {
             try (OutputStream os = e.getDataStream(fs)) {
                 os.write(payloadExpected);
@@ -213,7 +212,7 @@ class TestEncryptor {
         final EncryptionInfo infoActual2;
         final byte[] payloadActual, encPackActual;
         final long decPackLenActual;
-        try (POIFSFileSystem nfs = new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (POIFSFileSystem nfs = new POIFSFileSystem(bos.toInputStream())) {
             infoActual2 = new EncryptionInfo(nfs.getRoot());
             Decryptor decActual = Decryptor.getInstance(infoActual2);
             boolean passed = decActual.verifyPassword(pass);
@@ -289,7 +288,7 @@ class TestEncryptor {
         // now we use a newly generated salt/verifier and check
         // if the file content is still the same
 
-        final byte[] encBytes;
+        final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(50000);
         try (POIFSFileSystem fs = new POIFSFileSystem()) {
 
             final EncryptionInfo infoActual2 = new EncryptionInfo(
@@ -308,13 +307,11 @@ class TestEncryptor {
                 os.write(payloadExpected);
             }
 
-            final ByteArrayOutputStream bos = new ByteArrayOutputStream(50000);
             fs.writeFilesystem(bos);
-            encBytes = bos.toByteArray();
         }
 
         final byte[] payloadActual;
-        try (POIFSFileSystem nfs = new POIFSFileSystem(new ByteArrayInputStream(encBytes))) {
+        try (POIFSFileSystem nfs = new POIFSFileSystem(bos.toInputStream())) {
             final EncryptionInfo ei = new EncryptionInfo(nfs);
             Decryptor d2 = Decryptor.getInstance(ei);
             assertTrue(d2.verifyPassword(pass), "Unable to process: document is encrypted");
@@ -336,7 +333,7 @@ class TestEncryptor {
     @Test
     void encryptPackageWithoutCoreProperties() throws Exception {
         // Open our file without core properties
-        final byte[] encBytes;
+        UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
         try (InputStream is = POIDataSamples.getOpenXML4JInstance().openResourceAsStream("OPCCompliance_NoCoreProperties.xlsx");
             OPCPackage pkg = OPCPackage.open(is)) {
 
@@ -358,14 +355,12 @@ class TestEncryptor {
                 }
 
                 // Save the resulting OLE2 document, and re-open it
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 fs.writeFilesystem(baos);
-                encBytes = baos.toByteArray();
             }
         }
 
 
-        try (POIFSFileSystem inpFS = new POIFSFileSystem(new ByteArrayInputStream(encBytes))) {
+        try (POIFSFileSystem inpFS = new POIFSFileSystem(baos.toInputStream())) {
             // Check we can decrypt it
             EncryptionInfo info = new EncryptionInfo(inpFS);
             Decryptor d = Decryptor.getInstance(info);
@@ -539,10 +534,10 @@ class TestEncryptor {
                 os.write(zipInput);
             }
 
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
             fsNew.writeFilesystem(bos);
 
-            try (POIFSFileSystem fsReload = new POIFSFileSystem(new ByteArrayInputStream(bos.toByteArray()))) {
+            try (POIFSFileSystem fsReload = new POIFSFileSystem(bos.toInputStream())) {
                 infoReload = new EncryptionInfo(fsReload);
                 try (InputStream epReload = fsReload.getRoot().createDocumentInputStream("EncryptedPackage")) {
                     epNewBytes = IOUtils.toByteArray(epReload, 9400);
@@ -633,9 +628,8 @@ class TestEncryptor {
             assertTrue(passOk);
 
             try (InputStream is = dec.getDataStream(poifs);
-                 DigestInputStream dis = new DigestInputStream(is, md);
-                 NullOutputStream nos = new NullOutputStream()) {
-                IOUtils.copy(dis, nos);
+                 DigestInputStream dis = new DigestInputStream(is, md)) {
+                IOUtils.copy(dis, NULL_OUTPUT_STREAM);
             }
         }
 

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java Fri May 14 00:37:50 2021
@@ -26,28 +26,20 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertNull;
 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.FileNotFoundException;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.stream.Stream;
 
-import org.apache.poi.hssf.model.WorkbookRecordList;
-import org.apache.poi.hssf.record.FilePassRecord;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.POIDocument;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.poi.extractor.POITextExtractor;
-import org.apache.poi.hssf.record.Record;
 import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.poifs.crypt.EncryptionInfo;
 import org.apache.poi.poifs.crypt.EncryptionMode;
-import org.apache.poi.poifs.crypt.binaryrc4.BinaryRC4EncryptionHeader;
 import org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIEncryptionHeader;
 import org.apache.poi.poifs.storage.RawDataUtil;
 import org.junit.jupiter.api.Test;
@@ -110,14 +102,13 @@ class TestHxxFEncryption {
     private void newPassword(String newPass, POIDataSamples sampleDir, String file, String password, String expected) throws IOException {
         File f = sampleDir.getFile(file);
         Biff8EncryptionKey.setCurrentUserPassword(password);
-        try (POITextExtractor te1 = ExtractorFactory.createExtractor(f)) {
+        try (POITextExtractor te1 = ExtractorFactory.createExtractor(f);
+             UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
             Biff8EncryptionKey.setCurrentUserPassword(newPass);
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
             try (POIDocument doc = (POIDocument) te1.getDocument()) {
                 doc.write(bos);
             }
-            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-            try (POITextExtractor te2 = ExtractorFactory.createExtractor(bis)) {
+            try (POITextExtractor te2 = ExtractorFactory.createExtractor(bos.toInputStream())) {
                 String actual = te2.getText().trim();
                 assertEquals(expected, actual);
             }
@@ -131,9 +122,9 @@ class TestHxxFEncryption {
     @MethodSource("data")
     void changeEncryption(POIDataSamples sampleDir, String file, String password, String expected) throws IOException {
         File f = sampleDir.getFile(file);
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
         Biff8EncryptionKey.setCurrentUserPassword(password);
-        try (POITextExtractor te1 = ExtractorFactory.createExtractor(f)) {
+        try (POITextExtractor te1 = ExtractorFactory.createExtractor(f);
+             UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
             // first remove encryption
             Biff8EncryptionKey.setCurrentUserPassword(null);
             try (POIDocument doc = (POIDocument) te1.getDocument()) {
@@ -141,7 +132,7 @@ class TestHxxFEncryption {
             }
             // then use default setting, which is cryptoapi
             String newPass = "newPass";
-            try (POITextExtractor te2 = ExtractorFactory.createExtractor(new ByteArrayInputStream(bos.toByteArray()))) {
+            try (POITextExtractor te2 = ExtractorFactory.createExtractor(bos.toInputStream())) {
                 Biff8EncryptionKey.setCurrentUserPassword(newPass);
                 try (POIDocument doc = (POIDocument) te2.getDocument()) {
                     bos.reset();
@@ -149,7 +140,7 @@ class TestHxxFEncryption {
                 }
             }
             // and finally update cryptoapi setting
-            try (POITextExtractor te3 = ExtractorFactory.createExtractor(new ByteArrayInputStream(bos.toByteArray()));
+            try (POITextExtractor te3 = ExtractorFactory.createExtractor(bos.toInputStream());
                  POIDocument doc = (POIDocument) te3.getDocument()) {
                 // need to cache data (i.e. read all data) before changing the key size
                 Class<?> clazz = doc.getClass();
@@ -167,7 +158,7 @@ class TestHxxFEncryption {
                 doc.write(bos);
             }
             // check the setting
-            try (POITextExtractor te4 = ExtractorFactory.createExtractor(new ByteArrayInputStream(bos.toByteArray()));
+            try (POITextExtractor te4 = ExtractorFactory.createExtractor(bos.toInputStream());
                  POIDocument doc = (POIDocument) te4.getDocument()) {
                 EncryptionInfo ei = doc.getEncryptionInfo();
                 assertNotNull(ei);
@@ -181,7 +172,7 @@ class TestHxxFEncryption {
 
     @Test
     public void changeEncryptionMode() throws IOException {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(10_000);
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(10_000);
 
         try (HSSFWorkbook wb = new HSSFWorkbook()) {
             wb.createSheet().createRow(1).createCell(1).setCellValue("Test");
@@ -189,7 +180,7 @@ class TestHxxFEncryption {
             wb.write(bos);
         }
 
-        try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (HSSFWorkbook wb = new HSSFWorkbook(bos.toInputStream())) {
             assertEquals(EncryptionMode.cryptoAPI, wb.getEncryptionMode());
             wb.setEncryptionMode(EncryptionMode.binaryRC4);
             Biff8EncryptionKey.setCurrentUserPassword("test2");
@@ -197,7 +188,7 @@ class TestHxxFEncryption {
             wb.write(bos);
         }
 
-        try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (HSSFWorkbook wb = new HSSFWorkbook(bos.toInputStream())) {
             assertEquals(EncryptionMode.binaryRC4, wb.getEncryptionMode());
             wb.setEncryptionMode(null);
             bos.reset();
@@ -206,7 +197,7 @@ class TestHxxFEncryption {
 
         assertNull(Biff8EncryptionKey.getCurrentUserPassword());
 
-        try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+        try (HSSFWorkbook wb = new HSSFWorkbook(bos.toInputStream())) {
             assertNull(wb.getEncryptionMode());
             wb.setEncryptionMode(null);
             assertEquals("Test", wb.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestOleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestOleShape.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestOleShape.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestOleShape.java Fri May 14 00:37:50 2021
@@ -29,8 +29,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
 import java.awt.geom.Rectangle2D;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -39,6 +37,7 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.stream.Stream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.POIDocument;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -114,7 +113,7 @@ class TestOleShape {
     @ParameterizedTest
     @MethodSource("data")
     void embedData(Api api, ObjectMetaData.Application app) throws IOException, ReflectiveOperationException {
-        final ByteArrayInputStream pptBytes;
+        final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(50000);
         try (SlideShow<?,?> ppt = createSlideShow(api)) {
             final PictureData picData = ppt.addPicture(pictureFile,  PictureType.EMF);
             final Slide<?,?> slide = ppt.createSlide();
@@ -123,11 +122,9 @@ class TestOleShape {
             try (OutputStream os = oleShape.updateObjectData(app, null)) {
                 fillOleData(app, os);
             }
-            final ByteArrayOutputStream bos = new ByteArrayOutputStream(50000);
             ppt.write(bos);
-            pptBytes = new ByteArrayInputStream(bos.toByteArray());
         }
-        try (SlideShow<?,?> ppt = SlideShowFactory.create(pptBytes)) {
+        try (SlideShow<?,?> ppt = SlideShowFactory.create(bos.toInputStream())) {
             final ObjectShape<?,?> oleShape = (ObjectShape<?,?>)ppt.getSlides().get(0).getShapes().get(0);
             try (InputStream bis = oleShape.readObjectData()) {
                 validateOleData(app, bis);

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestSlide.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestSlide.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestSlide.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestSlide.java Fri May 14 00:37:50 2021
@@ -24,11 +24,10 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
-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.sl.usermodel.Slide;
 import org.apache.poi.sl.usermodel.SlideShow;
 import org.apache.poi.sl.usermodel.SlideShowFactory;
@@ -56,10 +55,10 @@ class TestSlide {
         ppt1.createSlide().setHidden(true);
         ppt1.createSlide();
 
-        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+        try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
             ppt1.write(bos);
 
-            try (InputStream is = new ByteArrayInputStream(bos.toByteArray());
+            try (InputStream is = bos.toInputStream();
                  SlideShow<?, ?> ppt2 = SlideShowFactory.create(is)) {
 
                 Boolean[] hiddenState = ppt2.getSlides().stream().map(Slide::isHidden).toArray(Boolean[]::new);

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestTable.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestTable.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/sl/tests/TestTable.java Fri May 14 00:37:50 2021
@@ -29,11 +29,9 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
 import java.awt.geom.Rectangle2D;
-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.sl.usermodel.Slide;
 import org.apache.poi.sl.usermodel.SlideShow;
 import org.apache.poi.sl.usermodel.SlideShowFactory;
@@ -42,6 +40,8 @@ import org.apache.poi.sl.usermodel.Table
 import org.apache.poi.sl.usermodel.TextShape.TextDirection;
 import org.apache.poi.xslf.usermodel.XMLSlideShow;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 class TestTable {
 
@@ -51,26 +51,23 @@ class TestTable {
 
         // Test of table dimensions of same slideshow saved as ppt/x
         // to check if both return similar (points) value
-        SlideShow<?,?> ppt = openSampleSlideshow("table_test.ppt");
-        TableShape<?,?> ts = (TableShape<?,?>)ppt.getSlides().get(0).getShapes().get(0);
-
-        SlideShow<?,?> pptx = openSampleSlideshow("table_test.pptx");
-        TableShape<?,?> tsx = (TableShape<?,?>)pptx.getSlides().get(0).getShapes().get(0);
-
-        // assume table shape should be equal to itself
-        confirmTableShapeEqual(ts, ts);
-        confirmTableShapeEqual(tsx, tsx);
-
-        // assert ppt and pptx versions of the same table have the same shape
-        confirmTableShapeEqual(ts, tsx);
-
-        // change row height and validate again
-        tsx.setRowHeight(1, 50);
-        ts.setRowHeight(1, 50);
-        confirmTableShapeEqual(ts, tsx);
-
-        pptx.close();
-        ppt.close();
+        try (SlideShow<?,?> ppt = openSampleSlideshow("table_test.ppt");
+             SlideShow<?,?> pptx = openSampleSlideshow("table_test.pptx")) {
+            TableShape<?, ?> ts = (TableShape<?, ?>) ppt.getSlides().get(0).getShapes().get(0);
+            TableShape<?, ?> tsx = (TableShape<?, ?>) pptx.getSlides().get(0).getShapes().get(0);
+
+            // assume table shape should be equal to itself
+            confirmTableShapeEqual(ts, ts);
+            confirmTableShapeEqual(tsx, tsx);
+
+            // assert ppt and pptx versions of the same table have the same shape
+            confirmTableShapeEqual(ts, tsx);
+
+            // change row height and validate again
+            tsx.setRowHeight(1, 50);
+            ts.setRowHeight(1, 50);
+            confirmTableShapeEqual(ts, tsx);
+        }
     }
 
     private void confirmTableShapeEqual(TableShape<?,?> tableA, TableShape<?,?> tableB) {
@@ -95,16 +92,16 @@ class TestTable {
     @Test
     void directionHSLF() throws IOException {
         assumeFalse(xslfOnly());
-        SlideShow<?,?> ppt1 = SlideShowFactory.create(false);
-        testTextDirection(ppt1);
-        ppt1.close();
+        try (SlideShow<?,?> ppt1 = SlideShowFactory.create(false)) {
+            testTextDirection(ppt1);
+        }
     }
 
     @Test
     void directionXSLF() throws IOException {
-        SlideShow<?,?> ppt1 = new XMLSlideShow();
-        testTextDirection(ppt1);
-        ppt1.close();
+        try (SlideShow<?,?> ppt1 = new XMLSlideShow()) {
+            testTextDirection(ppt1);
+        }
     }
 
     private void testTextDirection(SlideShow<?,?> ppt1) throws IOException {
@@ -128,27 +125,26 @@ class TestTable {
             }
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
         ppt1.write(bos);
-        ppt1.close();
 
-        InputStream is = new ByteArrayInputStream(bos.toByteArray());
-        SlideShow<?,?> ppt2 = SlideShowFactory.create(is);
-        TableShape<?,?> tbl2 = (TableShape<?,?>)ppt2.getSlides().get(0).getShapes().get(0);
+        try (SlideShow<?,?> ppt2 = SlideShowFactory.create(bos.toInputStream())) {
+            TableShape<?, ?> tbl2 = (TableShape<?, ?>) ppt2.getSlides().get(0).getShapes().get(0);
 
-        col = 0;
-        for (TextDirection td : tds) {
-            TableCell<?,?> c = tbl2.getCell(0, col++);
-            assertEquals(td, c.getTextDirection());
+            col = 0;
+            for (TextDirection td : tds) {
+                TableCell<?, ?> c = tbl2.getCell(0, col++);
+                assertEquals(td, c.getTextDirection());
+            }
         }
-        ppt2.close();
     }
 
-    @Test
-    void tableSpan() throws IOException {
-        String[] files = (xslfOnly()) ? new String[]{"bug60993.pptx"} : new String[]{"bug60993.pptx", "bug60993.ppt"};
-        for (String f : files) {
-            SlideShow<?,?> ppt = openSampleSlideshow(f);
+    @ParameterizedTest
+    @ValueSource(strings = {"bug60993.pptx", "bug60993.ppt"})
+    void tableSpan(String file) throws IOException {
+        assumeFalse(file.endsWith("ppt") && xslfOnly());
+
+        try (SlideShow<?,?> ppt = openSampleSlideshow(file)) {
             Slide<?,?> slide = ppt.getSlides().get(0);
             TableShape<?,?> ts = (TableShape<?,?>)slide.getShapes().get(0);
             int cols = ts.getNumberOfColumns();
@@ -157,11 +153,11 @@ class TestTable {
                 for (int c=0; c<cols; c++) {
                     TableCell<?,?> tc = ts.getCell(r, c);
                     int rc = r*10+c;
-                    String msg = f+" (r"+r+",c"+c+")";
+                    String msg = file+" (r"+r+",c"+c+")";
                     switch (rc) {
                         case 22:
                         case 51:
-                            if (f.endsWith("ppt")) {
+                            if (file.endsWith("ppt")) {
                                 assertNull(tc, msg);
                             } else {
                                 assertNotNull(tc, msg);
@@ -189,7 +185,6 @@ class TestTable {
                     }
                 }
             }
-            ppt.close();
         }
     }
 }
\ No newline at end of file

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/usermodel/TestEmbedOLEPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/usermodel/TestEmbedOLEPackage.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/usermodel/TestEmbedOLEPackage.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/usermodel/TestEmbedOLEPackage.java Fri May 14 00:37:50 2021
@@ -24,7 +24,6 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.MessageDigest;
@@ -35,6 +34,7 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hpsf.ClassIDPredefined;
 import org.apache.poi.hssf.HSSFTestDataSamples;
@@ -121,9 +121,9 @@ class TestEmbedOLEPackage {
 
             try (POIFSFileSystem scratchFS = new POIFSFileSystem();
                 POIFSFileSystem ole1FS = new POIFSFileSystem(new ByteArrayInputStream(oleShapes.get(0).getObjectData()))) {
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
                 scratch.writeOut(bos);
-                scratchFS.createDocument(new ByteArrayInputStream(bos.toByteArray()), Ole10Native.OLE10_NATIVE);
+                scratchFS.createDocument(bos.toInputStream(), Ole10Native.OLE10_NATIVE);
                 scratchFS.getRoot().setStorageClsid(ClassIDPredefined.OLE_V1_PACKAGE.getClassID());
                 assertTrue(EntryUtils.areDirectoriesIdentical(ole1FS.getRoot(), scratchFS.getRoot()));
             }
@@ -220,7 +220,7 @@ class TestEmbedOLEPackage {
         sh1.setAnchor(new java.awt.Rectangle(50, 50, 100, 200));
         sh1.setFillColor(java.awt.Color.red);
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
         ppt.write(bos);
         ppt.close();
 



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