You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/10/05 20:00:07 UTC
svn commit: r1763485 - in /poi/trunk/src:
ooxml/java/org/apache/poi/openxml4j/opc/
scratchpad/testcases/org/apache/poi/hwpf/usermodel/
testcases/org/apache/poi/hssf/usermodel/
testcases/org/apache/poi/poifs/filesystem/
testcases/org/apache/poi/ss/userm...
Author: centic
Date: Wed Oct 5 20:00:07 2016
New Revision: 1763485
URL: http://svn.apache.org/viewvc?rev=1763485&view=rev
Log:
Use IOUtils.closeQuietly() in more places
Avoid two possible file-handle leaks when opening files fails with an exception
Make tests close resources properly to not spam the output when running with file-leak-detector
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java?rev=1763485&r1=1763484&r2=1763485&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java Wed Oct 5 20:00:07 2016
@@ -54,6 +54,7 @@ import org.apache.poi.openxml4j.opc.inte
import org.apache.poi.openxml4j.opc.internal.unmarshallers.UnmarshallContext;
import org.apache.poi.openxml4j.util.Nullable;
import org.apache.poi.openxml4j.util.ZipEntrySource;
+import org.apache.poi.util.IOUtils;
import org.apache.poi.util.NotImplemented;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
@@ -221,18 +222,10 @@ public abstract class OPCPackage impleme
// pack.originalPackagePath = file.getAbsolutePath();
return pack;
} catch (InvalidFormatException e) {
- try {
- pack.close();
- } catch (IOException e1) {
- throw new IllegalStateException(e);
- }
+ IOUtils.closeQuietly(pack);
throw e;
} catch (RuntimeException e) {
- try {
- pack.close();
- } catch (IOException e1) {
- throw new IllegalStateException(e);
- }
+ IOUtils.closeQuietly(pack);
throw e;
}
}
@@ -277,6 +270,7 @@ public abstract class OPCPackage impleme
}
}
}
+
pack.originalPackagePath = new File(path).getAbsolutePath();
return pack;
}
@@ -310,18 +304,10 @@ public abstract class OPCPackage impleme
pack.originalPackagePath = file.getAbsolutePath();
return pack;
} catch (InvalidFormatException e) {
- try {
- pack.close();
- } catch (IOException e1) {
- throw new IllegalStateException(e);
- }
+ IOUtils.closeQuietly(pack);
throw e;
} catch (RuntimeException e) {
- try {
- pack.close();
- } catch (IOException e1) {
- throw new IllegalStateException(e);
- }
+ IOUtils.closeQuietly(pack);
throw e;
}
}
@@ -340,8 +326,16 @@ public abstract class OPCPackage impleme
public static OPCPackage open(InputStream in) throws InvalidFormatException,
IOException {
OPCPackage pack = new ZipPackage(in, PackageAccess.READ_WRITE);
- if (pack.partList == null) {
- pack.getParts();
+ try {
+ if (pack.partList == null) {
+ pack.getParts();
+ }
+ } catch (InvalidFormatException e) {
+ IOUtils.closeQuietly(pack);
+ throw e;
+ } catch (RuntimeException e) {
+ IOUtils.closeQuietly(pack);
+ throw e;
}
return pack;
}
@@ -357,13 +351,11 @@ public abstract class OPCPackage impleme
* Throws if the specified file exist and is not valid.
*/
public static OPCPackage openOrCreate(File file) throws InvalidFormatException {
- OPCPackage retPackage = null;
if (file.exists()) {
- retPackage = open(file.getAbsolutePath());
+ return open(file.getAbsolutePath());
} else {
- retPackage = create(file);
+ return create(file);
}
- return retPackage;
}
/**
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java?rev=1763485&r1=1763484&r2=1763485&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java Wed Oct 5 20:00:07 2016
@@ -17,11 +17,7 @@
package org.apache.poi.hwpf.usermodel;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.*;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hwpf.HWPFDocument;
@@ -90,10 +86,17 @@ public final class TestHWPFWrite extends
public void testInPlaceWrite() throws Exception {
// Setup as a copy of a known-good file
final File file = TempFile.createTempFile("TestDocument", ".doc");
- IOUtils.copy(
- POIDataSamples.getDocumentInstance().openResourceAsStream("SampleDoc.doc"),
- new FileOutputStream(file)
- );
+ InputStream inputStream = POIDataSamples.getDocumentInstance().openResourceAsStream("SampleDoc.doc");
+ try {
+ FileOutputStream outputStream = new FileOutputStream(file);
+ try {
+ IOUtils.copy(inputStream, outputStream);
+ } finally {
+ outputStream.close();
+ }
+ } finally {
+ inputStream.close();
+ }
// Open from the temp file in read-write mode
HWPFDocument doc = new HWPFDocument(new NPOIFSFileSystem(file, false).getRoot());
@@ -108,7 +111,9 @@ public final class TestHWPFWrite extends
doc.close();
doc = new HWPFDocument(new NPOIFSFileSystem(file).getRoot());
+ r = doc.getRange();
assertEquals("X XX a test document\r", r.getParagraph(0).text());
+ doc.close();
}
@SuppressWarnings("resource")
@@ -121,7 +126,10 @@ public final class TestHWPFWrite extends
try {
doc.write();
fail("Shouldn't work for InputStream");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ doc.close();
// Can't work for OPOIFS
OPOIFSFileSystem ofs = new OPOIFSFileSystem(
@@ -130,7 +138,10 @@ public final class TestHWPFWrite extends
try {
doc.write();
fail("Shouldn't work for OPOIFSFileSystem");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ doc.close();
// Can't work for Read-Only files
NPOIFSFileSystem fs = new NPOIFSFileSystem(
@@ -139,6 +150,9 @@ public final class TestHWPFWrite extends
try {
doc.write();
fail("Shouldn't work for Read Only");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ doc.close();
}
}
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1763485&r1=1763484&r2=1763485&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Wed Oct 5 20:00:07 2016
@@ -1222,7 +1222,10 @@ public final class TestHSSFWorkbook exte
try {
wb.write();
fail("Shouldn't work for new files");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ wb.close();
// Can't work for InputStream opened files
wb = new HSSFWorkbook(
@@ -1230,7 +1233,10 @@ public final class TestHSSFWorkbook exte
try {
wb.write();
fail("Shouldn't work for InputStream");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ wb.close();
// Can't work for OPOIFS
OPOIFSFileSystem ofs = new OPOIFSFileSystem(
@@ -1239,7 +1245,10 @@ public final class TestHSSFWorkbook exte
try {
wb.write();
fail("Shouldn't work for OPOIFSFileSystem");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ wb.close();
// Can't work for Read-Only files
NPOIFSFileSystem fs = new NPOIFSFileSystem(
@@ -1248,17 +1257,27 @@ public final class TestHSSFWorkbook exte
try {
wb.write();
fail("Shouldn't work for Read Only");
- } catch (IllegalStateException e) {}
+ } catch (IllegalStateException e) {
+ // expected here
+ }
+ wb.close();
}
@Test
public void inPlaceWrite() throws Exception {
// Setup as a copy of a known-good file
final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls");
- IOUtils.copy(
- POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls"),
- new FileOutputStream(file)
- );
+ InputStream inputStream = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls");
+ try {
+ FileOutputStream outputStream = new FileOutputStream(file);
+ try {
+ IOUtils.copy(inputStream, outputStream);
+ } finally {
+ outputStream.close();
+ }
+ } finally {
+ inputStream.close();
+ }
// Open from the temp file in read-write mode
HSSFWorkbook wb = new HSSFWorkbook(new NPOIFSFileSystem(file, false));
@@ -1276,6 +1295,8 @@ public final class TestHSSFWorkbook exte
wb = new HSSFWorkbook(new NPOIFSFileSystem(file));
assertEquals(1, wb.getNumberOfSheets());
assertEquals("Changed!", wb.getSheetAt(0).getRow(0).getCell(0).toString());
+
+ wb.close();
}
@Test
Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java?rev=1763485&r1=1763484&r2=1763485&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java Wed Oct 5 20:00:07 2016
@@ -24,11 +24,7 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.*;
import java.nio.ByteBuffer;
import java.util.Iterator;
@@ -96,20 +92,25 @@ public final class TestNPOIFSFileSystem
HeaderBlock header = new HeaderBlock(new ByteArrayInputStream(baos.toByteArray()));
return header;
}
-
- protected static NPOIFSFileSystem writeOutAndReadBack(NPOIFSFileSystem original) throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- original.writeFilesystem(baos);
- original.close();
- return new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray()));
- }
- protected static NPOIFSFileSystem writeOutFileAndReadBack(NPOIFSFileSystem original) throws IOException {
- final File file = TempFile.createTempFile("TestPOIFS", ".ole2");
- final FileOutputStream fout = new FileOutputStream(file);
- original.writeFilesystem(fout);
- original.close();
- return new NPOIFSFileSystem(file, false);
- }
+
+ protected static NPOIFSFileSystem writeOutAndReadBack(NPOIFSFileSystem original) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ original.writeFilesystem(baos);
+ original.close();
+ return new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray()));
+ }
+
+ protected static NPOIFSFileSystem writeOutFileAndReadBack(NPOIFSFileSystem original) throws IOException {
+ final File file = TempFile.createTempFile("TestPOIFS", ".ole2");
+ final OutputStream fout = new FileOutputStream(file);
+ try {
+ original.writeFilesystem(fout);
+ } finally {
+ fout.close();
+ }
+ original.close();
+ return new NPOIFSFileSystem(file, false);
+ }
@Test
public void basicOpen() throws Exception {
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java?rev=1763485&r1=1763484&r2=1763485&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java Wed Oct 5 20:00:07 2016
@@ -1017,7 +1017,7 @@ public abstract class BaseTestCell {
}
@Test
- public void primitiveToEnumReplacementDoesNotBreakBackwardsCompatibility() {
+ public void primitiveToEnumReplacementDoesNotBreakBackwardsCompatibility() throws IOException {
// bug 59836
// until we have changes POI from working on primitives (int) to enums,
// we should make sure we minimize backwards compatibility breakages.
@@ -1046,5 +1046,7 @@ public abstract class BaseTestCell {
default:
fail("unexpected cell type: " + cell.getCellType());
}
+
+ wb.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org