Author: fanningpj
Date: Mon Jun 16 11:01:40 2025
New Revision: 1926466

URL: http://svn.apache.org/viewvc?rev=1926466&view=rev
Log:
[bug-69714] add thread local support for overriding TempFile strategy

Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/util/TempFile.java
    
poi/trunk/poi/src/test/java/org/apache/poi/util/DefaultTempFileCreationStrategyTest.java

Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/TempFile.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/TempFile.java?rev=1926466&r1=1926465&r2=1926466&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/util/TempFile.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/util/TempFile.java Mon Jun 16 
11:01:40 2025
@@ -59,14 +59,9 @@ public final class TempFile {
      * Configures the strategy used by {@link #createTempFile(String, String)} 
to create the temporary files.
      *
      * @param strategy The new strategy to be used to create the temporary 
files.
-     *
-     * @throws IllegalArgumentException When the given strategy is 
<code>null</code>.
      * @since POI 5.4.2
      */
     public static void 
setThreadLocalTempFileCreationStrategy(TempFileCreationStrategy strategy) {
-        if (strategy == null) {
-            throw new IllegalArgumentException("strategy == null");
-        }
         threadLocalStrategy.set(strategy);
     }
     
@@ -95,6 +90,6 @@ public final class TempFile {
 
     private static TempFileCreationStrategy getStrategy() {
         TempFileCreationStrategy s = threadLocalStrategy.get();
-        return s == null ? strategy: s;
+        return s == null ? strategy : s;
     }
 }

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/util/DefaultTempFileCreationStrategyTest.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/util/DefaultTempFileCreationStrategyTest.java?rev=1926466&r1=1926465&r2=1926466&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/util/DefaultTempFileCreationStrategyTest.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/util/DefaultTempFileCreationStrategyTest.java
 Mon Jun 16 11:01:40 2025
@@ -78,6 +78,23 @@ class DefaultTempFileCreationStrategyTes
     }
 
     @Test
+    void testProvidedDirThreadLocal() throws IOException {
+        DefaultTempFileCreationStrategy parentStrategy = new 
DefaultTempFileCreationStrategy();
+        File dir = parentStrategy.createTempDirectory("testProvidedDir");
+        assertNotNull(dir, "Failed to create temp directory");
+        try {
+            assertTrue(Files.isDirectory(dir.toPath()), "File is not a 
directory: " + dir);
+            DefaultTempFileCreationStrategy testStrategy = new 
DefaultTempFileCreationStrategy(dir);
+            TempFile.setThreadLocalTempFileCreationStrategy(testStrategy);
+            checkGetFileAndPath(dir.toPath());
+        } finally {
+            // Clean up the directory after the test
+            FileUtils.deleteDirectory(dir);
+            TempFile.setThreadLocalTempFileCreationStrategy(null);
+        }
+    }
+
+    @Test
     void testProvidedDirNotExists() throws IOException {
         DefaultTempFileCreationStrategy parentStrategy = new 
DefaultTempFileCreationStrategy();
         File dir = parentStrategy.createTempDirectory("testProvidedDir");
@@ -127,6 +144,25 @@ class DefaultTempFileCreationStrategyTes
         }
     }
 
+    private static void checkGetFileAndPath(Path path) throws IOException {
+        File file = TempFile.createTempFile("POITest", ".tmp");
+        try {
+            if (path != null) {
+                assertTrue(file.toPath().startsWith(path),
+                        "File path does not start with expected path: " + 
path);
+            }
+
+            assertTrue(file.getParentFile().exists(),
+                    "Failed for " + file.getParentFile());
+
+            assertTrue(file.exists(),
+                    "Failed for " + file);
+        } finally {
+            assertTrue(file.delete());
+        }
+    }
+
+
     @Test
     void testDefaultDir() throws IOException {
         DefaultTempFileCreationStrategy strategy = new 
DefaultTempFileCreationStrategy();



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

Reply via email to