Author: centic
Date: Sat Mar 12 16:56:33 2016
New Revision: 1734719
URL: http://svn.apache.org/viewvc?rev=1734719&view=rev
Log:
Bug 57200: Do not try to delete the poifiles-tempdir as it can interfere when
multiple applications are using SXSSF on the same machine.
Modified:
poi/trunk/src/java/org/apache/poi/util/TempFile.java
poi/trunk/src/testcases/org/apache/poi/util/TestTempFile.java
Modified: poi/trunk/src/java/org/apache/poi/util/TempFile.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/TempFile.java?rev=1734719&r1=1734718&r2=1734719&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/TempFile.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/TempFile.java Sat Mar 12 16:56:33
2016
@@ -24,10 +24,12 @@ import java.io.IOException;
* Interface for creating temporary files. Collects them all into one
directory by default.
*/
public final class TempFile {
-
/** The strategy used by {@link #createTempFile(String, String)} to create
the temporary files. */
private static TempFileCreationStrategy strategy = new
DefaultTempFileCreationStrategy();
-
+
+ /** Define a constant for this property as it is sometimes mistypes as
"tempdir" otherwise */
+ public static final String JAVA_IO_TMPDIR = "java.io.tmpdir";
+
/**
* Configures the strategy used by {@link #createTempFile(String, String)}
to create the temporary files.
*
@@ -93,12 +95,13 @@ public final class TempFile {
@Override
public File createTempFile(String prefix, String suffix) throws
IOException {
// Identify and create our temp dir, if needed
- if (dir == null)
- {
- dir = new File(System.getProperty("java.io.tmpdir"),
"poifiles");
- dir.mkdir();
- if (System.getProperty("poi.keep.tmp.files") == null)
- dir.deleteOnExit();
+ if (dir == null) {
+ dir = new File(System.getProperty(JAVA_IO_TMPDIR), "poifiles");
+ if(!dir.exists()) {
+ if(!dir.mkdirs()) {
+ throw new IOException("Could not create temporary
directory '" + dir + "'");
+ }
+ }
}
// Generate a unique new filename
@@ -111,6 +114,5 @@ public final class TempFile {
// All done
return newFile;
}
-
}
}
Modified: poi/trunk/src/testcases/org/apache/poi/util/TestTempFile.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/util/TestTempFile.java?rev=1734719&r1=1734718&r2=1734719&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/util/TestTempFile.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/util/TestTempFile.java Sat Mar 12
16:56:33 2016
@@ -24,13 +24,47 @@ import static org.junit.Assert.assertTru
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.Arrays;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-/**
- * @author Glen Stampoultzis
- */
public class TestTempFile {
+ private String previousTempDir;
+
+ private File tempDir;
+
+ @Before
+ public void setUp() throws IOException {
+ previousTempDir = System.getProperty(TempFile.JAVA_IO_TMPDIR);
+
+ // use a separate tempdir for the tests to be able to check for
leftover files
+ tempDir = File.createTempFile("TestTempFile", ".tst");
+ assertTrue(tempDir.delete());
+ assertTrue(tempDir.mkdirs());
+ System.setProperty(TempFile.JAVA_IO_TMPDIR, tempDir.getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() {
+ String[] files = tempDir.list();
+ // can have the "poifiles" subdir
+ if(files.length == 1) {
+ assertEquals("Had: " + Arrays.toString(files), "poifiles",
files[0]);
+ files = new File(tempDir, files[0]).list();
+ assertEquals("Had: " + Arrays.toString(files), 0, files.length);
+ } else {
+ assertEquals("Had: " + Arrays.toString(files), 0, files.length);
+ }
+
+ if(previousTempDir == null) {
+ System.clearProperty(TempFile.JAVA_IO_TMPDIR);
+ } else {
+ System.setProperty(TempFile.JAVA_IO_TMPDIR, previousTempDir);
+ }
+ }
+
@Test
public void testCreateTempFile()
throws Exception
@@ -43,6 +77,7 @@ public class TestTempFile {
assertEquals("poifiles", tempFile.getParentFile().getName());
// Can't think of a good way to check whether a file is actually
deleted since it would require the VM to stop.
+ assertTrue(tempFile.delete());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]