From 525b8b53354bea6acaccb00f82abf7991a44914a Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 4 May 2014 08:05:32 +0000 Subject: [PATCH] File leak detector: Close streams in some tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1592315 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hpsf/MutablePropertySet.java | 7 ++- .../org/apache/poi/hpsf/basic/TestWrite.java | 49 +++++++++++++------ .../org/apache/poi/hpsf/basic/Util.java | 8 ++- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/src/java/org/apache/poi/hpsf/MutablePropertySet.java b/src/java/org/apache/poi/hpsf/MutablePropertySet.java index 8327792079..c95671f287 100644 --- a/src/java/org/apache/poi/hpsf/MutablePropertySet.java +++ b/src/java/org/apache/poi/hpsf/MutablePropertySet.java @@ -269,8 +269,11 @@ public class MutablePropertySet extends PropertySet throws IOException, WritingNotSupportedException { final ByteArrayOutputStream psStream = new ByteArrayOutputStream(); - write(psStream); - psStream.close(); + try { + write(psStream); + } finally { + psStream.close(); + } final byte[] streamData = psStream.toByteArray(); return new ByteArrayInputStream(streamData); } diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java index c6552a7a2e..757036151f 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java @@ -189,7 +189,12 @@ public class TestWrite final POIFSReader r = new POIFSReader(); r.registerListener(new MyPOIFSReaderListener(), SummaryInformation.DEFAULT_STREAM_NAME); - r.read(new FileInputStream(filename)); + FileInputStream stream = new FileInputStream(filename); + try { + r.read(stream); + } finally { + stream.close(); + } } @@ -251,7 +256,13 @@ public class TestWrite }, SummaryInformation.DEFAULT_STREAM_NAME); - r.read(new FileInputStream(filename)); + + InputStream stream = new FileInputStream(filename); + try { + r.read(stream); + } finally { + stream.close(); + } assertNotNull(psa[0]); assertTrue(psa[0].isSummaryInformation()); @@ -329,7 +340,12 @@ public class TestWrite } }, STREAM_NAME); - r.read(new FileInputStream(filename)); + FileInputStream stream = new FileInputStream(filename); + try { + r.read(stream); + } finally { + stream.close(); + } assertNotNull(psa[0]); Section s = (Section) (psa[0].getSections().get(0)); assertEquals(s.getFormatID(), formatID); @@ -996,20 +1012,22 @@ public class TestWrite @Test public void dictionaryWithInvalidCodepage() throws IOException, HPSFException { + final File copy = TempFile.createTempFile("Test-HPSF", "ole2"); + copy.deleteOnExit(); + + /* Write: */ + final OutputStream out = new FileOutputStream(copy); + + final POIFSFileSystem poiFs = new POIFSFileSystem(); + final MutablePropertySet ps1 = new MutablePropertySet(); + final MutableSection s = (MutableSection) ps1.getSections().get(0); + final Map m = new HashMap(3, 1.0f); + m.put(Long.valueOf(1), "String 1"); + m.put(Long.valueOf(2), "String 2"); + m.put(Long.valueOf(3), "String 3"); + try { - final File copy = TempFile.createTempFile("Test-HPSF", "ole2"); - copy.deleteOnExit(); - - /* Write: */ - final OutputStream out = new FileOutputStream(copy); - final POIFSFileSystem poiFs = new POIFSFileSystem(); - final MutablePropertySet ps1 = new MutablePropertySet(); - final MutableSection s = (MutableSection) ps1.getSections().get(0); - final Map m = new HashMap(3, 1.0f); - m.put(Long.valueOf(1), "String 1"); - m.put(Long.valueOf(2), "String 2"); - m.put(Long.valueOf(3), "String 3"); s.setDictionary(m); s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]); int codepage = 12345; @@ -1022,6 +1040,7 @@ public class TestWrite } catch (IllegalPropertySetDataException ex) { + out.close(); assertTrue(true); } } diff --git a/src/testcases/org/apache/poi/hpsf/basic/Util.java b/src/testcases/org/apache/poi/hpsf/basic/Util.java index 1262c750d8..3af8cd94f9 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/Util.java +++ b/src/testcases/org/apache/poi/hpsf/basic/Util.java @@ -229,7 +229,13 @@ final class Util { r.registerListener(pfl); /* Read the POI filesystem. */ - r.read(new FileInputStream(poiFs)); + FileInputStream stream = new FileInputStream(poiFs); + try { + r.read(stream); + } finally { + stream.close(); + } + POIFile[] result = new POIFile[files.size()]; for (int i = 0; i < result.length; i++) result[i] = (POIFile) files.get(i);