aboutsummaryrefslogtreecommitdiffstats
path: root/poi-scratchpad
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2022-02-19 14:01:19 +0000
committerPJ Fanning <fanningpj@apache.org>2022-02-19 14:01:19 +0000
commit1d0b478c16f0d38ff66fe921da2b32df567f1515 (patch)
tree9f9545661b36f8d498cc72222455f707928ca570 /poi-scratchpad
parent839f1ad02a24d7e04ad06af239cd89ac0f03c5b2 (diff)
downloadpoi-1d0b478c16f0d38ff66fe921da2b32df567f1515.tar.gz
poi-1d0b478c16f0d38ff66fe921da2b32df567f1515.zip
refactor some stream code
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898221 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-scratchpad')
-rw-r--r--poi-scratchpad/src/main/java/org/apache/poi/hpbf/model/HPBFPart.java7
-rw-r--r--poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/EMF.java11
-rw-r--r--poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/Metafile.java47
-rw-r--r--poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/WMF.java8
4 files changed, 38 insertions, 35 deletions
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hpbf/model/HPBFPart.java b/poi-scratchpad/src/main/java/org/apache/poi/hpbf/model/HPBFPart.java
index 077598b1a5..f727360b34 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hpbf/model/HPBFPart.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hpbf/model/HPBFPart.java
@@ -17,11 +17,11 @@
package org.apache.poi.hpbf.model;
-import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.util.IOUtils;
@@ -83,8 +83,9 @@ public abstract class HPBFPart {
generateData();
// Write out
- ByteArrayInputStream bais = new ByteArrayInputStream(data);
- dir.createDocument(path[path.length-1], bais);
+ try (UnsynchronizedByteArrayInputStream bais = new UnsynchronizedByteArrayInputStream(data)) {
+ dir.createDocument(path[path.length-1], bais);
+ }
}
/**
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/EMF.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/EMF.java
index 0f95a2f2ad..0c118e50b9 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/EMF.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/EMF.java
@@ -18,11 +18,11 @@
package org.apache.poi.hslf.blip;
import java.awt.Dimension;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.InflaterInputStream;
+import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.ddf.EscherContainerRecord;
@@ -68,10 +68,11 @@ public final class EMF extends Metafile {
Header header = new Header();
header.read(rawdata, CHECKSUM_SIZE);
- try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
- InputStream is = new ByteArrayInputStream(rawdata);
- InflaterInputStream inflater = new InflaterInputStream(is)) {
-
+ try (
+ InputStream is = new UnsynchronizedByteArrayInputStream(rawdata);
+ InflaterInputStream inflater = new InflaterInputStream(is);
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream()
+ ) {
long len = IOUtils.skipFully(is,header.getSize() + (long)CHECKSUM_SIZE);
assert(len == header.getSize() + CHECKSUM_SIZE);
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/Metafile.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/Metafile.java
index e15de24c66..acb3e849a2 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/Metafile.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/Metafile.java
@@ -19,21 +19,19 @@ package org.apache.poi.hslf.blip;
import java.awt.Dimension;
import java.awt.Rectangle;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.DeflaterOutputStream;
+import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.ddf.EscherContainerRecord;
import org.apache.poi.hslf.usermodel.HSLFPictureData;
-import org.apache.poi.hslf.usermodel.HSLFSlideShow;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianInputStream;
import org.apache.poi.util.LittleEndianOutputStream;
-import org.apache.poi.util.Removal;
import org.apache.poi.util.Units;
/**
@@ -90,26 +88,29 @@ public abstract class Metafile extends HSLFPictureData {
*/
private int filter = 254;
- public void read(byte[] data, int offset){
- @SuppressWarnings("resource")
- LittleEndianInputStream leis = new LittleEndianInputStream(
- new ByteArrayInputStream(data, offset, RECORD_LENGTH));
-
- wmfsize = leis.readInt();
-
- int left = leis.readInt();
- int top = leis.readInt();
- int right = leis.readInt();
- int bottom = leis.readInt();
- bounds.setBounds(left, top, right-left, bottom-top);
-
- int width = leis.readInt();
- int height = leis.readInt();
- size.setSize(width, height);
-
- zipsize = leis.readInt();
- compression = leis.readUByte();
- filter = leis.readUByte();
+ public void read(byte[] data, int offset) {
+ try (
+ LittleEndianInputStream leis = new LittleEndianInputStream(
+ new UnsynchronizedByteArrayInputStream(data, offset, RECORD_LENGTH))
+ ) {
+ wmfsize = leis.readInt();
+
+ int left = leis.readInt();
+ int top = leis.readInt();
+ int right = leis.readInt();
+ int bottom = leis.readInt();
+ bounds.setBounds(left, top, right - left, bottom - top);
+
+ int width = leis.readInt();
+ int height = leis.readInt();
+ size.setSize(width, height);
+
+ zipsize = leis.readInt();
+ compression = leis.readUByte();
+ filter = leis.readUByte();
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
}
public void write(OutputStream out) throws IOException {
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/WMF.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/WMF.java
index dbd66b1f65..1e32de6d43 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/WMF.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/blip/WMF.java
@@ -18,11 +18,11 @@
package org.apache.poi.hslf.blip;
import java.awt.Dimension;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.InflaterInputStream;
+import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.ddf.EscherContainerRecord;
@@ -64,10 +64,10 @@ public final class WMF extends Metafile {
@Override
public byte[] getData(){
- try {
- byte[] rawdata = getRawData();
+ byte[] rawdata = getRawData();
+ try (InputStream is = new UnsynchronizedByteArrayInputStream(rawdata)) {
+
- InputStream is = new ByteArrayInputStream( rawdata );
Header header = new Header();
header.read(rawdata, CHECKSUM_SIZE*getUIDInstanceCount());
long skipLen = header.getSize() + (long)CHECKSUM_SIZE*getUIDInstanceCount();