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/12/22 14:33:06 UTC

[wicket] branch master updated: WICKET-6915 Upgrade to commons-fileupload2 (#486)

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 41689ce  WICKET-6915 Upgrade to commons-fileupload2 (#486)
41689ce is described below

commit 41689ce8ec1b41806d8cb61e08abf6227f421531
Author: Martin Grigorov <ma...@users.noreply.github.com>
AuthorDate: Wed Dec 22 16:32:58 2021 +0200

    WICKET-6915 Upgrade to commons-fileupload2 (#486)
    
    * WICKET-6915 Upgrade to commons-fileupload:2.0-SNAPSHOT
    
    * WICKET-6915 Remove unused import of javax.servlet.http.HttpServletRequest
    
    Update a comment in module-info.java
---
 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 ++--
 .../main/java/javax/servlet/ServletContext.java    |  2 -
 wicket-util/src/main/java/module-info.java         |  4 +-
 20 files changed, 68 insertions(+), 89 deletions(-)

diff --git a/pom.xml b/pom.xml
index 50d08a9..a93a0e9 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.11.0</commons-io.version>
 		<commons-lang3.version>3.12.0</commons-lang3.version>
 		<guice.version>5.0.1</guice.version>
@@ -282,17 +282,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>
@@ -330,6 +319,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 8073a20..bdfbf85 100755
--- a/wicket-util/pom.xml
+++ b/wicket-util/pom.xml
@@ -29,11 +29,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>
@@ -42,6 +37,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/javax/servlet/ServletContext.java b/wicket-util/src/main/java/javax/servlet/ServletContext.java
index 97d45f1..ad755b2 100644
--- a/wicket-util/src/main/java/javax/servlet/ServletContext.java
+++ b/wicket-util/src/main/java/javax/servlet/ServletContext.java
@@ -24,8 +24,6 @@ import java.util.EventListener;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-
 import jakarta.servlet.Filter;
 import jakarta.servlet.FilterRegistration;
 import jakarta.servlet.RequestDispatcher;
diff --git a/wicket-util/src/main/java/module-info.java b/wicket-util/src/main/java/module-info.java
index e6729ec..678d5d8 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;
@@ -54,7 +54,7 @@ module org.apache.wicket.util {
     exports org.apache.wicket.util.watch;
     exports org.apache.wicket.util.xml;
 
-    // temporary hack until CDI-Unit, commons-fileupload and Spring provide Jakarta EE based releases
+    // temporary hack until CDI-Unit and Spring provide Jakarta EE based releases
     exports javax.servlet;
     exports javax.servlet.http;
 }