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]