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 [5/17] - in /poi: site/src/documentation/content/xdocs/ site/src/documentation/content/xdocs/components/ trunk/ trunk/maven/ trunk/osgi/ trunk/osgi/src/test/java/org/apache/poi/osgi/ trunk/poi-examples/src/main/java/org/apache/poi/...

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/DeferredSXSSFITestDataProvider.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/DeferredSXSSFITestDataProvider.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/DeferredSXSSFITestDataProvider.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/DeferredSXSSFITestDataProvider.java Fri May 14 00:37:50 2021
@@ -19,6 +19,12 @@
 
 package org.apache.poi.xssf;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ss.ITestDataProvider;
 import org.apache.poi.ss.SpreadsheetVersion;
@@ -31,13 +37,6 @@ import org.apache.poi.xssf.streaming.SXS
 import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-
 public final class DeferredSXSSFITestDataProvider implements ITestDataProvider {
     public static final DeferredSXSSFITestDataProvider instance = new DeferredSXSSFITestDataProvider();
 
@@ -69,16 +68,14 @@ public final class DeferredSXSSFITestDat
             throw new IllegalArgumentException("Expected an instance of XSSFWorkbook");
         }
 
-        XSSFWorkbook result;
-        try {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
+        try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) {
             wb.write(baos);
-            InputStream is = new ByteArrayInputStream(baos.toByteArray());
-            result = new XSSFWorkbook(is);
+            try (InputStream is = baos.toInputStream()) {
+                return new XSSFWorkbook(is);
+            }
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-        return result;
     }
 
     @Override
@@ -87,7 +84,7 @@ public final class DeferredSXSSFITestDat
         instances.add(wb);
         return wb;
     }
-    
+
     //************ SXSSF-specific methods ***************//
     @Override
     public DeferredSXSSFWorkbook createWorkbook(int rowAccessWindowSize) {
@@ -95,13 +92,13 @@ public final class DeferredSXSSFITestDat
         instances.add(wb);
         return wb;
     }
-    
+
     @Override
     public void trackAllColumnsForAutosizing(Sheet sheet) {
         ((DeferredSXSSFSheet)sheet).trackAllColumnsForAutoSizing();
     }
     //************ End SXSSF-specific methods ***************//
-    
+
     @Override
     public FormulaEvaluator createFormulaEvaluator(Workbook wb) {
         return new XSSFFormulaEvaluator(((DeferredSXSSFWorkbook) wb).getXSSFWorkbook());

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/SXSSFITestDataProvider.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/SXSSFITestDataProvider.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/SXSSFITestDataProvider.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/SXSSFITestDataProvider.java Fri May 14 00:37:50 2021
@@ -19,13 +19,12 @@
 
 package org.apache.poi.xssf;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ss.ITestDataProvider;
 import org.apache.poi.ss.SpreadsheetVersion;
@@ -68,16 +67,14 @@ public final class SXSSFITestDataProvide
             throw new IllegalArgumentException("Expected an instance of SXSSFWorkbook");
         }
 
