Hello Joel, 2.x is not a drop in replacement for 1.x. Why is there a need for a subclass? Perhaps there is a feature we can add to 2.x before we finalize the API.
Gary On Thu, Jun 5, 2025, 14:01 Joel Griffith <[email protected]> wrote: > I manage a Tomcat/JSP webapp. We are updating our source code to conform > to the recent `javax` -> `jakarta` namespace change in the Servlet package. > > The app uses the Apache Commons FileUpload package, which must be upgraded > from v1 to v2 as part of this change. > > FileUpload v1 contains a `DiskFileItem` class: > ``` > org.apache.commons.fileupload.disk.DiskFileItem > ``` > > FileUpload v2 contains the corresponding class > ``` > org.apache.commons.fileupload2.core.DiskFileItem > ``` > > Our webapp code, written for v1, extends `DiskFileItem`: > ``` > public class MonitoredDiskFileItem extends DiskFileItem > { > private MonitoredOutputStream mos = null; > private OutputStreamListener listener; > > public MonitoredDiskFileItem(String fieldName, String contentType, > boolean isFormField, String fileName, int sizeThreshold, File repository, > OutputStreamListener listener) > { > super(fieldName, contentType, isFormField, fileName, sizeThreshold, > repository); > this.listener = listener; > } > > public OutputStream getOutputStream() throws IOException > { > if (mos == null) > { > mos = new MonitoredOutputStream(super.getOutputStream(), > listener); > } > return mos; > } > } > ``` > > This breaks with the update to v2 with `error: cannot inherit from final > DiskFileItem` because the `DiskFileItem` class was changed to `final` > across versions. > > The migration guide at > https://commons.apache.org/proper/commons-fileupload/migration.html > doesn't > give guidance at this level of detail. > > Is there anything I can do to salvage this code? I know that I could > compile my own version of the source code without the `final` keyword in > `DiskFileItem.class`, but I have to assume there's a reason for it and that > it would break other aspects of the code. I hope very much that there's a > simpler solution. I'm a system administrator, not a programmer, so I > cannot rewrite the package from scratch. > > Thanks, > Joel >
