This is an automated email from the ASF dual-hosted git repository.

bitstorm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/master by this push:
     new 36b334d58b WICKET-7186: correctly delegate calls to wicket cleaner 
(#1485)
36b334d58b is described below

commit 36b334d58bd024e4fc39dc0f96610638a5001379
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
         */

Reply via email to