Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java Thu Jun 8 08:53:08 2023 @@ -56,7 +56,7 @@ public final class TestUserEditAtom { @Test void testWrite() throws Exception { UserEditAtom uea = new UserEditAtom(data_a, 0, data_a.length); - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); uea.writeOut(baos); assertArrayEquals(data_a, baos.toByteArray()); }
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java Thu Jun 8 08:53:08 2023 @@ -40,7 +40,7 @@ public class TestHSLFSlideShow extends B @Override public HSLFSlideShow reopen(SlideShow<HSLFShape, HSLFTextParagraph> show) throws IOException { - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { show.write(bos); try (InputStream is = bos.toInputStream()) { return new HSLFSlideShow(is); Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java Thu Jun 8 08:53:08 2023 @@ -17,7 +17,6 @@ package org.apache.poi.hslf.usermodel; -import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM; import static org.apache.poi.hslf.HSLFTestDataSamples.getSlideShow; import static org.apache.poi.hslf.HSLFTestDataSamples.writeOutAndReadBack; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -38,6 +37,7 @@ import java.util.List; import javax.imageio.ImageIO; import org.apache.commons.io.output.CountingOutputStream; +import org.apache.commons.io.output.NullOutputStream; import org.apache.poi.POIDataSamples; import org.apache.poi.ddf.EscherBSERecord; import org.apache.poi.ddf.EscherContainerRecord; @@ -315,7 +315,7 @@ public final class TestPictures { assertEquals(PictureType.WMF, pdata.getType()); //add a new picture, it should be correctly appended to the Pictures stream - CountingOutputStream out = new CountingOutputStream(NULL_OUTPUT_STREAM); + CountingOutputStream out = new CountingOutputStream(NullOutputStream.INSTANCE); for (HSLFPictureData p : pictures) p.write(out); int streamSize = out.getCount(); Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java Thu Jun 8 08:53:08 2023 @@ -409,7 +409,7 @@ public final class TestRichTextRun { // Now write out the slideshow byte[] raw_ss; - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); s.write(baos); try (POIFSFileSystem fs = new POIFSFileSystem(baos.toInputStream()); InputStream is = fs.createDocumentInputStream(HSLFSlideShow.POWERPOINT_DOCUMENT)) { @@ -424,7 +424,7 @@ public final class TestRichTextRun { } private byte[] writeRecord( org.apache.poi.hslf.record.Record r) throws IOException { - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); r.writeOut(baos); return baos.toByteArray(); } Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java Thu Jun 8 08:53:08 2023 @@ -81,7 +81,7 @@ public class TestExtractEmbeddedMSG { testFixedAndVariableLengthPropertiesOfAttachedMSG(attachedMsg); // rebuild top level message from embedded message try (POIFSFileSystem extractedAttachedMsg = rebuildFromAttached(attachedMsg)) { - try (UnsynchronizedByteArrayOutputStream extractedAttachedMsgOut = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream extractedAttachedMsgOut = UnsynchronizedByteArrayOutputStream.builder().get()) { extractedAttachedMsg.writeFilesystem(extractedAttachedMsgOut); MAPIMessage extractedMsgTopLevel = new MAPIMessage(extractedAttachedMsgOut.toInputStream()); // test properties of rebuilt embedded message @@ -171,7 +171,7 @@ public class TestExtractEmbeddedMSG { MAPIType type = Types.getById(iType); if (type != null && type != Types.UNKNOWN) { MAPIProperty mprop = MAPIProperty.createCustom(chunk.getChunkId(), type, chunk.getEntryName()); - UnsynchronizedByteArrayOutputStream data = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream data = UnsynchronizedByteArrayOutputStream.builder().get(); chunk.writeValue(data); PropertyValue pval = new PropertyValue(mprop, MessagePropertiesChunk.PROPERTIES_FLAG_READABLE | MessagePropertiesChunk.PROPERTIES_FLAG_WRITEABLE, data.toByteArray(), type); Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileWithAttachmentsRead.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileWithAttachmentsRead.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileWithAttachmentsRead.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileWithAttachmentsRead.java Thu Jun 8 08:53:08 2023 @@ -119,7 +119,7 @@ public class TestFileWithAttachmentsRead assertEquals("test-unicode.doc", attachment.getAttachLongFileName().getValue()); assertEquals(".doc", attachment.getAttachExtension().getValue()); assertNull(attachment.getAttachMimeTag()); - UnsynchronizedByteArrayOutputStream attachmentstream = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream attachmentstream = UnsynchronizedByteArrayOutputStream.builder().get(); attachment.getAttachData().writeValue(attachmentstream); assertEquals(24064, attachmentstream.size()); // or compare the hashes of the attachment data Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFixedSizedProperties.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFixedSizedProperties.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFixedSizedProperties.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFixedSizedProperties.java Thu Jun 8 08:53:08 2023 @@ -168,7 +168,7 @@ public final class TestFixedSizedPropert @Test void testReadMessageDateSucceedsWithHSMFDump() { HSMFDump dump = new HSMFDump(fsMessageSucceeds); - assertDoesNotThrow(() -> dump.dump(new NullPrintStream())); + assertDoesNotThrow(() -> dump.dump(NullPrintStream.INSTANCE)); } /** @@ -177,7 +177,7 @@ public final class TestFixedSizedPropert @Test void testReadMessageDateFailsWithHSMFDump() { HSMFDump dump = new HSMFDump(fsMessageFails); - assertDoesNotThrow(() -> dump.dump(new NullPrintStream())); + assertDoesNotThrow(() -> dump.dump(NullPrintStream.INSTANCE)); } /** Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestCase.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestCase.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestCase.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestCase.java Thu Jun 8 08:53:08 2023 @@ -49,7 +49,7 @@ public abstract class HWPFTestCase { } public HWPFDocument writeOutAndRead(HWPFDocument doc) { - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get()) { doc.write(baos); try (InputStream is = baos.toInputStream()) { return new HWPFDocument(is); Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java Thu Jun 8 08:53:08 2023 @@ -48,7 +48,7 @@ public class HWPFTestDataSamples { * Useful for verifying that the serialisation round trip */ public static HWPFDocument writeOutAndReadBack(HWPFDocument original) { - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(4096)) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(4096).get()) { original.write(baos); return new HWPFDocument(baos.toInputStream()); } catch (IOException e) { Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/dev/TestHWPFLister.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/dev/TestHWPFLister.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/dev/TestHWPFLister.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/dev/TestHWPFLister.java Thu Jun 8 08:53:08 2023 @@ -42,7 +42,7 @@ public class TestHWPFLister { String fileArgs = SAMPLES.getFile("SampleDoc.doc").getAbsolutePath() + args; PrintStream oldStdOut = System.out; - System.setOut(new NullPrintStream()); + System.setOut(NullPrintStream.INSTANCE); try { assertDoesNotThrow(() -> HWPFLister.main(fileArgs.split(" "))); Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java (original) +++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java Thu Jun 8 08:53:08 2023 @@ -47,7 +47,7 @@ public final class TestHWPFWrite extends */ @Test void testWriteStream() throws IOException { - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); try (HWPFDocument doc = HWPFTestDataSamples.openSampleFile("SampleDoc.doc")) { Range r = doc.getRange(); assertEquals("I am a test document\r", r.getParagraph(0).text()); Modified: poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java Thu Jun 8 08:53:08 2023 @@ -336,7 +336,7 @@ public abstract class POIDocument implem * {@link POIFSFileSystem} occurs */ private void writePropertySet(String name, PropertySet set, POIFSFileSystem outFS) throws IOException { - try (UnsynchronizedByteArrayOutputStream bOut = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bOut = UnsynchronizedByteArrayOutputStream.builder().get()) { PropertySet mSet = new PropertySet(set); mSet.write(bOut); Modified: poi/trunk/poi/src/main/java/org/apache/poi/ddf/EscherMetafileBlip.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ddf/EscherMetafileBlip.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/ddf/EscherMetafileBlip.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/ddf/EscherMetafileBlip.java Thu Jun 8 08:53:08 2023 @@ -192,8 +192,8 @@ public final class EscherMetafileBlip ex * @return the inflated picture data. */ private static byte[] inflatePictureData(byte[] data) { - try (InflaterInputStream in = new InflaterInputStream(new UnsynchronizedByteArrayInputStream(data)); - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream()) { + try (InflaterInputStream in = new InflaterInputStream(UnsynchronizedByteArrayInputStream.builder().setByteArray(data).get()); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get()) { IOUtils.copy(in, out); return out.toByteArray(); } catch (IOException e) { @@ -410,7 +410,7 @@ public final class EscherMetafileBlip ex // "... LZ compression algorithm in the format used by GNU Zip deflate/inflate with a 32k window ..." // not sure what to do, when lookup tables exceed 32k ... - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { try (DeflaterOutputStream dos = new DeflaterOutputStream(bos)) { dos.write(pictureData); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java Thu Jun 8 08:53:08 2023 @@ -272,7 +272,7 @@ public class Property { /* Variable length: */ if (type == Variant.VT_LPSTR || type == Variant.VT_LPWSTR) { - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); try { length = write(bos, property) - 2*LittleEndianConsts.INT_SIZE; /* Pad to multiples of 4. */ @@ -399,7 +399,7 @@ public class Property { if (value instanceof String) { b.append((String)value); b.append("\n"); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); try { write(bos, codepage); } catch (Exception e) { Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/PropertySet.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/PropertySet.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/PropertySet.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/PropertySet.java Thu Jun 8 08:53:08 2023 @@ -514,7 +514,7 @@ public class PropertySet { } private byte[] toBytes() throws WritingNotSupportedException, IOException { - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); LittleEndianOutputStream leos = new LittleEndianOutputStream(bos)) { /* Write the number of sections in this property set stream. */ @@ -599,7 +599,7 @@ public class PropertySet { * @throws IOException if an I/O exception occurs. */ public InputStream toInputStream() throws WritingNotSupportedException, IOException { - return new UnsynchronizedByteArrayInputStream(toBytes()); + return UnsynchronizedByteArrayInputStream.builder().setByteArray(toBytes()).get(); } /** Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java Thu Jun 8 08:53:08 2023 @@ -64,7 +64,7 @@ public class Section { * established when the section's size is calculated and can be reused * later. If the array is empty, the section was modified and the bytes need to be regenerated. */ - private final UnsynchronizedByteArrayOutputStream sectionBytes = new UnsynchronizedByteArrayOutputStream(); + private final UnsynchronizedByteArrayOutputStream sectionBytes = UnsynchronizedByteArrayOutputStream.builder().get(); /** * The offset of the section in the stream. @@ -733,7 +733,7 @@ public class Section { } final int[][] offsets = new int[properties.size()][2]; - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); LittleEndianOutputStream leos = new LittleEndianOutputStream(bos)) { /* Write the section's length - dummy value, fixed later */ Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java Thu Jun 8 08:53:08 2023 @@ -18,6 +18,7 @@ */ package org.apache.poi.hssf.record; +import java.io.IOException; import java.util.Arrays; import java.util.Map; import java.util.function.Supplier; @@ -278,7 +279,13 @@ public class DConRefRecord extends Stand } private static RecordInputStream bytesToRIStream(byte[] data) { - RecordInputStream ric = new RecordInputStream(new UnsynchronizedByteArrayInputStream(data)); + RecordInputStream ric = null; + try { + ric = new RecordInputStream(UnsynchronizedByteArrayInputStream.builder().setByteArray(data).get()); + } catch (IOException e) { + // not possible with ByteArray but still declared in the API + throw new IllegalStateException(e); + } ric.nextRecord(); return ric; } Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java Thu Jun 8 08:53:08 2023 @@ -19,6 +19,7 @@ package org.apache.poi.hssf.record; import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; +import java.io.IOException; import java.util.Map; import java.util.function.Supplier; @@ -48,9 +49,15 @@ public final class DrawingRecordForBiffV private static RecordInputStream convertToInputStream(DrawingRecord r) { byte[] data = r.serialize(); - RecordInputStream rinp = new RecordInputStream( - new UnsynchronizedByteArrayInputStream(data) - ); + RecordInputStream rinp = null; + try { + rinp = new RecordInputStream( + UnsynchronizedByteArrayInputStream.builder().setByteArray(data).get() + ); + } catch (IOException e) { + // not possible with ByteArray but still declared in the API + throw new IllegalStateException(e); + } rinp.nextRecord(); return rinp; } Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java Thu Jun 8 08:53:08 2023 @@ -180,7 +180,7 @@ public final class EmbeddedObjectRefSubR private static Ptg readRefPtg(byte[] formulaRawBytes) { try (LittleEndianInputStream in = new LittleEndianInputStream( - new UnsynchronizedByteArrayInputStream(formulaRawBytes))) { + UnsynchronizedByteArrayInputStream.builder().setByteArray(formulaRawBytes).get())) { byte ptgSid = in.readByte(); switch(ptgSid) { case AreaPtg.sid: return new AreaPtg(in); Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EscherAggregate.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EscherAggregate.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EscherAggregate.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EscherAggregate.java Thu Jun 8 08:53:08 2023 @@ -1034,7 +1034,7 @@ public final class EscherAggregate exten private static class ShapeCollector extends DefaultEscherRecordFactory { final List<EscherRecord> objShapes = new ArrayList<>(); - final UnsynchronizedByteArrayOutputStream buffer = new UnsynchronizedByteArrayOutputStream(); + final UnsynchronizedByteArrayOutputStream buffer = UnsynchronizedByteArrayOutputStream.builder().get(); void addBytes(byte[] data) { try { Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java Thu Jun 8 08:53:08 2023 @@ -122,7 +122,7 @@ public final class FilePassRecord extend @Override protected int getDataSize() { - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); LittleEndianOutputStream leos = new LittleEndianOutputStream(bos); serialize(leos); return bos.size(); Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/Record.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/Record.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/Record.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/Record.java Thu Jun 8 08:53:08 2023 @@ -17,6 +17,8 @@ package org.apache.poi.hssf.record; +import java.io.IOException; + import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; import org.apache.poi.common.Duplicatable; import org.apache.poi.common.usermodel.GenericRecord; @@ -75,7 +77,13 @@ public abstract class Record extends Rec // Do it via a re-serialization // It's a cheat, but it works... byte[] b = serialize(); - RecordInputStream rinp = new RecordInputStream(new UnsynchronizedByteArrayInputStream(b)); + RecordInputStream rinp = null; + try { + rinp = new RecordInputStream(UnsynchronizedByteArrayInputStream.builder().setByteArray(b).get()); + } catch (IOException e) { + // not possible with ByteArray but still declared in the API + throw new IllegalStateException(e); + } rinp.nextRecord(); Record[] r = RecordFactory.createRecord(rinp); Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java Thu Jun 8 08:53:08 2023 @@ -453,7 +453,7 @@ public final class RecordInputStream imp */ @Deprecated public byte[] readAllContinuedRemainder() { - try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(2 * MAX_RECORD_DATA_SIZE)) { + try (UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(2 * MAX_RECORD_DATA_SIZE).get()) { while (true) { byte[] b = readRemainder(); Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/SubRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/SubRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/SubRecord.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/SubRecord.java Thu Jun 8 08:53:08 2023 @@ -136,7 +136,7 @@ public abstract class SubRecord implemen protected abstract int getDataSize(); public byte[] serialize() { int size = getDataSize() + 4; - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(size); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(size).get(); serialize(new LittleEndianOutputStream(baos)); if (baos.size() != size) { throw new IllegalStateException("write size mismatch"); Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPicture.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPicture.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPicture.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPicture.java Thu Jun 8 08:53:08 2023 @@ -18,6 +18,7 @@ package org.apache.poi.hssf.usermodel; import java.awt.Dimension; +import java.io.IOException; import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; import org.apache.poi.ddf.DefaultEscherRecordFactory; @@ -191,7 +192,12 @@ public class HSSFPicture extends HSSFSim EscherBSERecord bse = iwb.getBSERecord(getPictureIndex()); byte[] data = bse.getBlipRecord().getPicturedata(); int type = bse.getBlipTypeWin32(); - return ImageUtils.getImageDimension(new UnsynchronizedByteArrayInputStream(data), type); + try { + return ImageUtils.getImageDimension(UnsynchronizedByteArrayInputStream.builder().setByteArray(data).get(), type); + } catch (IOException e) { + // not possible with ByteArray but still declared in the API + throw new IllegalStateException(e); + } } /** Modified: poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java Thu Jun 8 08:53:08 2023 @@ -1353,7 +1353,7 @@ public final class HSSFWorkbook extends DocumentNode workbookNode = (DocumentNode) dir.getEntry( getWorkbookDirEntryName(dir)); POIFSDocument workbookDoc = new POIFSDocument(workbookNode); - workbookDoc.replaceContents(new UnsynchronizedByteArrayInputStream(getBytes())); + workbookDoc.replaceContents(UnsynchronizedByteArrayInputStream.builder().setByteArray(getBytes()).get()); // Update the properties streams in the file writeProperties(); @@ -1415,7 +1415,7 @@ public final class HSSFWorkbook extends List<String> excepts = new ArrayList<>(1); // Write out the Workbook stream - fs.createDocument(new UnsynchronizedByteArrayInputStream(getBytes()), "Workbook"); + fs.createDocument(UnsynchronizedByteArrayInputStream.builder().setByteArray(getBytes()).get(), "Workbook"); // Write out our HPFS properties, if we have them writeProperties(fs, excepts); @@ -2110,7 +2110,7 @@ public final class HSSFWorkbook extends } } - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { poiData.writeFilesystem(bos); return addOlePackage(bos.toByteArray(), label, fileName, command); } @@ -2138,7 +2138,7 @@ public final class HSSFWorkbook extends Ole10Native.createOleMarkerEntry(oleDir); Ole10Native oleNative = new Ole10Native(label, fileName, command, oleData); - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { oleNative.writeOut(bos); oleDir.createDocument(Ole10Native.OLE10_NATIVE, bos.toInputStream()); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/DocumentOutputStream.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/DocumentOutputStream.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/DocumentOutputStream.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/DocumentOutputStream.java Thu Jun 8 08:53:08 2023 @@ -43,7 +43,7 @@ public final class DocumentOutputStream /** our buffer, when null we're into normal blocks */ private UnsynchronizedByteArrayOutputStream _buffer = - new UnsynchronizedByteArrayOutputStream(POIFSConstants.BIG_BLOCK_MINIMUM_DOCUMENT_SIZE); + UnsynchronizedByteArrayOutputStream.builder().setBufferSize(POIFSConstants.BIG_BLOCK_MINIMUM_DOCUMENT_SIZE).get(); /** our main block stream, when we're into normal blocks */ private POIFSStream _stream; @@ -105,7 +105,7 @@ public final class DocumentOutputStream } // Have an empty one created for now - return parent.createDocument(name, new UnsynchronizedByteArrayInputStream(new byte[0])); + return parent.createDocument(name, UnsynchronizedByteArrayInputStream.builder().setByteArray(new byte[0]).get()); } private void checkBufferSize() throws IOException { Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/Ole10Native.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/Ole10Native.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/Ole10Native.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/Ole10Native.java Thu Jun 8 08:53:08 2023 @@ -254,7 +254,7 @@ public class Ole10Native { */ public static void createOleMarkerEntry(final DirectoryEntry parent) throws IOException { if (!parent.hasEntry(OLE_MARKER_NAME)) { - parent.createDocument(OLE_MARKER_NAME, new UnsynchronizedByteArrayInputStream(OLE_MARKER_BYTES)); + parent.createDocument(OLE_MARKER_NAME, UnsynchronizedByteArrayInputStream.builder().setByteArray(OLE_MARKER_BYTES).get()); } } @@ -402,7 +402,7 @@ public class Ole10Native { switch (mode) { case parsed: { - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); try (LittleEndianOutputStream leos = new LittleEndianOutputStream(bos)) { // total size, will be determined later .. Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java Thu Jun 8 08:53:08 2023 @@ -780,9 +780,9 @@ public class POIFSFileSystem extends Blo // _header.setPropertyStart has been updated on write ... // HeaderBlock - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream( + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize( _header.getBigBlockSize().getBigBlockSize() - ); + ).get(); _header.writeData(baos); getBlockAt(-1).put(baos.toByteArray()); Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java Thu Jun 8 08:53:08 2023 @@ -233,7 +233,11 @@ public class VBAMacroReader implements C } else { // Decompress a previously found module and store the decompressed result into module.buf InputStream stream = new RLEDecompressingInputStream( - new UnsynchronizedByteArrayInputStream(module.buf, moduleOffset, module.buf.length - moduleOffset) + UnsynchronizedByteArrayInputStream.builder(). + setByteArray(module.buf). + setOffset(moduleOffset). + setLength(module.buf.length - moduleOffset). + get() ); module.read(stream); stream.close(); @@ -275,7 +279,7 @@ public class VBAMacroReader implements C } if (decompressedBytes != null) { - module.read(new UnsynchronizedByteArrayInputStream(decompressedBytes)); + module.read(UnsynchronizedByteArrayInputStream.builder().setByteArray(decompressedBytes).get()); } } @@ -668,7 +672,7 @@ public class VBAMacroReader implements C private static String readUnicode(InputStream is) throws IOException { //reads null-terminated unicode string - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { int b0 = IOUtils.readByte(is); int b1 = IOUtils.readByte(is); @@ -688,7 +692,7 @@ public class VBAMacroReader implements C } private static String readMBCS(int firstByte, InputStream is, Charset charset) throws IOException { - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { int len = 0; int b = firstByte; while (b > 0 && len < MAX_STRING_LENGTH) { @@ -802,7 +806,11 @@ public class VBAMacroReader implements C if (w <= 0 || (w & 0x7000) != 0x3000) { continue; } - decompressed = tryToDecompress(new UnsynchronizedByteArrayInputStream(compressed, i, compressed.length - i)); + decompressed = tryToDecompress(UnsynchronizedByteArrayInputStream.builder(). + setByteArray(compressed). + setOffset(i). + setLength(compressed.length - i). + get()); if (decompressed != null) { if (decompressed.length > 9) { //this is a complete hack. The challenge is that there Modified: poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java Thu Jun 8 08:53:08 2023 @@ -85,7 +85,7 @@ public class BitmapImageRenderer impleme public void loadImage(InputStream data, String contentType) throws IOException { InputStream in = data; if (doCache) { - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { IOUtils.copy(data, bos); cachedImage = bos.toByteArray(); cachedContentType = contentType; @@ -104,7 +104,7 @@ public class BitmapImageRenderer impleme cachedImage = data.clone(); cachedContentType = contentType; } - img = readImage(new UnsynchronizedByteArrayInputStream(data), contentType); + img = readImage(UnsynchronizedByteArrayInputStream.builder().setByteArray(data).get(), contentType); } /** Modified: poi/trunk/poi/src/main/java/org/apache/poi/sl/image/ImageHeaderBitmap.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/sl/image/ImageHeaderBitmap.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/sl/image/ImageHeaderBitmap.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/sl/image/ImageHeaderBitmap.java Thu Jun 8 08:53:08 2023 @@ -38,7 +38,7 @@ public class ImageHeaderBitmap { public ImageHeaderBitmap(byte[] data, int offset) { BufferedImage img = null; try { - img = ImageIO.read(new UnsynchronizedByteArrayInputStream(data, offset, data.length-offset)); + img = ImageIO.read(UnsynchronizedByteArrayInputStream.builder().setByteArray(data).setOffset(offset).setLength(data.length-offset).get()); } catch (IOException e) { LOG.atWarn().withThrowable(e).log("Can't determine image dimensions"); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/sl/usermodel/ObjectShape.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/sl/usermodel/ObjectShape.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/sl/usermodel/ObjectShape.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/sl/usermodel/ObjectShape.java Thu Jun 8 08:53:08 2023 @@ -96,7 +96,7 @@ public interface ObjectShape< final Application app = Application.lookup(progId); - try (final UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + try (final UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); final InputStream is = FileMagic.prepareToCheckMagic(readObjectDataRaw())) { final FileMagic fm = FileMagic.valueOf(is); Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java Thu Jun 8 08:53:08 2023 @@ -177,7 +177,7 @@ public class EmbeddedExtractor implement protected EmbeddedData extract(DirectoryNode dn) throws IOException { assert(canExtract(dn)); - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(20000); + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(20000).get(); POIFSFileSystem dest = new POIFSFileSystem()) { copyNodes(dn, dest.getRoot()); // start with a reasonable big size @@ -218,7 +218,7 @@ public class EmbeddedExtractor implement @Override public EmbeddedData extract(DirectoryNode dn) throws IOException { - try(UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + try(UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); InputStream is = dn.createDocumentInputStream("CONTENTS")) { IOUtils.copy(is, bos); return new EmbeddedData(dn.getName() + ".pdf", bos.toByteArray(), CONTENT_TYPE_PDF); Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java Thu Jun 8 08:53:08 2023 @@ -143,6 +143,7 @@ public final class ImageUtils { * @param scaleY the amount by which image height is multiplied relative to the original height. * @return the new Dimensions of the scaled picture in EMUs * @throws IllegalArgumentException if scale values lead to negative or infinite results + * @throws IllegalStateException if the picture data is corrupt */ public static Dimension setPreferredSize(Picture picture, double scaleX, double scaleY) { ClientAnchor anchor = picture.getClientAnchor(); @@ -151,9 +152,15 @@ public final class ImageUtils { Sheet sheet = picture.getSheet(); // in pixel - final Dimension imgSize = (scaleX == Double.MAX_VALUE || scaleY == Double.MAX_VALUE) - ? getImageDimension(new UnsynchronizedByteArrayInputStream(data.getData()), data.getPictureType()) - : new Dimension(); + final Dimension imgSize; + try { + imgSize = (scaleX == Double.MAX_VALUE || scaleY == Double.MAX_VALUE) + ? getImageDimension(UnsynchronizedByteArrayInputStream.builder().setByteArray(data.getData()).get(), data.getPictureType()) + : new Dimension(); + } catch (IOException e) { + // is actually impossible with ByteArray, but still declared in the interface + throw new IllegalStateException(e); + } // in emus final Dimension anchorSize = (scaleX != Double.MAX_VALUE || scaleY != Double.MAX_VALUE) @@ -192,7 +199,12 @@ public final class ImageUtils { Dimension imgSize = null; if (anchor.getCol2() < anchor.getCol1() || anchor.getRow2() < anchor.getRow1()) { PictureData data = picture.getPictureData(); - imgSize = getImageDimension(new UnsynchronizedByteArrayInputStream(data.getData()), data.getPictureType()); + try { + imgSize = getImageDimension(UnsynchronizedByteArrayInputStream.builder().setByteArray(data.getData()).get(), data.getPictureType()); + } catch (IOException e) { + // not possible with ByteArray but still declared in the API + throw new IllegalStateException(e); + } } int w = getDimFromCell(imgSize == null ? 0 : imgSize.getWidth(), anchor.getCol1(), anchor.getDx1(), anchor.getCol2(), anchor.getDx2(), Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordJsonWriter.java Thu Jun 8 08:53:08 2023 @@ -19,8 +19,6 @@ package org.apache.poi.util; -import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM; - import java.awt.Color; import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; @@ -55,6 +53,7 @@ import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.io.output.NullOutputStream; import org.apache.poi.common.usermodel.GenericRecord; import org.apache.poi.util.GenericRecordUtil.AnnotatedFlag; @@ -117,7 +116,7 @@ public class GenericRecordJsonWriter imp protected int childIndex = 0; public GenericRecordJsonWriter(File fileName) throws IOException { - OutputStream os = ("null".equals(fileName.getName())) ? NULL_OUTPUT_STREAM : new FileOutputStream(fileName); + OutputStream os = ("null".equals(fileName.getName())) ? NullOutputStream.INSTANCE : new FileOutputStream(fileName); aw = new AppendableWriter(new OutputStreamWriter(os, StandardCharsets.UTF_8)); fw = new PrintWriter(aw); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordXmlWriter.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordXmlWriter.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordXmlWriter.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/util/GenericRecordXmlWriter.java Thu Jun 8 08:53:08 2023 @@ -19,8 +19,6 @@ package org.apache.poi.util; -import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM; - import java.awt.Color; import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; @@ -50,6 +48,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.commons.io.output.NullOutputStream; import org.apache.poi.common.usermodel.GenericRecord; import org.apache.poi.util.GenericRecordJsonWriter.AppendableWriter; @@ -109,7 +108,7 @@ public class GenericRecordXmlWriter impl private boolean attributePhase = true; public GenericRecordXmlWriter(File fileName) throws IOException { - OutputStream os = ("null".equals(fileName.getName())) ? NULL_OUTPUT_STREAM : new FileOutputStream(fileName); + OutputStream os = ("null".equals(fileName.getName())) ? NullOutputStream.INSTANCE : new FileOutputStream(fileName); fw = new PrintWriter(new OutputStreamWriter(os, StandardCharsets.UTF_8)); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/util/IOUtils.java Thu Jun 8 08:53:08 2023 @@ -141,7 +141,7 @@ public final class IOUtils { checkByteSizeLimit(limit); stream.mark(limit); - try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(limit)) { + try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(limit).get()) { copy(new BoundedInputStream(stream, limit), bos); int readBytes = bos.size(); @@ -238,7 +238,7 @@ public final class IOUtils { final int derivedLen = isLengthKnown ? Math.min(length, derivedMaxLength) : derivedMaxLength; final int byteArrayInitLen = calculateByteArrayInitLength(isLengthKnown, length, derivedMaxLength); final int internalBufferLen = DEFAULT_BUFFER_SIZE; - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(byteArrayInitLen)) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(byteArrayInitLen).get()) { byte[] buffer = new byte[internalBufferLen]; int totalBytes = 0, readBytes; do { Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/LZWDecompresser.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/LZWDecompresser.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/util/LZWDecompresser.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/util/LZWDecompresser.java Thu Jun 8 08:53:08 2023 @@ -102,7 +102,7 @@ public abstract class LZWDecompresser { * of the decompressed input. */ public byte[] decompress(InputStream src) throws IOException { - UnsynchronizedByteArrayOutputStream res = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream res = UnsynchronizedByteArrayOutputStream.builder().get(); decompress(src, res); return res.toByteArray(); } Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/RLEDecompressingInputStream.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/RLEDecompressingInputStream.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/util/RLEDecompressingInputStream.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/util/RLEDecompressingInputStream.java Thu Jun 8 08:53:08 2023 @@ -277,8 +277,8 @@ public class RLEDecompressingInputStream } public static byte[] decompress(byte[] compressed, int offset, int length) throws IOException { - try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); - InputStream instream = new UnsynchronizedByteArrayInputStream(compressed, offset, length); + try (UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); + InputStream instream = UnsynchronizedByteArrayInputStream.builder().setByteArray(compressed).setOffset(offset).setLength(length).get(); InputStream stream = new RLEDecompressingInputStream(instream)) { IOUtils.copy(stream, out); Modified: poi/trunk/poi/src/test/java/org/apache/poi/POIDataSamples.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/POIDataSamples.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/POIDataSamples.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/POIDataSamples.java Thu Jun 8 08:53:08 2023 @@ -264,7 +264,7 @@ public final class POIDataSamples { */ public byte[] readFile(String fileName) { try (InputStream fis = openResourceAsStream(fileName); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) { IOUtils.copy(fis, bos); return bos.toByteArray(); } catch (IOException e) { @@ -273,7 +273,7 @@ public final class POIDataSamples { } public static POIFSFileSystem writeOutAndReadBack(POIFSFileSystem original) throws IOException { - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get()) { original.writeFilesystem(baos); return new POIFSFileSystem(baos.toInputStream()); } Modified: poi/trunk/poi/src/test/java/org/apache/poi/TestPOIDocumentMain.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/TestPOIDocumentMain.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/TestPOIDocumentMain.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/TestPOIDocumentMain.java Thu Jun 8 08:53:08 2023 @@ -87,7 +87,7 @@ final class TestPOIDocumentMain { @Test void WriteReadProperties() throws IOException { - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); // Write them out try (POIDocument xls = openSampleWorkbook("DateFormats.xls"); Modified: poi/trunk/poi/src/test/java/org/apache/poi/ddf/TestEscherDump.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ddf/TestEscherDump.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/ddf/TestEscherDump.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/ddf/TestEscherDump.java Thu Jun 8 08:53:08 2023 @@ -64,7 +64,7 @@ class TestEscherDump { "eJr+iZEHAAA="; private final EscherDump dumper = new EscherDump(); - private final UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + private final UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); private PrintStream stream; @BeforeEach Modified: poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestHPSFBugs.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestHPSFBugs.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestHPSFBugs.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestHPSFBugs.java Thu Jun 8 08:53:08 2023 @@ -121,7 +121,7 @@ final class TestHPSFBugs { // Write out and read back, should still be valid - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); try (POIDocument doc = new HPSFPropertiesOnlyDocument(fs)) { doc.write(baos); } Modified: poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestMetaDataIPI.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestMetaDataIPI.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestMetaDataIPI.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestMetaDataIPI.java Thu Jun 8 08:53:08 2023 @@ -527,7 +527,7 @@ final class TestMetaDataIPI { dsi.write(poifs.getRoot(), DocumentSummaryInformation.DEFAULT_STREAM_NAME); si.write(poifs.getRoot(), SummaryInformation.DEFAULT_STREAM_NAME); - UnsynchronizedByteArrayOutputStream bout = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bout = UnsynchronizedByteArrayOutputStream.builder().get(); poifs.writeFilesystem(bout); poifs.close(); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestReadAllFiles.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestReadAllFiles.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestReadAllFiles.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestReadAllFiles.java Thu Jun 8 08:53:08 2023 @@ -101,7 +101,7 @@ class TestReadAllFiles { /* Create a new POI filesystem containing the origin file's * property set streams: */ - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); try (POIFSFileSystem poiFs = new POIFSFileSystem()) { for (POIFile poifile : Util.readPropertySets(file)) { final InputStream in = new ByteArrayInputStream(poifile.getBytes()); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestWrite.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestWrite.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestWrite.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hpsf/basic/TestWrite.java Thu Jun 8 08:53:08 2023 @@ -110,7 +110,7 @@ class TestWrite { /* Write it to a POIFS and the latter to disk: */ try (OutputStream out = new FileOutputStream(filename); POIFSFileSystem poiFs = new POIFSFileSystem(); - UnsynchronizedByteArrayOutputStream psStream = new UnsynchronizedByteArrayOutputStream()) { + UnsynchronizedByteArrayOutputStream psStream = UnsynchronizedByteArrayOutputStream.builder().get()) { assertThrows(NoFormatIDException.class, () -> ps.write(psStream)); poiFs.createDocument(psStream.toInputStream(), SummaryInformation.DEFAULT_STREAM_NAME); poiFs.writeFilesystem(out); @@ -132,7 +132,7 @@ class TestWrite { /* Create a mutable property set and write it to a POIFS: */ try (OutputStream out = new FileOutputStream(filename); POIFSFileSystem poiFs = new POIFSFileSystem(); - UnsynchronizedByteArrayOutputStream psStream = new UnsynchronizedByteArrayOutputStream()) { + UnsynchronizedByteArrayOutputStream psStream = UnsynchronizedByteArrayOutputStream.builder().get()) { final PropertySet ps = new PropertySet(); final Section s = ps.getSections().get(0); s.setFormatID(SummaryInformation.FORMAT_ID); @@ -343,7 +343,7 @@ class TestWrite { p.setValue(TITLE); ms.setProperty(p); - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); mps.write(out); byte[] bytes = out.toByteArray(); @@ -373,7 +373,7 @@ class TestWrite { private void check(final long variantType, final Object value, final int codepage) throws UnsupportedVariantTypeException, IOException { - final UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + final UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); VariantSupport.write(out, variantType, value, codepage); final byte[] b = out.toByteArray(); final Object objRead = @@ -526,9 +526,9 @@ class TestWrite { doufStream.close(); // And also write to some bytes for checking - UnsynchronizedByteArrayOutputStream sinfBytes = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream sinfBytes = UnsynchronizedByteArrayOutputStream.builder().get(); sinf.write(sinfBytes); - UnsynchronizedByteArrayOutputStream dinfBytes = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream dinfBytes = UnsynchronizedByteArrayOutputStream.builder().get(); dinf.write(dinfBytes); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/HSSFTestDataSamples.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/HSSFTestDataSamples.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/HSSFTestDataSamples.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/HSSFTestDataSamples.java Thu Jun 8 08:53:08 2023 @@ -55,7 +55,7 @@ public final class HSSFTestDataSamples { * Useful for verifying that the serialisation round trip */ public static HSSFWorkbook writeOutAndReadBack(HSSFWorkbook original) { - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get()) { original.write(baos); try (InputStream is = baos.toInputStream()) { return new HSSFWorkbook(is); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java Thu Jun 8 08:53:08 2023 @@ -135,7 +135,7 @@ final class TestEventRecordFactory { */ @Test void testContinuedUnknownRecord() throws IOException { - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); for (byte[] b : CONTINUE_DATA) { bos.write(b); } Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java Thu Jun 8 08:53:08 2023 @@ -314,7 +314,7 @@ final class TestOldExcelExtractor { SecurityManager sm = System.getSecurityManager(); System.setSecurityManager(new NoExitSecurityManager()); try { - System.setErr(new NullPrintStream()); + System.setErr(NullPrintStream.INSTANCE); // calls System.exit() assertThrows(ExitException.class, () -> OldExcelExtractor.main(new String[]{})); } finally { @@ -328,7 +328,7 @@ final class TestOldExcelExtractor { void testMain() throws IOException { File file = HSSFTestDataSamples.getSampleFile("testEXCEL_3.xls"); PrintStream save = System.out; - try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + try (UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); PrintStream str = new PrintStream(out, false, StandardCharsets.UTF_8.displayName(LocaleUtil.getUserLocale()))) { System.setOut(str); OldExcelExtractor.main(new String[] {file.getAbsolutePath()}); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingAggregate.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingAggregate.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingAggregate.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestDrawingAggregate.java Thu Jun 8 08:53:08 2023 @@ -114,7 +114,7 @@ class TestDrawingAggregate { * @return the raw data being aggregated */ byte[] getRawBytes(){ - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); for (RecordBase rb : aggRecords) { Record r = (org.apache.poi.hssf.record.Record) rb; try { @@ -222,7 +222,7 @@ class TestDrawingAggregate { assertEquals(dgBytes.length, pos, "data was not fully read"); // serialize to byte array - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); for(EscherRecord r : records) { out.write(r.serialize()); } @@ -248,7 +248,7 @@ class TestDrawingAggregate { } private static byte[] toByteArray(List<RecordBase> records) { - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); for (RecordBase rb : records) { Record r = (org.apache.poi.hssf.record.Record) rb; try { Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestEscherRecordFactory.java Thu Jun 8 08:53:08 2023 @@ -39,7 +39,7 @@ import org.junit.jupiter.api.Test; class TestEscherRecordFactory { private static byte[] toByteArray(List<RecordBase> records) { - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); for (RecordBase rb : records) { Record r = (org.apache.poi.hssf.record.Record) rb; try { Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDConRefRecord.java Thu Jun 8 08:53:08 2023 @@ -209,7 +209,7 @@ class TestDConRefRecord { private void testReadWrite(byte[] data, String message) throws IOException { RecordInputStream is = TestcaseRecordInputStream.create(81, data); DConRefRecord d = new DConRefRecord(is); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(data.length); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(data.length).get(); LittleEndianOutputStream o = new LittleEndianOutputStream(bos); d.serialize(o); o.flush(); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestDrawingRecord.java Thu Jun 8 08:53:08 2023 @@ -38,7 +38,7 @@ final class TestDrawingRecord { void testReadContinued() throws IOException { //simulate a continues drawing record - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); //main part DrawingRecord dg = new DrawingRecord(); byte[] data1 = new byte[8224]; Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestLbsDataSubRecord.java Thu Jun 8 08:53:08 2023 @@ -166,7 +166,7 @@ final class TestLbsDataSubRecord { try (LittleEndianInputStream in = new LittleEndianInputStream(new ByteArrayInputStream(data))) { LbsDataSubRecord.LbsDropData lbs = new LbsDataSubRecord.LbsDropData(in); - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); try (LittleEndianOutputStream out = new LittleEndianOutputStream(baos)) { lbs.serialize(out); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactory.java Thu Jun 8 08:53:08 2023 @@ -185,7 +185,7 @@ final class TestRecordFactory { assertTrue(records.get(4) instanceof ObjRecord); //serialize and verify that the serialized data is the same as the original - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().get(); for(org.apache.poi.hssf.record.Record rec : records){ out.write(rec.serialize()); } @@ -204,7 +204,7 @@ final class TestRecordFactory { BOFRecord.createSheetBOF(), EOFRecord.instance, }; - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); for (org.apache.poi.hssf.record.Record rec : recs) { try { baos.write(rec.serialize()); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/TestSSTRecord.java Thu Jun 8 08:53:08 2023 @@ -49,7 +49,7 @@ final class TestSSTRecord { */ private static byte[] concatHexDumps(String... hexDumpFileNames) throws IOException { int nFiles = hexDumpFileNames.length; - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(nFiles * 8228); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(nFiles * 8228).get(); for (String sampleFileName : hexDumpFileNames) { try (InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName)) { BufferedReader br = new BufferedReader(new InputStreamReader(is, LocaleUtil.CHARSET_1252)); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/record/common/TestUnicodeString.java Thu Jun 8 08:53:08 2023 @@ -185,7 +185,7 @@ final class TestUnicodeString { assertEquals(4, fr.getCharacterPos()); assertEquals(0x15c, fr.getFontIndex()); - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); LittleEndianOutputStream out = new LittleEndianOutputStream(baos); fr.serialize(out); @@ -216,7 +216,7 @@ final class TestUnicodeString { assertEquals(0, ext.getPhRuns().length); assertEquals(10, ext.getDataSize()); // Excludes 4 byte header - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); LittleEndianOutputStream out = new LittleEndianOutputStream(baos); ContinuableRecordOutput cout = new ContinuableRecordOutput(out, 0xffff); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java Thu Jun 8 08:53:08 2023 @@ -1175,9 +1175,9 @@ final class TestBugs extends BaseTestBug @Test void bug32191() throws IOException { try (HSSFWorkbook wb = openSampleWorkbook("27394.xls"); - UnsynchronizedByteArrayOutputStream out1 = new UnsynchronizedByteArrayOutputStream(); - UnsynchronizedByteArrayOutputStream out2 = new UnsynchronizedByteArrayOutputStream(); - UnsynchronizedByteArrayOutputStream out3 = new UnsynchronizedByteArrayOutputStream()) { + UnsynchronizedByteArrayOutputStream out1 = UnsynchronizedByteArrayOutputStream.builder().get(); + UnsynchronizedByteArrayOutputStream out2 = UnsynchronizedByteArrayOutputStream.builder().get(); + UnsynchronizedByteArrayOutputStream out3 = UnsynchronizedByteArrayOutputStream.builder().get()) { wb.write(out1); wb.write(out2); wb.write(out3); @@ -2331,7 +2331,7 @@ final class TestBugs extends BaseTestBug } // Convert BufferedImage to byte[] - UnsynchronizedByteArrayOutputStream imageBAOS = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream imageBAOS = UnsynchronizedByteArrayOutputStream.builder().get(); ImageIO.write(bimage, "jpeg", imageBAOS); imageBAOS.flush(); byte[] imageBytes = imageBAOS.toByteArray(); @@ -2614,7 +2614,7 @@ final class TestBugs extends BaseTestBug void test66319() throws IOException { try ( HSSFWorkbook workbook = openSampleWorkbook("bug66319.xls"); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream() + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get() ) { for (Sheet sheet : workbook) { for (Row row : sheet) { @@ -2631,7 +2631,7 @@ final class TestBugs extends BaseTestBug void test66319WithRemove() throws IOException { try ( HSSFWorkbook workbook = openSampleWorkbook("bug66319.xls"); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream() + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get() ) { for (Sheet sheet : workbook) { for (Row row : sheet) { Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestDataValidation.java Thu Jun 8 08:53:08 2023 @@ -61,7 +61,7 @@ final class TestDataValidation extends B void assertDataValidation(Workbook wb) { byte[] generatedContent; - try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(22000)) { + try (UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(22000).get()) { wb.write(baos); generatedContent = baos.toByteArray(); } catch (IOException e) { @@ -133,7 +133,7 @@ final class TestDataValidation extends B sheet.addValidationData(dv); - UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream baos = UnsynchronizedByteArrayOutputStream.builder().get(); wb.write(baos); byte[] wbData = baos.toByteArray(); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFCell.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFCell.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFCell.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFCell.java Thu Jun 8 08:53:08 2023 @@ -422,7 +422,7 @@ final class TestHSSFCell extends BaseTes void setFillForegroundColor() throws IOException { try ( HSSFWorkbook wb = new HSSFWorkbook(); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream() + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get() ) { Cell cell = wb.createSheet().createRow(0).createCell(0); HSSFCellStyle cellStyle = wb.createCellStyle(); Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1910300&r1=1910299&r2=1910300&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Thu Jun 8 08:53:08 2023 @@ -559,7 +559,7 @@ public final class TestHSSFWorkbook exte HSSFWorkbook wb = new HSSFWorkbook(fs1)) { ClassID clsid1 = fs1.getRoot().getStorageClsid(); - UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(4096); + UnsynchronizedByteArrayOutputStream out = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(4096).get(); wb.write(out); try (POIFSFileSystem fs2 = new POIFSFileSystem(out.toInputStream())) { ClassID clsid2 = fs2.getRoot().getStorageClsid(); @@ -974,7 +974,7 @@ public final class TestHSSFWorkbook exte assertNotNull(name); assertEquals("ASheet!A1", name.getRefersToFormula()); - UnsynchronizedByteArrayOutputStream stream = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream stream = UnsynchronizedByteArrayOutputStream.builder().get(); wb.write(stream); assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3", "ASheet"); @@ -985,7 +985,7 @@ public final class TestHSSFWorkbook exte assertSheetOrder(wb, "Sheet1", "Sheet3", "ASheet"); assertEquals("ASheet!A1", name.getRefersToFormula()); - UnsynchronizedByteArrayOutputStream stream2 = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream stream2 = UnsynchronizedByteArrayOutputStream.builder().get(); wb.write(stream2); assertSheetOrder(wb, "Sheet1", "Sheet3", "ASheet"); @@ -1074,7 +1074,7 @@ public final class TestHSSFWorkbook exte private void writeAndCloseWorkbook(Workbook workbook, File file) throws IOException { - final UnsynchronizedByteArrayOutputStream bytesOut = new UnsynchronizedByteArrayOutputStream(); + final UnsynchronizedByteArrayOutputStream bytesOut = UnsynchronizedByteArrayOutputStream.builder().get(); workbook.write(bytesOut); workbook.close(); @@ -1182,7 +1182,7 @@ public final class TestHSSFWorkbook exte @Test void checkExistingFileForR1C1Refs() throws IOException { try ( - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); HSSFWorkbook wb = openSampleWorkbook("49423.xls") ) { assertEquals(CellReferenceType.A1, wb.getCellReferenceType()); @@ -1198,7 +1198,7 @@ public final class TestHSSFWorkbook exte @Test void checkNewFileForR1C1Refs() throws IOException { try ( - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); + UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get(); HSSFWorkbook wb = new HSSFWorkbook() ) { assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType()); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
