You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2021/08/20 09:04:18 UTC

[wicket] branch WICKET-6915-upgrade-to-fileupload2 created (now 1f321ec)

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

mgrigorov pushed a change to branch WICKET-6915-upgrade-to-fileupload2
in repository https://gitbox.apache.org/repos/asf/wicket.git.


      at 1f321ec  WICKET-6915 Upgrade to commons-fileupload:2.0-SNAPSHOT

This branch includes the following new commits:

     new 1f321ec  WICKET-6915 Upgrade to commons-fileupload:2.0-SNAPSHOT

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[wicket] 01/01: WICKET-6915 Upgrade to commons-fileupload:2.0-SNAPSHOT

Posted by mg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch WICKET-6915-upgrade-to-fileupload2
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 1f321ec22f1477abb86917b926f1e26d3acfc297
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Fri Aug 20 11:59:47 2021 +0300

    WICKET-6915 Upgrade to commons-fileupload:2.0-SNAPSHOT
---
 pom.xml                                            | 24 +++++-----
 wicket-core/src/main/java/module-info.java         |  2 +-
 .../org/apache/wicket/markup/html/form/Form.java   | 13 ++---
 .../wicket/markup/html/form/upload/FileUpload.java |  3 +-
 .../markup/html/form/upload/FileUploadField.java   |  2 +-
 .../html/form/upload/MultiFileUploadField.java     |  2 +-
 .../wicket/protocol/http/IMultipartWebRequest.java |  2 +-
 .../protocol/http/mock/MockHttpServletRequest.java |  2 +-
 .../http/servlet/MultipartServletWebRequest.java   |  4 +-
 .../servlet/MultipartServletWebRequestImpl.java    | 55 +++++++++-------------
 .../protocol/http/servlet/ServletPartFileItem.java |  6 +--
 .../protocol/http/servlet/ServletWebRequest.java   |  8 ++--
 .../markup/html/form/upload/FileUploadTest.java    |  9 ++--
 .../examples/ajax/builtin/FileUploadPage.java      |  2 +-
 wicket-extensions/src/main/java/module-info.java   |  2 +-
 .../extensions/ajax/AjaxFileDropBehavior.java      |  4 +-
 .../html/form/upload/UploadStatusResource.java     |  2 +-
 wicket-util/pom.xml                                |  9 ++--
 wicket-util/src/main/java/module-info.java         |  2 +-
 19 files changed, 67 insertions(+), 86 deletions(-)

diff --git a/pom.xml b/pom.xml
index 921669d..b739e50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -141,7 +141,7 @@
 		<cdi-unit.version>4.1.0</cdi-unit.version>
 		<commons-collections.version>3.2.2</commons-collections.version>
 		<commons-collections4.version>4.4</commons-collections4.version>
-		<commons-fileupload.version>1.4</commons-fileupload.version>
+		<commons-fileupload.version>2.0-SNAPSHOT</commons-fileupload.version>
 		<commons-io.version>2.8.0</commons-io.version>
 		<commons-lang3.version>3.12.0</commons-lang3.version>
 		<guice.version>5.0.1</guice.version>
@@ -281,17 +281,6 @@
 				<version>${commons-collections.version}</version>
 			</dependency>
 			<dependency>
-				<groupId>commons-fileupload</groupId>
-				<artifactId>commons-fileupload</artifactId>
-				<version>${commons-fileupload.version}</version>
-				<exclusions>
-					<exclusion>
-						<groupId>commons-io</groupId>
-						<artifactId>commons-io</artifactId>
-					</exclusion>
-				</exclusions>
-			</dependency>
-			<dependency>
 				<groupId>commons-io</groupId>
 				<artifactId>commons-io</artifactId>
 				<version>${commons-io.version}</version>
@@ -329,6 +318,17 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.commons</groupId>
+				<artifactId>commons-fileupload2</artifactId>
+				<version>${commons-fileupload.version}</version>
+				<exclusions>
+					<exclusion>
+						<groupId>commons-io</groupId>
+						<artifactId>commons-io</artifactId>
+					</exclusion>
+				</exclusions>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.commons</groupId>
 				<artifactId>commons-lang3</artifactId>
 				<version>${commons-lang3.version}</version>
 			</dependency>
