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

mgrigorov 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 0f12d0cf5f [master] WICKET-7169 - Make maxPartHeaderSize configurable 
(#1383)
0f12d0cf5f is described below

commit 0f12d0cf5f9a7b1a1a722ed7c7141b0c9a381e7e
Author: Johannes Renoth <[email protected]>
AuthorDate: Wed Feb 25 15:19:38 2026 +0100

    [master] WICKET-7169 - Make maxPartHeaderSize configurable (#1383)
    
    Make maxpartheaderSize configurable, the default value can be too small 
when using very long component names and deeply nested components.
---
 pom.xml                                            |  2 +-
 .../markup/html/form/upload/FileUploadTest.java    |  8 +++++---
 .../http/servlet/MultipartServletWebRequest.java   | 10 ++++++++--
 .../servlet/MultipartServletWebRequestImpl.java    | 11 +++++++----
 .../wicket/settings/ApplicationSettings.java       | 23 ++++++++++++++++++++++
 5 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/pom.xml b/pom.xml
index e7fe1866a4..07fb370471 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,7 +148,7 @@
                <byte-buddy.version>1.18.5</byte-buddy.version>
                <cdi-unit.version>5.0.0-EA7</cdi-unit.version>
                
<commons-collections4.version>4.5.0</commons-collections4.version>
-               
<commons-fileupload.version>2.0.0-M4</commons-fileupload.version>
+               
<commons-fileupload.version>2.0.0-M5</commons-fileupload.version>
                <commons-io.version>2.21.0</commons-io.version>
                <commons-lang3.version>3.20.0</commons-lang3.version>
                <guice.version>7.0.0</guice.version>
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
index bf8729808e..0ba32671cc 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
@@ -27,8 +27,8 @@ import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.util.List;
 
-import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.commons.fileupload2.core.DiskFileItemFactory;
+import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.wicket.util.file.File;
 import org.apache.wicket.util.file.FileCleaner;
 import org.apache.wicket.util.file.FileCleanerTrackerAdapter;
@@ -60,14 +60,16 @@ class FileUploadTest extends WicketTestCase
                DiskFileItemFactory itemFactory = DiskFileItemFactory.builder()
                                        .setFileCleaningTracker(new 
FileCleanerTrackerAdapter(fileUploadCleaner))
                                        .get();
+
                FileItem fileItem = itemFactory.fileItemBuilder()
                                .setContentType("text/java")
                                .setFieldName("dummyFieldName")
                                .setFormField(false)
                                .setFileName("FileUploadTest.java")
                                .get();
-               // Initialize the upload
-               fileItem.getOutputStream();
+
+        // Initialize the upload
+        fileItem.getOutputStream().close();
 
                // Get the internal list out
                Field inputStreamsField = 
FileUpload.class.getDeclaredField("inputStreamsToClose");
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
index 754913e20d..b9a9693746 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
@@ -19,16 +19,17 @@ package org.apache.wicket.protocol.http.servlet;
 import java.util.List;
 import java.util.Map;
 
-import jakarta.servlet.http.HttpServletRequest;
-
 import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.commons.fileupload2.core.FileUploadException;
+import org.apache.wicket.Application;
 import org.apache.wicket.protocol.http.IMultipartWebRequest;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
 
+import jakarta.servlet.http.HttpServletRequest;
+
 /**
  * Servlet specific WebRequest subclass for multipart content uploads.
  *
@@ -147,4 +148,9 @@ public abstract class MultipartServletWebRequest extends 
ServletWebRequest
        {
                this.fileCountMax = fileCountMax;
        }
+
+       protected int getDefaultMaximumPartHeaderSize()
+       {
+               return 
Application.get().getApplicationSettings().getDefaultMaximumPartHeaderSize();
+       }
 }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java
index 8951e65aff..9485550b96 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java
@@ -286,14 +286,17 @@ public class MultipartServletWebRequestImpl extends 
MultipartServletWebRequest
                        fileUpload.setHeaderCharset(charset);
                }
 
-               fileUpload.setSizeMax(getMaxSize().bytes());
+               fileUpload.setMaxSize(getMaxSize().bytes());
 
                Bytes fileMaxSize = getFileMaxSize();
-               if (fileMaxSize != null) {
-                       fileUpload.setFileSizeMax(fileMaxSize.bytes());
+
+               if (fileMaxSize != null)
+               {
+                       fileUpload.setMaxFileSize(fileMaxSize.bytes());
                }
 
-               fileUpload.setFileCountMax(getFileCountMax());
+               fileUpload.setMaxFileCount(getFileCountMax());
+               
fileUpload.setMaxPartHeaderSize(getDefaultMaximumPartHeaderSize());
 
                return fileUpload;
        }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/settings/ApplicationSettings.java 
b/wicket-core/src/main/java/org/apache/wicket/settings/ApplicationSettings.java
index 3d5141cc38..fcc7192d61 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/settings/ApplicationSettings.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/settings/ApplicationSettings.java
@@ -18,6 +18,8 @@ package org.apache.wicket.settings;
 
 import java.lang.ref.WeakReference;
 
+import org.apache.commons.fileupload2.core.AbstractFileUpload;
+import org.apache.commons.fileupload2.core.MultipartInput;
 import org.apache.wicket.Page;
 import org.apache.wicket.application.DefaultClassResolver;
 import org.apache.wicket.application.IClassResolver;
@@ -61,6 +63,8 @@ public class ApplicationSettings
 
        private Bytes defaultMaximumUploadSize = Bytes.MAX;
 
+       private int defaultMaximumPartHeaderSize = 
MultipartInput.DEFAULT_PART_HEADER_SIZE_MAX;
+
        private boolean uploadProgressUpdatesEnabled = false;
 
        private IFeedbackMessageFilter feedbackMessageCleanupFilter = new 
DefaultCleanupFeedbackMessageFilter();
@@ -270,4 +274,23 @@ public class ApplicationSettings
        {
                return feedbackMessageCleanupFilter;
        }
+    
+    /**
+     * The maximumPartHeaderSize für MultipartRequests in Fileuploads.
+     * @return
+     */
+       public int getDefaultMaximumPartHeaderSize()
+       {
+               return defaultMaximumPartHeaderSize;
+       }
+
+    /**
+     * Sets the default maximumPartHeaderSize. See also: {@link 
AbstractFileUpload#getMaxPartHeaderSize()}
+     * @param defaultMaximumPartHeaderSize
+     *     default is {@link MultipartInput#DEFAULT_PART_HEADER_SIZE_MAX}
+     */
+       public void setDefaultMaximumPartHeaderSize(int 
defaultMaximumPartHeaderSize)
+       {
+               this.defaultMaximumPartHeaderSize = 
defaultMaximumPartHeaderSize;
+       }
 }

Reply via email to