This is an automated email from the ASF dual-hosted git repository.
bitstorm pushed a commit to branch wicket-10.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-10.x by this push:
new e97db78e29 WICKET-7186: correctly delegate calls to wicket cleaner
(#1485)
e97db78e29 is described below
commit e97db78e292d44e379dd8114af7cd71c2f84d8d9
Author: Laurent <[email protected]>
AuthorDate: Thu Jun 11 17:38:09 2026 +0200
WICKET-7186: correctly delegate calls to wicket cleaner (#1485)
FileCleaningTrackerAdapter does not delegate some calls to IFileCleaner.
These call are then performed by FileCleaningTracker superclass. Each
FileCleaningTrackerAdapter then create a Reaper thread that is leaked
(FileCleaningTrackerAdapter is request-scope).
Intended behavior is to delegate to IFileCleaner that is a singleton
(there is at most 1 Reaper by wicket application).
The issue appears on wicket 10.9.x as commons-fileupload2-M5 refactors
DiskFileItem and now calls the Path variant of track(...) method.
This fix adds the missing delegate methods.
---
.../java/org/apache/wicket/util/file/FileCleaner.java | 13 +++++++++++++
.../wicket/util/file/FileCleanerTrackerAdapter.java | 14 ++++++++++++++
.../java/org/apache/wicket/util/file/IFileCleaner.java | 15 +++++++++++++++
3 files changed, 42 insertions(+)
diff --git
a/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleaner.java
b/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleaner.java
index 3b7b5a93ed..b1ccb6efe7 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleaner.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleaner.java
@@ -17,6 +17,7 @@
package org.apache.wicket.util.file;
import java.io.File;
+import java.nio.file.Path;
import org.apache.commons.io.FileCleaningTracker;
import org.apache.commons.io.FileDeleteStrategy;
@@ -52,6 +53,18 @@ public class FileCleaner implements IFileCleaner
cleaner.track(file, marker, deleteStrategy);
}
+ @Override
+ public void track(Path file, Object marker)
+ {
+ cleaner.track(file, marker);
+ }
+
+ @Override
+ public void track(Path file, Object marker, FileDeleteStrategy
deleteStrategy)
+ {
+ cleaner.track(file, marker, deleteStrategy);
+ }
+
@Override
public void destroy()
{
diff --git
a/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleanerTrackerAdapter.java
b/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleanerTrackerAdapter.java
index 059ef49fb0..1e04032d20 100644
---
a/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleanerTrackerAdapter.java
+++
b/wicket-util/src/main/java/org/apache/wicket/util/file/FileCleanerTrackerAdapter.java
@@ -17,6 +17,8 @@
package org.apache.wicket.util.file;
+import java.nio.file.Path;
+
import org.apache.commons.io.FileCleaningTracker;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.wicket.util.lang.Args;
@@ -62,4 +64,16 @@ public class FileCleanerTrackerAdapter extends
FileCleaningTracker
{
fileCleaner.track(new File(path), marker, deleteStrategy);
}
+
+ @Override
+ public void track(Path file, Object marker)
+ {
+ fileCleaner.track(file, marker);
+ }
+
+ @Override
+ public void track(Path file, Object marker, FileDeleteStrategy
deleteStrategy)
+ {
+ fileCleaner.track(file, marker, deleteStrategy);
+ }
}
diff --git
a/wicket-util/src/main/java/org/apache/wicket/util/file/IFileCleaner.java
b/wicket-util/src/main/java/org/apache/wicket/util/file/IFileCleaner.java
index 3f9fe16903..5a2eae89fa 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/file/IFileCleaner.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/file/IFileCleaner.java
@@ -17,6 +17,7 @@
package org.apache.wicket.util.file;
import java.io.File;
+import java.nio.file.Path;
import org.apache.commons.io.FileDeleteStrategy;
@@ -59,6 +60,20 @@ public interface IFileCleaner
*/
void track(File file, Object marker, FileDeleteStrategy deleteStrategy);
+ /**
+ * {@link Path} variant for file tracking.
+ *
+ * @see #track(File, Object)
+ */
+ void track(Path file, Object marker);
+
+ /**
+ * {@link Path} variant for file tracking.
+ *
+ * @see #track(File, Object, FileDeleteStrategy)
+ */
+ void track(Path file, Object marker, FileDeleteStrategy deleteStrategy);
+
/**
* Call this method to stop the cleaner and to free all allocated
resources by it
*/