diff --git a/wicket-core/src/main/java/module-info.java b/wicket-core/src/main/java/module-info.java
index 9c6dc2a..cfeed62 100644
--- a/wicket-core/src/main/java/module-info.java
+++ b/wicket-core/src/main/java/module-info.java
@@ -23,7 +23,7 @@ module org.apache.wicket.core {
     requires org.apache.wicket.request;
     requires org.apache.commons.io;
     requires org.apache.commons.collections4;
-    requires commons.fileupload;
+    requires commons.fileupload2;
     requires org.slf4j;
     requires jakarta.servlet;
     requires org.danekja.jdk.serializable.functional;
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index 249083c..bf5dbbe 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -25,9 +25,9 @@ import java.util.Locale;
 import java.util.Map;
 
 import jakarta.servlet.http.HttpServletRequest;
-
-import org.apache.commons.fileupload.FileUploadBase;
-import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload2.FileUploadException;
+import org.apache.commons.fileupload2.pub.FileSizeLimitExceededException;
+import org.apache.commons.fileupload2.pub.SizeLimitExceededException;
 import org.apache.wicket.Component;
 import org.apache.wicket.IGenericComponent;
 import org.apache.wicket.IRequestListener;
@@ -1496,12 +1496,12 @@ public class Form<T> extends WebMarkupContainer
 	protected void onFileUploadException(final FileUploadException e,
 		final Map<String, Object> model)
 	{
-		if (e instanceof FileUploadBase.SizeLimitExceededException)
+		if (e instanceof SizeLimitExceededException)
 		{
 			String msg = getString(UPLOAD_TOO_LARGE_RESOURCE_KEY, Model.ofMap(model));
 			error(msg);
 		}
-		else if (e instanceof FileUploadBase.FileSizeLimitExceededException)
+		else if (e instanceof FileSizeLimitExceededException)
 		{
 			String msg = getString(UPLOAD_SINGLE_FILE_TOO_LARGE_RESOURCE_KEY, Model.ofMap(model));
 			error(msg);
@@ -1515,9 +1515,6 @@ public class Form<T> extends WebMarkupContainer
 		}
 	}
 
-	/**
-	 * @see org.apache.wicket.Component#internalOnModelChanged()
-	 */
 	@Override
 	protected void internalOnModelChanged()
 	{
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java
index 4e662f4..39b6a7b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java
@@ -24,8 +24,7 @@ import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.fileupload.FileItem;
-import org.apache.wicket.util.io.IClusterable;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.request.cycle.RequestCycle;
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java
index 5a8f288..93f392d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java
@@ -20,7 +20,7 @@ package org.apache.wicket.markup.html.form.upload;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.model.IModel;
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadField.java
index 252b39c..353ef54 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadField.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadField.java
@@ -23,7 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/IMultipartWebRequest.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/IMultipartWebRequest.java
index a25c92c..36f9f50 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/IMultipartWebRequest.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/IMultipartWebRequest.java
@@ -19,7 +19,7 @@ package org.apache.wicket.protocol.http;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 
 
 /**
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
index bb32ee1..8d315e3 100755
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
@@ -57,7 +57,7 @@ import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.http.HttpUpgradeHandler;
 import jakarta.servlet.http.Part;
 
-import org.apache.commons.fileupload.FileUploadBase;
+import org.apache.commons.fileupload2.FileUploadBase;
 import org.apache.wicket.Application;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.mock.MockRequestParameters;
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 29bc91b..4c2d5dd 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
@@ -21,8 +21,8 @@ import java.util.Map;
 
 import jakarta.servlet.http.HttpServletRequest;
 
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.FileUploadException;
 import org.apache.wicket.protocol.http.IMultipartWebRequest;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.Url;
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 cc27c4e..294faf1 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
@@ -18,7 +18,6 @@ package org.apache.wicket.protocol.http.servlet;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -26,16 +25,16 @@ import java.util.List;
 import java.util.Map;
 
 import jakarta.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.Part;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUploadBase;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.commons.fileupload.servlet.ServletRequestContext;
+import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.FileItemFactory;
+import org.apache.commons.fileupload2.FileUploadBase;
+import org.apache.commons.fileupload2.FileUploadException;
+import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload2.jaksrvlt.JakSrvltFileUpload;
+import org.apache.commons.fileupload2.jaksrvlt.JakSrvltRequestContext;
+import org.apache.commons.fileupload2.pub.FileSizeLimitExceededException;
 import org.apache.commons.io.FileCleaningTracker;
 import org.apache.wicket.Application;
 import org.apache.wicket.WicketRuntimeException;
@@ -91,7 +90,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	 *             Thrown if something goes wrong with upload
 	 */
 	public MultipartServletWebRequestImpl(HttpServletRequest request, String filterPrefix,
-		Bytes maxSize, String upload) throws FileUploadException
+										  Bytes maxSize, String upload) throws FileUploadException
 	{
 		this(request, filterPrefix, maxSize, upload, new DiskFileItemFactory()
 		{
@@ -135,12 +134,11 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 		files = new HashMap<>();
 
 		// Check that request is multipart
-		// FIXME Wicket 10 This needs a new release of Commons FileUpload (https://issues.apache.org/jira/browse/FILEUPLOAD-309)
-		final boolean isMultipart = ServletFileUpload.isMultipartContent(request);
+		final boolean isMultipart = JakSrvltFileUpload.isMultipartContent(request);
 		if (!isMultipart)
 		{
 			throw new IllegalStateException(
-				"ServletRequest does not contain multipart content. One possible solution is to explicitly call Form.setMultipart(true), Wicket tries its best to auto-detect multipart forms but there are certain situation where it cannot.");
+				"ServletRequest does not contain multipart content. One possible solution is to explicitly call Form.setMultipart(true), Wicket tries its best to auto-detect multipart forms but there are certain situations where it cannot.");
 		}
 
 		setMaxSize(maxSize);
@@ -149,7 +147,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	@Override
 	public void parseFileParts() throws FileUploadException
 	{
-		HttpServletRequest request = new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest());
+		HttpServletRequest request = getContainerRequest();
 
 		// The encoding that will be used to decode the string parameters
 		// It should NOT be null at this point, but it may be
@@ -170,7 +168,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 
 		if (wantUploadProgressUpdates())
 		{
-			ServletRequestContext ctx = new ServletRequestContext(request)
+			JakSrvltRequestContext ctx = new JakSrvltRequestContext(request)
 			{
 				@Override
 				public InputStream getInputStream() throws IOException
@@ -194,7 +192,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 		{
 			// try to parse the file uploads by using Apache Commons FileUpload APIs
 			// because they are feature richer (e.g. progress updates, cleaner)
-			items = fileUpload.parseRequest(new ServletRequestContext(request));
+			items = fileUpload.parseRequest(new JakSrvltRequestContext(request));
 			if (items.isEmpty())
 			{
 				// fallback to Servlet 3.0 APIs
@@ -217,7 +215,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 					{
 						value = item.getString(encoding);
 					}
-					catch (UnsupportedEncodingException e)
+					catch (IOException e)
 					{
 						throw new WicketRuntimeException(e);
 					}
@@ -284,7 +282,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	 */
 	protected FileUploadBase newFileUpload(String encoding) {
 		// Configure the factory here, if desired.
-		ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
+		JakSrvltFileUpload fileUpload = new JakSrvltFileUpload(fileItemFactory);
 
 		// set encoding specifically when we found it
 		if (encoding != null)
@@ -375,7 +373,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	}
 
 	/**
-	 * Subclasses that want to receive upload notifications should return true. By default it takes
+	 * Subclasses that want to receive upload notifications should return true. By default, it takes
 	 * the value from {@link org.apache.wicket.settings.ApplicationSettings#isUploadProgressUpdatesEnabled()}.
 	 * 
 	 * @return true if upload status update event should be invoked
@@ -394,7 +392,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	{
 		UploadInfo info = new UploadInfo(totalBytes);
 
-		setUploadInfo(new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest()), upload, info);
+		setUploadInfo(getContainerRequest(), upload, info);
 	}
 
 	/**
@@ -405,7 +403,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	 */
 	protected void onUploadUpdate(int bytesUploaded, int total)
 	{
-		HttpServletRequest request = new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest());
+		HttpServletRequest request = getContainerRequest();
 		UploadInfo info = getUploadInfo(request, upload);
 		if (info == null)
 		{
@@ -422,7 +420,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 	 */
 	protected void onUploadCompleted()
 	{
-		clearUploadInfo(new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest()), upload);
+		clearUploadInfo(getContainerRequest(), upload);
 	}
 
 	/**
@@ -446,9 +444,6 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 			this.in = in;
 		}
 
-		/**
-		 * @see java.io.InputStream#read()
-		 */
 		@Override
 		public int read() throws IOException
 		{
@@ -458,9 +453,6 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 			return read;
 		}
 
-		/**
-		 * @see java.io.InputStream#read(byte[])
-		 */
 		@Override
 		public int read(byte[] b) throws IOException
 		{
@@ -470,9 +462,6 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 			return read;
 		}
 
-		/**
-		 * @see java.io.InputStream#read(byte[], int, int)
-		 */
 		@Override
 		public int read(byte[] b, int off, int len) throws IOException
 		{
@@ -502,7 +491,7 @@ public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 				if (fileMaxSize != null && fileItem.getSize() > fileMaxSize.bytes())
 				{
 					String fieldName = entry.getKey();
-					FileUploadException fslex = new FileUploadBase.FileSizeLimitExceededException("The field '" +
+					FileUploadException fslex = new FileSizeLimitExceededException("The field '" +
 							fieldName + "' exceeds its maximum permitted size of '" +
 							maxSize + "' characters.", fileItem.getSize(), fileMaxSize.bytes());
 					throw fslex;
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletPartFileItem.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletPartFileItem.java
index 93c2ea3..69fc05e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletPartFileItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletPartFileItem.java
@@ -25,9 +25,9 @@ import java.util.Collection;
 
 import jakarta.servlet.http.Part;
 
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemHeaders;
-import org.apache.commons.fileupload.util.FileItemHeadersImpl;
+import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.FileItemHeaders;
+import org.apache.commons.fileupload2.util.FileItemHeadersImpl;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.util.io.IOUtils;
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
index 85e600e..3a87b87 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
@@ -30,8 +30,8 @@ import java.util.Set;
 import jakarta.servlet.http.Cookie;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload2.FileItemFactory;
+import org.apache.commons.fileupload2.FileUploadException;
 import org.apache.wicket.protocol.http.RequestUtils;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.IWritableRequestParameters;
@@ -428,7 +428,7 @@ public class ServletWebRequest extends WebRequest
 	public MultipartServletWebRequest newMultipartWebRequest(Bytes maxSize, String upload)
 		throws FileUploadException
 	{
-		return new MultipartServletWebRequestImpl(new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest()), filterPrefix, maxSize, upload);
+		return new MultipartServletWebRequestImpl(getContainerRequest(), filterPrefix, maxSize, upload);
 	}
 
 	/**
@@ -445,7 +445,7 @@ public class ServletWebRequest extends WebRequest
 	public MultipartServletWebRequest newMultipartWebRequest(Bytes maxSize, String upload,
 		FileItemFactory factory) throws FileUploadException
 	{
-		return new MultipartServletWebRequestImpl(new javax.servlet.http.HttpServletRequest.Impl(getContainerRequest()), filterPrefix, maxSize, upload, factory);
+		return new MultipartServletWebRequestImpl(getContainerRequest(), filterPrefix, maxSize, upload, factory);
 	}
 
 	@Override
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
index 9df7275..5ce3791 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadTest.java
+++ b/wicket-core/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.fileupload.FileItem;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 import org.apache.commons.io.FileCleaningTracker;
 import org.apache.wicket.util.file.File;
 import org.apache.wicket.util.file.FileCleaner;
@@ -36,7 +36,6 @@ import org.apache.wicket.util.file.FileCleanerTrackerAdapter;
 import org.apache.wicket.util.file.IFileCleaner;
 import org.apache.wicket.util.tester.FormTester;
 import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -44,9 +43,7 @@ import org.junit.jupiter.api.Test;
  * 
  * @author Frank Bille (billen)
  */
-// FIXME Wicket 10
-@Disabled
-public class FileUploadTest extends WicketTestCase
+class FileUploadTest extends WicketTestCase
 {
 
 	/**
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index a84b45b..33cb635 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -21,7 +21,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.commons.collections4.iterators.EmptyIterator;
-import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload2.FileUploadException;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
diff --git a/wicket-extensions/src/main/java/module-info.java b/wicket-extensions/src/main/java/module-info.java
index 287d7a3..54479d7 100644
--- a/wicket-extensions/src/main/java/module-info.java
+++ b/wicket-extensions/src/main/java/module-info.java
@@ -21,7 +21,7 @@ module org.apache.wicket.extensions {
     requires org.slf4j;
     requires com.fasterxml.jackson.databind;
     requires com.github.openjson;
-    requires commons.fileupload;
+    requires commons.fileupload2;
     requires org.apache.wicket.util;
     requires org.apache.wicket.request;
     requires org.apache.wicket.core;
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
index b2f29c9..6554c44 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxFileDropBehavior.java
@@ -19,8 +19,8 @@ package org.apache.wicket.extensions.ajax;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.FileUploadException;
 import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxEventBehavior;
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadStatusResource.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadStatusResource.java
index bdd878a..13dbd2b 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadStatusResource.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadStatusResource.java
@@ -91,7 +91,7 @@ class UploadStatusResource extends AbstractResource
 		final HttpServletRequest req = (HttpServletRequest)attributes.getRequest()
 			.getContainerRequest();
 
-		UploadInfo info = MultipartServletWebRequestImpl.getUploadInfo(new javax.servlet.http.HttpServletRequest.Impl(req), upload);
+		UploadInfo info = MultipartServletWebRequestImpl.getUploadInfo(req, upload);
 
 		String status;
 		if ((info == null) || (info.getTotalBytes() < 1))
diff --git a/wicket-util/pom.xml b/wicket-util/pom.xml
index fa0de9b..3d09987 100755
--- a/wicket-util/pom.xml
+++ b/wicket-util/pom.xml
@@ -33,11 +33,6 @@
 
 	<dependencies>
 		<dependency>
-			<groupId>commons-fileupload</groupId>
-<!--			<groupId>com.jwebmp.jpms.commons</groupId>-->
-			<artifactId>commons-fileupload</artifactId>
-		</dependency>
-		<dependency>
 			<groupId>commons-io</groupId>
 			<artifactId>commons-io</artifactId>
 		</dependency>
@@ -46,6 +41,10 @@
 			<artifactId>commons-collections4</artifactId>
 		</dependency>
 		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-fileupload2</artifactId>
+		</dependency>
+		<dependency>
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-engine</artifactId>
 			<scope>compile</scope>
diff --git a/wicket-util/src/main/java/module-info.java b/wicket-util/src/main/java/module-info.java
index e6729ec..697a540 100644
--- a/wicket-util/src/main/java/module-info.java
+++ b/wicket-util/src/main/java/module-info.java
@@ -23,7 +23,7 @@ module org.apache.wicket.util {
     requires java.desktop;
     requires org.apache.commons.io;
     requires org.apache.commons.collections4;
-    requires commons.fileupload;
+    requires commons.fileupload2;
     requires org.slf4j;
     requires jakarta.servlet;
     requires org.junit.jupiter.api;