-        XSSFWorkbook result;
-        try {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
+        try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) {
             wb.write(baos);
-            InputStream is = new ByteArrayInputStream(baos.toByteArray());
-            result = new XSSFWorkbook(is);
+            try (InputStream is = baos.toInputStream()) {
+                return new XSSFWorkbook(is);
+            }
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-        return result;
     }
 
     @Override

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFMemoryLeak.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFMemoryLeak.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFMemoryLeak.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFMemoryLeak.java Fri May 14 00:37:50 2021
@@ -21,13 +21,13 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
@@ -72,7 +72,7 @@ public class TestXSSFMemoryLeak {
             // not freed until we free up the Cell itself
             //verifier.addObject(ctCell);
 
-            try (OutputStream out = new ByteArrayOutputStream(8192)) {
+            try (OutputStream out = new UnsynchronizedByteArrayOutputStream(8192)) {
                 wb.write(out);
             }
 

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/XSSFTestDataSamples.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/XSSFTestDataSamples.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/XSSFTestDataSamples.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/XSSFTestDataSamples.java Fri May 14 00:37:50 2021
@@ -17,14 +17,13 @@
 
 package org.apache.poi.xssf;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -62,8 +61,8 @@ public class XSSFTestDataSamples {
     }
 
     /**
-     * Write out workbook <code>wb</code> to {@link #TEST_OUTPUT_DIR}/testName.xlsx
-     * (or create a temporary file if <code>TEST_OUTPUT_DIR</code> is not defined).
+     * Write out workbook {@code wb} to {@link #TEST_OUTPUT_DIR}/testName.xlsx
+     * (or create a temporary file if {@code TEST_OUTPUT_DIR} is not defined).
      *
      * @param wb the workbook to write
      * @param testName a fragment of the filename
@@ -93,7 +92,7 @@ public class XSSFTestDataSamples {
         final File file;
         if (testOutputDir != null) {
             // In case user provided testName with a file extension, don't repeat the file extension a second time
-            final String testNameWithExtension = testName.endsWith(".xlsx") ? testName : testName + ".xlsx";
+            final String testNameWithExtension = (testName.endsWith(".xlsx") || testName.endsWith(".xlsxm")) ? testName : testName + ".xlsx";
             // FIXME: may want to defer to the TempFile with a persistent file creation strategy to the test output dir
             // This would add the random value in the middle of the filename so that test runs wouldn't overwrite files
             file = new File(testOutputDir, testNameWithExtension);
@@ -110,14 +109,14 @@ public class XSSFTestDataSamples {
     }
 
     /**
-     * Write out workbook <code>wb</code> to a memory buffer
+     * Write out workbook {@code wb} to a memory buffer
      *
      * @param wb the workbook to write
      * @return the memory buffer
      * @throws IOException If writing the file fails
      */
-    public static <R extends Workbook> ByteArrayOutputStream writeOut(R wb) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream(8192);
+    public static <R extends Workbook> UnsynchronizedByteArrayOutputStream writeOut(R wb) throws IOException {
+        UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(8192);
         wb.write(out);
         return out;
     }
@@ -130,10 +129,10 @@ public class XSSFTestDataSamples {
      * Make sure there are no references to any objects in the workbook
      * so that garbage collection may free the workbook.
      *
-     * After calling this method, null the reference to <code>wb</code>,
+     * After calling this method, null the reference to {@code wb},
      * then call {@link #readBack(File)} or {@link #readBackAndDelete(File)} to re-read the file.
      *
-     * Alternatively, use {@link #writeOutAndClose(Workbook)} to use a ByteArrayOutputStream/ByteArrayInputStream
+     * Alternatively, use {@link #writeOutAndClose(Workbook)} to use a UnsynchronizedByteArrayOutputStream/ByteArrayInputStream
      * to avoid creating a temporary file. However, this may complicate the calling
      * code to avoid having the workbook, BAOS, and BAIS open at the same time.
      *
@@ -156,15 +155,15 @@ public class XSSFTestDataSamples {
 
 
     /**
-     * Write out workbook <code>wb</code> to a memory buffer,
+     * Write out workbook {@code wb} to a memory buffer,
      * then close the workbook
      *
      * @param wb the workbook to write
      * @return the memory buffer
      * @throws RuntimeException If writing the file fails
      */
-    public static <R extends Workbook> ByteArrayOutputStream writeOutAndClose(R wb) throws IOException {
-        ByteArrayOutputStream out = writeOut(wb);
+    public static <R extends Workbook> UnsynchronizedByteArrayOutputStream writeOutAndClose(R wb) throws IOException {
+        UnsynchronizedByteArrayOutputStream out = writeOut(wb);
         // Do not close the workbook if there was a problem writing the workbook
         wb.close();
         return out;
@@ -211,8 +210,8 @@ public class XSSFTestDataSamples {
      * @return the read back workbook
      * @throws IOException If reading the file fails
      */
-    public static XSSFWorkbook readBack(ByteArrayOutputStream out) throws IOException {
-        try (InputStream is = new ByteArrayInputStream(out.toByteArray())) {
+    public static XSSFWorkbook readBack(UnsynchronizedByteArrayOutputStream out) throws IOException {
+        try (InputStream is = out.toInputStream()) {
             out.close();
             return new XSSFWorkbook(is);
         }
@@ -226,12 +225,12 @@ public class XSSFTestDataSamples {
      * Workbook wb = new XSSFWorkbook();
      * String testName = "example";
      *
-     * <code>
+     * {@code
      * File file = writeOutAndClose(wb, testName);
      * // clear all references that would prevent the workbook from getting garbage collected
      * wb = null;
      * Workbook wbBack = readBackAndDelete(file);
-     * </code>
+     * }
      *
      * @param wb the workbook to write out
      * @return the read back workbook

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExportToXML.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExportToXML.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExportToXML.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExportToXML.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.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Collection;
@@ -34,6 +33,7 @@ import java.util.regex.Pattern;
 
 import javax.xml.parsers.DocumentBuilder;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.util.DocumentHelper;
 import org.apache.poi.ss.usermodel.Cell;
@@ -66,7 +66,7 @@ public final class TestXSSFExportToXML {
 
                 XSSFMap map = mapInfo.getXSSFMapById(1);
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xml = os.toString("UTF-8");
 
@@ -114,7 +114,7 @@ public final class TestXSSFExportToXML {
 
                 XSSFMap map = mapInfo.getXSSFMapById(1);
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xml = os.toString("UTF-8");
 
@@ -187,7 +187,7 @@ public final class TestXSSFExportToXML {
                     assertNotNull(map);
 
                     XSSFExportToXml exporter = new XSSFExportToXml(map);
-                    ByteArrayOutputStream os = new ByteArrayOutputStream();
+                    UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                     exporter.exportToXML(os, true);
                     String xml = os.toString("UTF-8");
 
@@ -223,7 +223,7 @@ public final class TestXSSFExportToXML {
             for (XSSFMap map : wb.getCustomXMLMappings()) {
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
 
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
             }
         }
@@ -246,7 +246,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -290,7 +290,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -325,7 +325,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -364,7 +364,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -390,7 +390,7 @@ public final class TestXSSFExportToXML {
             for (XSSFMap map : wb.getCustomXMLMappings()) {
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
 
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -468,7 +468,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -546,7 +546,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -577,7 +577,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, false);
                 String xmlData = os.toString("UTF-8");
 
@@ -609,7 +609,7 @@ public final class TestXSSFExportToXML {
                 assertNotNull(map, "XSSFMap is null");
 
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, true);
                 String xmlData = os.toString("UTF-8");
 
@@ -635,7 +635,7 @@ public final class TestXSSFExportToXML {
             for (XSSFMap map : mappings) {
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
 
-                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(os, false);
                 assertNotNull(os.toString("UTF-8"));
             }
@@ -647,9 +647,9 @@ public final class TestXSSFExportToXML {
         try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("61281.xlsx")) {
             for (XSSFMap map : wb.getCustomXMLMappings()) {
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
                 exporter.exportToXML(bos, true);
-                assertNotNull(DocumentHelper.readDocument(new ByteArrayInputStream(bos.toByteArray())));
+                assertNotNull(DocumentHelper.readDocument(bos.toInputStream()));
                 String exportedXml = bos.toString("UTF-8");
                 assertEquals("<Test><Test>1</Test></Test>", exportedXml.replaceAll("\\s+", ""));
             }
@@ -661,7 +661,7 @@ public final class TestXSSFExportToXML {
         try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("xxe_in_schema.xlsx")) {
             for (XSSFMap map : wb.getCustomXMLMappings()) {
                 XSSFExportToXml exporter = new XSSFExportToXml(map);
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
                 assertThrows(SAXParseException.class, () -> exporter.exportToXML(bos, true));
             }
         }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java Fri May 14 00:37:50 2021
@@ -19,6 +19,7 @@
 
 package org.apache.poi.xssf.streaming;
 
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
 import static org.apache.poi.POITestCase.assertEndsWith;
 import static org.apache.poi.POITestCase.assertStartsWith;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@@ -29,14 +30,13 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackageAccess;
@@ -48,7 +48,6 @@ import org.apache.poi.ss.usermodel.Sheet
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.apache.poi.ss.util.CellReference;
-import org.apache.poi.util.NullOutputStream;
 import org.apache.poi.xssf.SXSSFITestDataProvider;
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.xssf.model.SharedStringsTable;
@@ -74,7 +73,7 @@ public final class TestSXSSFWorkbook ext
     @Override
     @Test
     protected void cloneSheet() throws IOException {
-        RuntimeException e = assertThrows(RuntimeException.class, () -> super.cloneSheet());
+        RuntimeException e = assertThrows(RuntimeException.class, super::cloneSheet);
         assertEquals("Not Implemented", e.getMessage());
     }
 
@@ -84,7 +83,7 @@ public final class TestSXSSFWorkbook ext
     @Override
     @Test
     protected void sheetClone() {
-        RuntimeException e = assertThrows(RuntimeException.class, () -> super.sheetClone());
+        RuntimeException e = assertThrows(RuntimeException.class, super::sheetClone);
         assertEquals("Not Implemented", e.getMessage());
     }
 
@@ -407,8 +406,8 @@ public final class TestSXSSFWorkbook ext
 
     private static void saveTwice(Workbook wb) throws Exception {
         for (int i = 0; i < 2; i++) {
-            try (NullOutputStream out = new NullOutputStream()) {
-                wb.write(out);
+            try {
+                wb.write(NULL_OUTPUT_STREAM);
             } catch (Exception e) {
                 throw new Exception("ERROR: failed on " + (i + 1)
                         + "th time calling " + wb.getClass().getName()
@@ -471,7 +470,7 @@ public final class TestSXSSFWorkbook ext
                 }
             }
 
-            assertDoesNotThrow(() -> swb.write(new NullOutputStream()));
+            assertDoesNotThrow(() -> swb.write(NULL_OUTPUT_STREAM));
             swb.dispose();
         }
     }
@@ -489,7 +488,7 @@ public final class TestSXSSFWorkbook ext
         File input = XSSFTestDataSamples.getSampleFile("sample.xlsx");
 
         try (OPCPackage pkg = OPCPackage.open(input, PackageAccess.READ)) {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
             try (XSSFWorkbook xssf = new XSSFWorkbook(pkg)) {
                 try (SXSSFWorkbook wb = new SXSSFWorkbook(xssf, 2)) {
                     Sheet s = wb.createSheet(sheetName);
@@ -506,7 +505,7 @@ public final class TestSXSSFWorkbook ext
                 }
             }
 
-            try (XSSFWorkbook xssf = new XSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+            try (XSSFWorkbook xssf = new XSSFWorkbook(bos.toInputStream())) {
                 Sheet s = xssf.getSheet(sheetName);
                 assertEquals(10, s.getLastRowNum());
                 assertTrue(s.getRow(0).getCell(0).getBooleanCellValue());
@@ -518,20 +517,17 @@ public final class TestSXSSFWorkbook ext
 
     @Test
     void test56557() throws IOException {
-        Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56557.xlsx");
-
-        // Using streaming XSSFWorkbook makes the output file invalid
-        wb = new SXSSFWorkbook(((XSSFWorkbook) wb));
-
-        // Should not throw POIXMLException: java.io.IOException: Unable to parse xml bean when reading back
-        Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
-        assertNotNull(wbBack);
-        wbBack.close();
-
-        wb.close();
+        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56557.xlsx");
+             // Using streaming XSSFWorkbook makes the output file invalid
+             Workbook wb2 = new SXSSFWorkbook(wb);
+             // Should not throw POIXMLException: java.io.IOException: Unable to parse xml bean when reading back
+             Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb2)
+         ) {
+            assertNotNull(wbBack);
+        }
     }
 
+    @Disabled("not implemented")
     void changeSheetNameWithSharedFormulas() {
-        /* not implemented */
     }
 }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbookWithCustomZipEntrySource.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbookWithCustomZipEntrySource.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbookWithCustomZipEntrySource.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbookWithCustomZipEntrySource.java Fri May 14 00:37:50 2021
@@ -20,12 +20,11 @@
 package org.apache.poi.xssf.streaming;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -33,6 +32,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.util.ZipEntrySource;
@@ -58,38 +58,40 @@ public final class TestSXSSFWorkbookWith
     // write an unencrypted workbook to disk, but any temporary files are encrypted
     @Test
     void customZipEntrySource() throws IOException {
-        SXSSFWorkbookWithCustomZipEntrySource workbook = new SXSSFWorkbookWithCustomZipEntrySource();
-        SXSSFSheet sheet1 = workbook.createSheet(sheetName);
-        SXSSFRow row1 = sheet1.createRow(1);
-        SXSSFCell cell1 = row1.createCell(1);
-        cell1.setCellValue(cellValue);
-        ByteArrayOutputStream os = new ByteArrayOutputStream(8192);
-        workbook.write(os);
-        workbook.close();
-        workbook.dispose();
-        XSSFWorkbook xwb = new XSSFWorkbook(new ByteArrayInputStream(os.toByteArray()));
-        XSSFSheet xs1 = xwb.getSheetAt(0);
-        assertEquals(sheetName, xs1.getSheetName());
-        XSSFRow xr1 = xs1.getRow(1);
-        XSSFCell xc1 = xr1.getCell(1);
-        assertEquals(cellValue, xc1.getStringCellValue());
-        xwb.close();
+        UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(8192);
+        try (SXSSFWorkbookWithCustomZipEntrySource workbook = new SXSSFWorkbookWithCustomZipEntrySource()) {
+            SXSSFSheet sheet1 = workbook.createSheet(sheetName);
+            SXSSFRow row1 = sheet1.createRow(1);
+            SXSSFCell cell1 = row1.createCell(1);
+            cell1.setCellValue(cellValue);
+            workbook.write(os);
+            workbook.close();
+            workbook.dispose();
+        }
+        try (XSSFWorkbook xwb = new XSSFWorkbook(os.toInputStream())) {
+            XSSFSheet xs1 = xwb.getSheetAt(0);
+            assertEquals(sheetName, xs1.getSheetName());
+            XSSFRow xr1 = xs1.getRow(1);
+            XSSFCell xc1 = xr1.getCell(1);
+            assertEquals(cellValue, xc1.getStringCellValue());
+        }
     }
 
     // write an encrypted workbook to disk, and encrypt any temporary files as well
     @Test
     void customZipEntrySourceForWriteAndRead() throws IOException, InvalidFormatException {
-        SXSSFWorkbookWithCustomZipEntrySource workbook = new SXSSFWorkbookWithCustomZipEntrySource();
-        SXSSFSheet sheet1 = workbook.createSheet(sheetName);
-        SXSSFRow row1 = sheet1.createRow(1);
-        SXSSFCell cell1 = row1.createCell(1);
-        cell1.setCellValue(cellValue);
         EncryptedTempData tempData = new EncryptedTempData();
-        try (OutputStream os = tempData.getOutputStream()) {
-            workbook.write(os);
+        try (SXSSFWorkbookWithCustomZipEntrySource workbook = new SXSSFWorkbookWithCustomZipEntrySource()) {
+            SXSSFSheet sheet1 = workbook.createSheet(sheetName);
+            SXSSFRow row1 = sheet1.createRow(1);
+            SXSSFCell cell1 = row1.createCell(1);
+            cell1.setCellValue(cellValue);
+            try (OutputStream os = tempData.getOutputStream()) {
+                workbook.write(os);
+            }
+            workbook.close();
+            workbook.dispose();
         }
-        workbook.close();
-        workbook.dispose();
         try (InputStream is = tempData.getInputStream();
              ZipEntrySource zipEntrySource = AesZipFileZipEntrySource.createZipEntrySource(is)) {
             tempData.dispose();
@@ -111,8 +113,7 @@ public final class TestSXSSFWorkbookWith
         SXSSFRow row1 = sheet1.createRow(1);
         SXSSFCell cell1 = row1.createCell(1);
         cell1.setCellValue(cellValue);
-        ByteArrayOutputStream os = new ByteArrayOutputStream(8192);
-        workbook.write(os);
+        workbook.write(NULL_OUTPUT_STREAM);
         workbook.close();
         List<File> tempFiles = workbook.getTempFiles();
         assertEquals(1, tempFiles.size());

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java Fri May 14 00:37:50 2021
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -24,13 +25,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.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Hashtable;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ss.formula.OperationEvaluationContext;
 import org.apache.poi.ss.formula.eval.NumberEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
@@ -242,7 +243,7 @@ public final class TestUnfixedBugs {
 
         checkRows57423(testSheet);
 
-        Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
+        Workbook wbBack = writeOutAndReadBack(wb);
         /* XSSFTestDataSamples.writeOut(wb, "bug 57423 for manual review"); */
 
         wb.close();
@@ -277,12 +278,8 @@ public final class TestUnfixedBugs {
         checkRow57423(testSheet, 17, "17");
         checkRow57423(testSheet, 18, "18");
 
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
-        try {
-            ((XSSFSheet)testSheet).write(stream);
-        } finally {
-            stream.close();
-        }
+        UnsynchronizedByteArrayOutputStream stream = new UnsynchronizedByteArrayOutputStream();
+        ((XSSFSheet)testSheet).write(stream);
 
         // verify that the resulting XML has the rows in correct order as required by Excel
         String xml = new String(stream.toByteArray(), StandardCharsets.UTF_8);
@@ -310,27 +307,21 @@ public final class TestUnfixedBugs {
 
     @Test
     void bug57423_shiftRowsByLargeOffset() throws IOException {
-        try (
-                XSSFWorkbook wb = new XSSFWorkbook()
-                //OutputStream out = new FileOutputStream("/tmp/57423." + wb.getClass().getName() + ".xlsx"));
-        ) {
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
             Sheet sh = wb.createSheet();
             sh.createRow(0).createCell(0).setCellValue("a");
             sh.createRow(1).createCell(0).setCellValue("b");
             sh.createRow(2).createCell(0).setCellValue("c");
             sh.shiftRows(0, 1, 3);
 
-            XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
-
-            assertThatRowsInAscendingOrder(wb);
-            assertThatRowsInAscendingOrder(wbBack);
-
-            //wbBack.write(out);
-            // Excel reports that the workbook is corrupt because the rows are not in ascending order
-            // LibreOffice doesn't complain when rows are not in ascending order
-
-            wbBack.close();
-
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
+                assertThatRowsInAscendingOrder(wb);
+                assertThatRowsInAscendingOrder(wbBack);
+
+                //wbBack.write(out);
+                // Excel reports that the workbook is corrupt because the rows are not in ascending order
+                // LibreOffice doesn't complain when rows are not in ascending order
+            }
             fail("Excel reports that the workbook is corrupt, LibreOffice can read it");
         }
     }



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