Author: fanningpj
Date: Tue Dec 28 12:12:01 2021
New Revision: 1896473

URL: http://svn.apache.org/viewvc?rev=1896473&view=rev
Log:
[bug-65772] stop using deleteOnExit in DefaultTempFileCreationStrategy

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/PackageHelper.java
    
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java
    
poi/trunk/poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/PackageHelper.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/PackageHelper.java?rev=1896473&r1=1896472&r2=1896473&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/PackageHelper.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/PackageHelper.java 
Tue Dec 28 12:12:01 2021
@@ -36,6 +36,7 @@ import org.apache.poi.openxml4j.opc.Pack
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
 import org.apache.poi.openxml4j.opc.TargetMode;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.Removal;
 
 /**
  * Provides handy methods to work with OOXML packages
@@ -71,7 +72,10 @@ public final class PackageHelper {
      * @param   pkg   the package to clone
      * @param   file  the destination file
      * @return  the cloned package
+     * @deprecated this method is not used internally and creates temp files 
that are not well handled
      */
+    @Deprecated
+    @Removal(version = "6.0.0")
     public static OPCPackage clone(OPCPackage pkg, File file) throws 
OpenXML4JException, IOException {
 
         String path = file.getAbsolutePath();

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java?rev=1896473&r1=1896472&r2=1896473&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java
 Tue Dec 28 12:12:01 2021
@@ -71,7 +71,6 @@ public abstract class ChunkedCipherOutpu
         this.plainByteFlags = new SparseBitSet(cs);
         this.chunkBits = Integer.bitCount(cs-1);
         this.fileOut = TempFile.createTempFile("encrypted_package", "crypt");
-        this.fileOut.deleteOnExit();
         this.out = new FileOutputStream(fileOut);
         this.dir = dir;
         this.cipher = initCipherForBlock(null, 0, false);
@@ -266,6 +265,10 @@ public abstract class ChunkedCipherOutpu
             }
         } catch (GeneralSecurityException e) {
             throw new IOException(e);
+        } finally {
+            if (fileOut != null) {
+                fileOut.delete();
+            }
         }
     }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java?rev=1896473&r1=1896472&r2=1896473&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
 Tue Dec 28 12:12:01 2021
@@ -26,7 +26,7 @@ import java.io.IOException;
  * Default implementation of the {@link TempFileCreationStrategy} used by 
{@link TempFile}:
  * Files are collected into one directory and by default are deleted on exit 
from the VM.
  * Files may be manually deleted by user prior to JVM exit.
- * Files can be kept by defining the system property {@link #KEEP_FILES}.
+ * Files can be kept by defining the system property {@link 
#DELETE_FILES_ON_EXIT}.
  *
  * Each file is registered for deletion with the JVM and the temporary 
directory is not deleted
  * after the JVM exits. Files that are created in the poifiles directory 
outside
@@ -37,8 +37,8 @@ import java.io.IOException;
 public class DefaultTempFileCreationStrategy implements 
TempFileCreationStrategy {
     public static final String POIFILES = "poifiles";
 
-    /** To keep files after JVM exit, set the 
<code>-Dpoi.keep.tmp.files</code> JVM property */
-    public static final String KEEP_FILES = "poi.keep.tmp.files";
+    /** To use files.deleteOnExit after clean JVM exit, set the 
<code>-Dpoi.delete.tmp.files.on.exit</code> JVM property */
+    public static final String DELETE_FILES_ON_EXIT = 
"poi.delete.tmp.files.on.exit";
 
     /** The directory where the temporary files will be created 
(<code>null</code> to use the default directory). */
     private File dir;
@@ -105,8 +105,8 @@ public class DefaultTempFileCreationStra
         // Generate a unique new filename
         File newFile = File.createTempFile(prefix, suffix, dir);
 
-        // Set the delete on exit flag, unless explicitly disabled
-        if (System.getProperty(KEEP_FILES) == null) {
+        // Set the delete on exit flag, but only when explicitly disabled
+        if (System.getProperty(DELETE_FILES_ON_EXIT) != null) {
             newFile.deleteOnExit();
         }
 
@@ -126,10 +126,8 @@ public class DefaultTempFileCreationStra
         File newDirectory = new File(dir, prefix + Long.toString(n));
         createTempDirectory(newDirectory);
 
-        // Set the delete on exit flag, unless explicitly disabled
-        if (System.getProperty(KEEP_FILES) == null) {
-            newDirectory.deleteOnExit();
-        }
+        //this method appears to be only used in tests, so it is probably ok 
to use deleteOnExit
+        newDirectory.deleteOnExit();
 
         // All done
         return newDirectory;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to