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;
+ }
}