This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git
The following commit(s) were added to refs/heads/master by this push: new 23aba0b Update docs 23aba0b is described below commit 23aba0b12a5833bacdc547bc8f142fbd705ba0af Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Tue Jul 11 09:50:58 2023 -0400 Update docs The 2 disk classes don't need to be in a separate package. --- .../fileupload2/core/{disk => }/DiskFileItem.java | 6 +- .../core/{disk => }/DiskFileItemFactory.java | 4 +- .../commons/fileupload2/core/FileItemFactory.java | 1 - .../fileupload2/core/FileItemInputImpl.java | 1 - .../fileupload2/core/disk/package-info.java | 49 ------------ .../commons/fileupload2/core/package-info.java | 2 +- .../core/disk/DiskFileItemFactoryTest.java | 4 +- .../core/disk/DiskFileItemSerializeTest.java | 2 + .../fileupload2/core/disk/DiskFileItemTest.java | 3 +- ...letFileCleaner.java => JakartaFileCleaner.java} | 4 +- .../jakarta/JakartaServletDiskFileUpload.java | 4 +- .../commons/fileupload2/jakarta/package-info.java | 2 +- .../jakarta/JakartaProgressListenerDiskTest.java | 4 +- .../jakarta/JakartaProgressListenerTest.java | 4 +- .../jakarta/JakartaServletFileUploadDiskTest.java | 4 +- .../jakarta/JakartaServletFileUploadTest.java | 4 +- .../fileupload2/jakarta/JakartaSizesDiskTest.java | 4 +- .../fileupload2/jakarta/JakartaSizesTest.java | 4 +- .../jakarta/JakartaStreamingDiskTest.java | 4 +- .../fileupload2/jakarta/JakartaStreamingTest.java | 4 +- ...leCleanerCleanup.java => JavaxFileCleaner.java} | 4 +- .../javax/JavaxServletDiskFileUpload.java | 4 +- .../commons/fileupload2/javax/package-info.java | 2 +- .../javax/JavaxProgressListenerDiskTest.java | 4 +- .../javax/JavaxProgressListenerTest.java | 4 +- .../javax/JavaxServletFileUploadDiskTest.java | 4 +- .../javax/JavaxServletFileUploadTest.java | 4 +- .../fileupload2/javax/JavaxSizesDiskTest.java | 4 +- .../commons/fileupload2/javax/JavaxSizesTest.java | 4 +- .../fileupload2/javax/JavaxStreamingDiskTest.java | 4 +- .../fileupload2/javax/JavaxStreamingTest.java | 4 +- .../commons/fileupload2/portlet/package-info.java | 2 +- .../portlet/JavaxPortletFileUploadTest.java | 4 +- spotbugs-exclude-filter.xml | 2 +- src/site/apt/migration.apt.vm | 18 ++--- src/site/fml/faq.fml | 2 +- src/site/xdoc/overview.xml | 18 ++--- src/site/xdoc/streaming.xml | 10 +-- src/site/xdoc/using.xml | 89 +++++++++++----------- 39 files changed, 123 insertions(+), 178 deletions(-) diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItem.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItem.java similarity index 98% rename from commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItem.java rename to commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItem.java index 90c804f..0d3dc80 100644 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItem.java +++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItem.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.fileupload2.core.disk; +package org.apache.commons.fileupload2.core; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -33,11 +33,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.commons.fileupload2.core.FileItem; import org.apache.commons.fileupload2.core.FileItemFactory.AbstractFileItemBuilder; -import org.apache.commons.fileupload2.core.FileItemHeaders; -import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.ParameterParser; import org.apache.commons.io.Charsets; import org.apache.commons.io.FileCleaningTracker; import org.apache.commons.io.build.AbstractOrigin; diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactory.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItemFactory.java similarity index 98% rename from commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactory.java rename to commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItemFactory.java index a0f5bd2..ecfdf85 100644 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactory.java +++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/DiskFileItemFactory.java @@ -14,13 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.fileupload2.core.disk; +package org.apache.commons.fileupload2.core; import java.nio.charset.Charset; import java.nio.file.Path; -import org.apache.commons.fileupload2.core.FileItem; -import org.apache.commons.fileupload2.core.FileItemFactory; import org.apache.commons.io.FileCleaningTracker; import org.apache.commons.io.build.AbstractOrigin; import org.apache.commons.io.build.AbstractStreamBuilder; diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemFactory.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemFactory.java index d9b2729..3dc4cb8 100644 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemFactory.java +++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemFactory.java @@ -16,7 +16,6 @@ */ package org.apache.commons.fileupload2.core; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.apache.commons.io.FileCleaningTracker; import org.apache.commons.io.build.AbstractStreamBuilder; import org.apache.commons.io.file.PathUtils; diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemInputImpl.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemInputImpl.java index ffd1fd5..b3c7f71 100644 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemInputImpl.java +++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/FileItemInputImpl.java @@ -21,7 +21,6 @@ import java.io.InputStream; import java.nio.file.InvalidPathException; import org.apache.commons.fileupload2.core.MultipartInput.ItemInputStream; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; import org.apache.commons.io.input.BoundedInputStream; /** diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/package-info.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/package-info.java deleted file mode 100644 index d862a1a..0000000 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/disk/package-info.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * <p> - * A disk-based implementation of the {@link org.apache.commons.fileupload2.core.FileItem} interface. This implementation retains smaller items in memory, while - * writing larger ones to disk. The threshold between these two is configurable, as is the location of files that are written to disk. - * </p> - * <p> - * In typical usage, an instance of {@link org.apache.commons.fileupload2.core.disk.DiskFileItemFactory} would be created, configured, and then passed to a - * {@link org.apache.commons.fileupload2.core.AbstractFileUpload} implementation such as - * {@code org.apache.commons.fileupload2.core.servlet.ServletFileUpload ServletFileUpload} or - * {@code org.apache.commons.fileupload2.core.portlet.PortletFileUpload PortletFileUpload}. - * </p> - * <p> - * The following code fragment demonstrates this usage. - * </p> - * - * <pre> - * DiskFileItemFactory factory = DiskFileItemFactory().builder() - * // maximum size that will be stored in memory - * .setSizeThreshold(4096); - * // the location for saving data that is larger than getSizeThreshold() - * .setRepository(new File("/tmp")) - * // build it - * .get(); - * - * ServletFileUpload upload = new ServletFileUpload(factory); - * </pre> - * <p> - * Please see the FileUpload <a href="https://commons.apache.org/fileupload/using.html" target="_top">User Guide</a> for further details and examples of how to - * use this package. - * </p> - */ -package org.apache.commons.fileupload2.core.disk; diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/package-info.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/package-info.java index 0775f52..069dfbd 100644 --- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/package-info.java +++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/package-info.java @@ -25,7 +25,7 @@ * the provided extensions of {@link org.apache.commons.fileupload2.core.AbstractFileUpload} such as * {@code org.apache.commons.fileupload2.core.servlet.ServletFileUpload ServletFileUpload} or * {@code org.apache.commons.fileupload2.core.portlet.PortletFileUpload PortletFileUpload}, together with a factory for - * {@link org.apache.commons.fileupload2.core.FileItem} instances, such as {@link org.apache.commons.fileupload2.core.disk.DiskFileItemFactory}. + * {@link org.apache.commons.fileupload2.core.FileItem} instances, such as {@link org.apache.commons.fileupload2.core.DiskFileItemFactory}. * </p> * <p> * The following is a brief example of typical usage in a servlet, storing the uploaded files on disk. diff --git a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactoryTest.java b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactoryTest.java index c1e41f9..260e16d 100644 --- a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactoryTest.java +++ b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemFactoryTest.java @@ -21,8 +21,10 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import org.apache.commons.fileupload2.core.FileItemFactory.AbstractFileItemBuilder; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileItemHeaders; -import org.apache.commons.fileupload2.core.disk.DiskFileItem.Builder; +import org.apache.commons.fileupload2.core.DiskFileItem.Builder; import org.junit.jupiter.api.Test; /** diff --git a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemSerializeTest.java b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemSerializeTest.java index 9e267c6..9083100 100644 --- a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemSerializeTest.java +++ b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemSerializeTest.java @@ -32,6 +32,8 @@ import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileItemFactory; import org.apache.commons.io.file.PathUtils; import org.apache.commons.io.file.SimplePathVisitor; diff --git a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemTest.java b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemTest.java index 602a85a..9d1f2ea 100644 --- a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemTest.java +++ b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/core/disk/DiskFileItemTest.java @@ -21,8 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import org.apache.commons.fileupload2.core.FileItemFactory.AbstractFileItemBuilder; +import org.apache.commons.fileupload2.core.DiskFileItem; import org.apache.commons.fileupload2.core.FileItemHeaders; -import org.apache.commons.fileupload2.core.disk.DiskFileItem.Builder; +import org.apache.commons.fileupload2.core.DiskFileItem.Builder; import org.junit.jupiter.api.Test; /** diff --git a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileCleaner.java b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaFileCleaner.java similarity index 95% rename from commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileCleaner.java rename to commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaFileCleaner.java index 6ad1a3f..0af160d 100644 --- a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileCleaner.java +++ b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaFileCleaner.java @@ -25,12 +25,12 @@ import jakarta.servlet.ServletContextListener; /** * A servlet context listener, which ensures that the {@link FileCleaningTracker}'s reaper thread is terminated, when the web application is destroyed. */ -public class JakartaServletFileCleaner implements ServletContextListener { +public class JakartaFileCleaner implements ServletContextListener { /** * Attribute name, which is used for storing an instance of {@link FileCleaningTracker} in the web application. */ - public static final String FILE_CLEANING_TRACKER_ATTRIBUTE = JakartaServletFileCleaner.class.getName() + ".FileCleaningTracker"; + public static final String FILE_CLEANING_TRACKER_ATTRIBUTE = JakartaFileCleaner.class.getName() + ".FileCleaningTracker"; /** * Gets the instance of {@link FileCleaningTracker}, which is associated with the given {@link ServletContext}. diff --git a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletDiskFileUpload.java b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletDiskFileUpload.java index 8158062..3130f96 100644 --- a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletDiskFileUpload.java +++ b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/JakartaServletDiskFileUpload.java @@ -17,8 +17,8 @@ package org.apache.commons.fileupload2.jakarta; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * A JakartaServletFileUpload for {@link DiskFileItem} and {@link DiskFileItemFactory}. diff --git a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/package-info.java b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/package-info.java index 70a7b79..f69eeef 100644 --- a/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/package-info.java +++ b/commons-fileupload2-jakarta/src/main/java/org/apache/commons/fileupload2/jakarta/package-info.java @@ -27,7 +27,7 @@ * <pre>{@code * DiskFileItemFactory factory = DiskFileItemFactory().builder().get(); * // Configure the factory here, if desired. - * JakSrvltFileUpload upload = new JakSrvltFileUpload(factory); + * JakartaServletFileUpload upload = new JakartaServletFileUpload (factory); * // Configure the uploader here, if desired. * List fileItems = upload.parseRequest(request); * }</pre> diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerDiskTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerDiskTest.java index 98e192b..db084b9 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerDiskTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerDiskTest.java @@ -19,9 +19,9 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractProgressListenerTest; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.ProgressListener; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java index c194b79..2e975b6 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java @@ -19,9 +19,9 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractProgressListenerTest; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.ProgressListener; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadDiskTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadDiskTest.java index 2810d29..ead8273 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadDiskTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadDiskTest.java @@ -25,9 +25,9 @@ import java.util.Map; import org.apache.commons.fileupload2.core.AbstractFileUploadTest; import org.apache.commons.fileupload2.core.Constants; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.junit.jupiter.api.Test; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadTest.java index 1924fa5..d542d67 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaServletFileUploadTest.java @@ -25,9 +25,9 @@ import java.util.Map; import org.apache.commons.fileupload2.core.AbstractFileUploadTest; import org.apache.commons.fileupload2.core.Constants; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.junit.jupiter.api.Test; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesDiskTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesDiskTest.java index 03115c2..6276c75 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesDiskTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesDiskTest.java @@ -19,8 +19,8 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractSizesTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java index b97e672..ad148bb 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java @@ -19,8 +19,8 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractSizesTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingDiskTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingDiskTest.java index ba6b782..1e6f10b 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingDiskTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingDiskTest.java @@ -19,8 +19,8 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractStreamingTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingTest.java b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingTest.java index 0257992..f0b4cf6 100644 --- a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingTest.java +++ b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaStreamingTest.java @@ -19,8 +19,8 @@ package org.apache.commons.fileupload2.jakarta; import java.io.InputStream; import org.apache.commons.fileupload2.core.AbstractStreamingTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import jakarta.servlet.http.HttpServletRequest; diff --git a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleanerCleanup.java b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleaner.java similarity index 95% rename from commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleanerCleanup.java rename to commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleaner.java index d083087..bc12558 100644 --- a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleanerCleanup.java +++ b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxFileCleaner.java @@ -25,12 +25,12 @@ import org.apache.commons.io.FileCleaningTracker; /** * A servlet context listener, which ensures that the {@link FileCleaningTracker}'s reaper thread is terminated, when the web application is destroyed. */ -public class JavaxFileCleanerCleanup implements ServletContextListener { +public class JavaxFileCleaner implements ServletContextListener { /** * Attribute name, which is used for storing an instance of {@link FileCleaningTracker} in the web application. */ - public static final String FILE_CLEANING_TRACKER_ATTRIBUTE = JavaxFileCleanerCleanup.class.getName() + ".FileCleaningTracker"; + public static final String FILE_CLEANING_TRACKER_ATTRIBUTE = JavaxFileCleaner.class.getName() + ".FileCleaningTracker"; /** * Gets the instance of {@link FileCleaningTracker}, which is associated with the given {@link ServletContext}. diff --git a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxServletDiskFileUpload.java b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxServletDiskFileUpload.java index ddbaecb..fd50d4a 100644 --- a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxServletDiskFileUpload.java +++ b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/JavaxServletDiskFileUpload.java @@ -17,8 +17,8 @@ package org.apache.commons.fileupload2.javax; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * A JavaxServletFileUpload for {@link DiskFileItem} and {@link DiskFileItemFactory}. diff --git a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/package-info.java b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/package-info.java index b1c27b7..e8dfa94 100644 --- a/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/package-info.java +++ b/commons-fileupload2-javax/src/main/java/org/apache/commons/fileupload2/javax/package-info.java @@ -19,7 +19,7 @@ * <p> * An implementation of {@link org.apache.commons.fileupload2.core.AbstractFileUpload} for use in servlets conforming to JSR 53. This implementation requires * only access to the servlet's current {@code HttpServletRequest} instance, and a suitable {@link org.apache.commons.fileupload2.core.FileItemFactory} - * implementation, such as {@link org.apache.commons.fileupload2.core.disk.DiskFileItemFactory}. + * implementation, such as {@link org.apache.commons.fileupload2.core.DiskFileItemFactory}. * </p> * <p> * The following code fragment demonstrates typical usage. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerDiskTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerDiskTest.java index a5323b6..00444d8 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerDiskTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerDiskTest.java @@ -21,9 +21,9 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractProgressListenerTest; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.ProgressListener; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; /** * Tests the {@link ProgressListener}. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java index 5ce9387..de29765 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java @@ -21,9 +21,9 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractProgressListenerTest; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.ProgressListener; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; /** * Tests the {@link ProgressListener}. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadDiskTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadDiskTest.java index 12880cc..75a327e 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadDiskTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadDiskTest.java @@ -31,9 +31,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractFileUploadTest; import org.apache.commons.fileupload2.core.Constants; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.junit.jupiter.api.Test; /** diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadTest.java index c5cbf05..88c79aa 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxServletFileUploadTest.java @@ -31,9 +31,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractFileUploadTest; import org.apache.commons.fileupload2.core.Constants; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.junit.jupiter.api.Test; /** diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesDiskTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesDiskTest.java index 8477791..65d4301 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesDiskTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesDiskTest.java @@ -21,8 +21,8 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractSizesTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * Unit test for items with varying sizes. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java index aa230b6..0281a26 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java @@ -21,8 +21,8 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractSizesTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * Unit test for items with varying sizes. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingDiskTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingDiskTest.java index 7010efa..9ca7ccd 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingDiskTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingDiskTest.java @@ -21,8 +21,8 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractStreamingTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * Unit test for items with varying sizes. diff --git a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java index 954de92..d299efc 100644 --- a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java +++ b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java @@ -21,8 +21,8 @@ import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.AbstractStreamingTest; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; /** * Unit test for items with varying sizes. diff --git a/commons-fileupload2-portlet/src/main/java/org/apache/commons/fileupload2/portlet/package-info.java b/commons-fileupload2-portlet/src/main/java/org/apache/commons/fileupload2/portlet/package-info.java index 5462c97..495dcd1 100644 --- a/commons-fileupload2-portlet/src/main/java/org/apache/commons/fileupload2/portlet/package-info.java +++ b/commons-fileupload2-portlet/src/main/java/org/apache/commons/fileupload2/portlet/package-info.java @@ -19,7 +19,7 @@ * <p> * An implementation of {@link org.apache.commons.fileupload2.core.AbstractFileUpload} for use in portlets conforming to JSR 168. This implementation requires * only access to the portlet's current {@code ActionRequest} instance, and a suitable {@link org.apache.commons.fileupload2.core.FileItemFactory} - * implementation, such as {@link org.apache.commons.fileupload2.core.disk.DiskFileItemFactory}. + * implementation, such as {@link org.apache.commons.fileupload2.core.DiskFileItemFactory}. * </p> * <p> * The following code fragment demonstrates typical usage. diff --git a/commons-fileupload2-portlet/src/test/java/org/apache/commons/fileupload2/portlet/JavaxPortletFileUploadTest.java b/commons-fileupload2-portlet/src/test/java/org/apache/commons/fileupload2/portlet/JavaxPortletFileUploadTest.java index f511a20..552de0e 100644 --- a/commons-fileupload2-portlet/src/test/java/org/apache/commons/fileupload2/portlet/JavaxPortletFileUploadTest.java +++ b/commons-fileupload2-portlet/src/test/java/org/apache/commons/fileupload2/portlet/JavaxPortletFileUploadTest.java @@ -27,9 +27,9 @@ import javax.portlet.ActionRequest; import org.apache.commons.fileupload2.core.AbstractFileUploadTest; import org.apache.commons.fileupload2.core.Constants; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileUploadException; -import org.apache.commons.fileupload2.core.disk.DiskFileItem; -import org.apache.commons.fileupload2.core.disk.DiskFileItemFactory; import org.junit.jupiter.api.Test; /** diff --git a/spotbugs-exclude-filter.xml b/spotbugs-exclude-filter.xml index 6c96273..8610140 100644 --- a/spotbugs-exclude-filter.xml +++ b/spotbugs-exclude-filter.xml @@ -50,7 +50,7 @@ <Bug pattern="DLS_DEAD_LOCAL_STORE" /> </Match> <Match> - <Class name="org.apache.commons.fileupload2.jaksrvlt.JakSrvltFileUpload" /> + <Class name="org.apache.commons.fileupload2.jaksrvlt.JakartaServletFileUpload " /> <Bug pattern="NM_WRONG_PACKAGE" /> </Match> <Match> diff --git a/src/site/apt/migration.apt.vm b/src/site/apt/migration.apt.vm index 2f2d627..8bd57bd 100644 --- a/src/site/apt/migration.apt.vm +++ b/src/site/apt/migration.apt.vm @@ -127,22 +127,23 @@ Migrating import org.apache.commons.fileupload2.FileItemFactory; import org.apache.commons.fileupload2.FileUpload; import org.apache.commons.fileupload2.FileUploadException; - import org.apache.commons.fileupload2.disk.DiskFileItemFactory; - import org.apache.commons.fileupload2.jakarta.JavaxServletFileUpload; - import org.apache.commons.fileupload2.jakarta.JavaxServletRequestContext; + import org.apache.commons.fileupload2.DiskFileItemFactory; + import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload; + import org.apache.commons.fileupload2.jakarta.JakartaServletRequestContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; + public class SampleServlet extends HttpServlet { - private static final long serialVersionUID = -8899322882932916888L; + private static final long serialVersionUID = 2; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - if (JavaxServletFileUpload.isMultipartContent(req)) { - final FileItemFactory fileItemfactory = new DiskFileItemFactory(); - final FileUpload fileUpload = new JavaxServletFileUpload(fileItemfactory); + if (JakartaServletFileUpload.isMultipartContent(req)) { + final DiskFileItemFactory fileItemfactory = new DiskFileItemFactory(); + final JakartaServletFileUpload fileUpload = new JakartaServletFileUpload(fileItemfactory); final List<FileItem> items; try { items = fileUpload.parseRequest(new JavaxServletRequestContext(req)); @@ -156,7 +157,6 @@ Migrating +------------------------------------------- -* Using Commons FileUpload 2 as a Java Module +* Using Commons FileUpload 2 as a JPMS Module The library provides <<META-INF/versions/module-info.class>> that defines the required modules and exported packages. - All packages but <<org.apache.commons.fileupload2.impl>> are exported. diff --git a/src/site/fml/faq.fml b/src/site/fml/faq.fml index 3658324..6fd1d6c 100644 --- a/src/site/fml/faq.fml +++ b/src/site/fml/faq.fml @@ -206,7 +206,7 @@ try { In other words, it still declares itself as serializable, and deserializable to the JVM. In practice, however, an attempt to deserialize an instance of DiskFileItem will trigger an Exception. In the unlikely case, that your application depends on the deserialization of DiskFileItems, you can revert to the - previous behavior by setting the system property "org.apache.commons.fileupload.disk.DiskFileItem.serializable" + previous behavior by setting the system property "org.apache.commons.fileupload.DiskFileItem.serializable" to "true". </p> </answer> diff --git a/src/site/xdoc/overview.xml b/src/site/xdoc/overview.xml index c73efb9..3f9bda9 100644 --- a/src/site/xdoc/overview.xml +++ b/src/site/xdoc/overview.xml @@ -33,23 +33,21 @@ <p> Assuming that you have decided that FileUpload should be invoked, you might write the following code to handle a file upload request: -<source><![CDATA[DiskFileItemFactory factory = new DiskFileItemFactory(); -// Set upload parameters -factory.setSizeThreshold(MAX_MEMORY_SIZE); -factory.setRepository(new File(TEMP_DIR)); +<source><![CDATA[DiskFileItemFactory factory = DiskFileItemFactory.builder() + // Set upload parameters + .setBufferSize(MAX_MEMORY_SIZE) + .setPath(Paths.get(TEMP_DIR)) + .get(); // Create a new file upload handler -ServletFileUpload upload = new ServletFileUpload( factory ); +JakartaServletDiskFileUpload upload = new JakartaServletDiskFileUpload(factory); upload.setSizeMax(MAX_UPLOAD_SIZE); // Parse the request -List<FileItem> items = upload.parseRequest(request); +List<DiskFileItem> items = upload.parseRequest(request); // Process the uploaded fields -Iterator<FileItem> iter = items.iterator(); -while (iter.hasNext()) { - FileItem item = iter.next(); - +for (DiskFileItem item :items) { if (item.isFormField()) { processTextParameter(request, item); } else { diff --git a/src/site/xdoc/streaming.xml b/src/site/xdoc/streaming.xml index a765975..ba8ac5d 100644 --- a/src/site/xdoc/streaming.xml +++ b/src/site/xdoc/streaming.xml @@ -55,18 +55,16 @@ method, which you already know from the traditional API. </p> <source><![CDATA[// Check that we have a file upload request -boolean isMultipart = ServletFileUpload.isMultipartContent(request);]]></source> +boolean isMultipart = JakartaServletFileUpload.isMultipartContent(request);]]></source> <p> Now we are ready to parse the request into its constituent items. Here's how we do it: </p> <source><![CDATA[// Create a new file upload handler -ServletFileUpload upload = new ServletFileUpload(); +JakartaServletFileUpload upload = new JakartaServletFileUpload(); // Parse the request -FileItemIterator iter = upload.getItemIterator(request); -while (iter.hasNext()) { - FileItemStream item = iter.next(); +upload.getItemIterator(request).forEachRemaining(item -> { String name = item.getFieldName(); InputStream stream = item.getInputStream(); if (item.isFormField()) { @@ -78,7 +76,7 @@ while (iter.hasNext()) { // Process the input stream ... } -}]]></source> +});]]></source> <p> That's all that's needed. Really! </p> diff --git a/src/site/xdoc/using.xml b/src/site/xdoc/using.xml index 1ff5529..6d54f11 100644 --- a/src/site/xdoc/using.xml +++ b/src/site/xdoc/using.xml @@ -23,6 +23,7 @@ <properties> <title>Using FileUpload</title> <author email="mart...@apache.org">Martin Cooper</author> + <author email="ggreg...@apache.org">Gary Gregory</author> </properties> <body> @@ -96,8 +97,8 @@ distinctions you should make as you read this document:</p> <ul> <li> - Where you see references to the <code>ServletFileUpload</code> class, - substitute the <code>PortletFileUpload</code> class. + Where you see references to the <code>JakartaServletFileUpload</code> class, + substitute the <code>JavaxPortletFileUpload</code> class. </li> <li> Where you see references to the <code>HttpServletRequest</code> class, @@ -112,18 +113,17 @@ <ul> <li> Where you see references to the <code>ServletFileUpload</code> class, - substitute the <code>JakSrvltFileUpload</code> class. + substitute the <code>JakartaServletFileUpload </code> class. </li> <li> Likewise, references to the <code>FileCleanerCleanup</code> class should - be substituted with the <code>JakSrvltFileCleaner</code> class. + be substituted with the <code>JakartaServletFileCleaner</code> class. </li> <li> Where you see references to the <code>HttpServletRequest</code> class (as in javax.servlet.http.HttpServletRequest), then substitute the - <code>jakarta.servlet.http.HttpServletRequest</code> class. For well - written code, this should be as simple as changing a single import - statement. + <code>jakarta.servlet.http.HttpServletRequest</code> class. + This could be as simple as changing a single import statement. </li> </ul> </section> @@ -167,14 +167,14 @@ DiskFileItemFactory factory = new DiskFileItemFactory(); // Configure a repository (to ensure a secure temp location is used) ServletContext servletContext = this.getServletConfig().getServletContext(); -File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); +File repository = (File) servletContext.getAttribute("jakarta.servlet.context.tempdir"); // Or "javax.servlet.context.tempdir" for javax factory.setRepository(repository); // Create a new file upload handler -ServletFileUpload upload = new ServletFileUpload(factory); +JakartaServletDiskFileUpload upload = new JakartaServletDiskFileUpload(factory); // Parse the request -List<FileItem> items = upload.parseRequest(request);]]></source> +List<DiskFileItem> items = upload.parseRequest(request);]]></source> <p> That's all that's needed. Really! </p> @@ -193,27 +193,31 @@ List<FileItem> items = upload.parseRequest(request);]]></source> following example shows several configuration options: </p> <source><![CDATA[// Create a factory for disk-based file items -DiskFileItemFactory factory = new DiskFileItemFactory(); - -// Set factory constraints -factory.setSizeThreshold(yourMaxMemorySize); -factory.setRepository(yourTempDirectory); +DiskFileItemFactory factory = new DiskFileItemFactory() + // Set factory constraints + .setSizeThreshold(yourMaxMemorySize) + .setPath(yourTempDirectoryPath) + .get(); // Create a new file upload handler -ServletFileUpload upload = new ServletFileUpload(factory); +JakartaServletDiskFileUpload upload = new JakartaServletDiskFileUpload(factory); // Set overall request size constraint -upload.setSizeMax(yourMaxRequestSize); +upload.setFileSizeMax(yourMaxRequestSize); // Parse the request -List<FileItem> items = upload.parseRequest(request);]]></source> +List<DiskFileItem> items = upload.parseRequest(request);]]></source> <p> Of course, each of the configuration methods is independent of the others, but if you want to configure the factory all at once, you can do that with an alternative constructor, like this: </p> <source><![CDATA[// Create a factory for disk-based file items -DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory);]]></source> +DiskFileItemFactory factory = new DiskFileItemFactory() + // Set factory constraints + .setSizeThreshold(yourMaxMemorySize) + .setPath(yourTempDirectoryPath) + .get();]]></source> <p> Should you need further control over the parsing of the request, such as storing the items elsewhere - for example, in a database - you will @@ -230,10 +234,7 @@ DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTem the list like this: </p> <source><![CDATA[// Process the uploaded items -Iterator<FileItem> iter = items.iterator(); -while (iter.hasNext()) { - FileItem item = iter.next(); - +for (FileItem item : items.iterator()) { if (item.isFormField()) { processFormField(item); } else { @@ -274,7 +275,7 @@ if (!item.isFormField()) { </p> <source><![CDATA[// Process a file upload if (writeToFile) { - File uploadedFile = new File(...); + Path uploadedFile = Paths.get(...); item.write(uploadedFile); } else { InputStream uploadedStream = item.getInputStream(); @@ -314,14 +315,14 @@ byte[] data = item.get(); This reaper thread should be stopped, if it is no longer needed. In a servlet environment, this is done by using a special servlet context listener, called - <a href="./apidocs/org/apache/commons/fileupload/servlet/FileCleanerCleanup.html">FileCleanerCleanup</a>. + <a href="./apidocs/org/apache/commons/fileupload2/jakarta/JakartaFileCleaner.html">JakartaFileCleaner</a>. To do so, add a section like the following to your <code>web.xml</code>: </p> <source><![CDATA[<web-app> ... <listener> <listener-class> - org.apache.commons.fileupload.servlet.FileCleanerCleanup + org.apache.commons.fileupload2.jakarta.JakartaFileCleaner </listener-class> </listener> ... @@ -329,19 +330,19 @@ byte[] data = item.get(); <subsection name="Creating a DiskFileItemFactory"> <p> - The FileCleanerCleanup provides an instance of + The JakartaFileCleaner provides an instance of <code>org.apache.commons.io.FileCleaningTracker</code>. This instance must be used when creating a - <code>org.apache.commons.fileupload.disk.DiskFileItemFactory</code>. + <code>org.apache.commons.fileupload2.core.DiskFileItemFactory</code>. This should be done by calling a method like the following: </p> <source><![CDATA[public static DiskFileItemFactory newDiskFileItemFactory(ServletContext context, File repository) { - FileCleaningTracker fileCleaningTracker - = FileCleanerCleanup.getFileCleaningTracker(context); - DiskFileItemFactory factory - = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, - repository); + FileCleaningTracker fileCleaningTracker = JakartaFileCleaner.getFileCleaningTracker(context); + DiskFileItemFactory factory = new DiskFileItemFactory() + .setSizeThreshold(DiskFileItemFactory.DEFAULT_THRESHOLD) + .setPath(repository) + .get(); factory.setFileCleaningTracker(fileCleaningTracker); return factory; }]]></source> @@ -402,12 +403,12 @@ byte[] data = item.get(); </p> <source><![CDATA[//Create a progress listener ProgressListener progressListener = new ProgressListener(){ - public void update(long pBytesRead, long pContentLength, int pItems) { - System.out.println("We are currently reading item " + pItems); - if (pContentLength == -1) { - System.out.println("So far, " + pBytesRead + " bytes have been read."); + public void update(long bytesRead, long contentLength, int items) { + System.out.println("We are currently reading item " + items); + if (contentLength == -1) { + System.out.println("So far, " + bytesRead + " bytes have been read."); } else { - System.out.println("So far, " + pBytesRead + " of " + pContentLength + System.out.println("So far, " + bytesRead + " of " + contentLength + " bytes have been read."); } } @@ -426,17 +427,17 @@ upload.setProgressListener(progressListener);]]></source> <source><![CDATA[//Create a progress listener ProgressListener progressListener = new ProgressListener(){ private long megaBytes = -1; - public void update(long pBytesRead, long pContentLength, int pItems) { - long mBytes = pBytesRead / 1000000; + public void update(long bytesRead, long contentLength, int items) { + long mBytes = bytesRead / 1000000; if (megaBytes == mBytes) { return; } megaBytes = mBytes; - System.out.println("We are currently reading item " + pItems); - if (pContentLength == -1) { - System.out.println("So far, " + pBytesRead + " bytes have been read."); + System.out.println("We are currently reading item " + items); + if (contentLength == -1) { + System.out.println("So far, " + bytesRead + " bytes have been read."); } else { - System.out.println("So far, " + pBytesRead + " of " + pContentLength + System.out.println("So far, " + bytesRead + " of " + contentLength + " bytes have been read."); } }