Skip to content

Commit e405d41

Browse files
committed
read factory from init parameters
1 parent 2a649a8 commit e405d41

3 files changed

Lines changed: 10 additions & 14 deletions

File tree

java/org/apache/catalina/connector/Request.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
import org.apache.tomcat.util.http.ServerCookies;
112112
import org.apache.tomcat.util.http.fileupload.FileItem;
113113
import org.apache.tomcat.util.http.fileupload.FileUpload;
114+
import org.apache.tomcat.util.http.fileupload.ProgressListenerFactory;
114115
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
115116
import org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException;
116117
import org.apache.tomcat.util.http.fileupload.impl.SizeException;
@@ -2491,7 +2492,10 @@ private void parseParts() {
24912492
FileUpload upload = new FileUpload();
24922493
// allow applications to register custom progress listeners
24932494
if (servletContext instanceof ApplicationContextFacade applicationContext) {
2494-
upload.setProgressListener(applicationContext.getProgressListenerFactory().newProgressListener());
2495+
ProgressListenerFactory progressListenerFactory = applicationContext.getProgressListenerFactory();
2496+
if (progressListenerFactory != null) {
2497+
upload.setProgressListener(progressListenerFactory.newProgressListener(this.getRequest()));
2498+
}
24952499
}
24962500
upload.setFileItemFactory(factory);
24972501
upload.setFileSizeMax(mce.getMaxFileSize());

java/org/apache/catalina/core/ApplicationContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,7 +1184,7 @@ private ProgressListenerFactory newProgressListenerFactory() {
11841184
String progressListenerFactoryClassName = getInitParameter(ProgressListenerFactory.FACTORY_NAME);
11851185
if (progressListenerFactoryClassName == null || progressListenerFactoryClassName.isEmpty()) {
11861186
log.warn(sm.getString("applicationContext.no.upload.progressListenerFactory", progressListenerFactoryClassName));
1187-
return ProgressListenerFactory.NULL_FACTORY;
1187+
return null;
11881188
}
11891189
try {
11901190
Class<?> progressListenerFactoryClass = Introspection.loadClass(context, progressListenerFactoryClassName);
@@ -1193,7 +1193,7 @@ private ProgressListenerFactory newProgressListenerFactory() {
11931193
} catch (InvocationTargetException | NoSuchMethodException | InstantiationException
11941194
| ClassCastException | IllegalAccessException e) {
11951195
log.error(sm.getString("applicationContext.invalid.progressListenerFactory", progressListenerFactoryClassName), e);
1196-
return ProgressListenerFactory.NULL_FACTORY;
1196+
return null;
11971197
}
11981198
}
11991199

java/org/apache/tomcat/util/http/fileupload/ProgressListenerFactory.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.tomcat.util.http.fileupload;
1919

20+
import jakarta.servlet.http.HttpServletRequest;
21+
2022
/**
2123
* Factory for {@link ProgressListener}. Users can specify this via a System property. See FACTORY_NAME
2224
*/
@@ -27,20 +29,10 @@ public interface ProgressListenerFactory {
2729
*/
2830
String FACTORY_NAME = "tomcat.fileUploadProgressListenerFactory";
2931

30-
/**
31-
* Factory that creates no listeners. To avoid null checks in code.
32-
*/
33-
ProgressListenerFactory NULL_FACTORY = new ProgressListenerFactory() {
34-
@Override
35-
public ProgressListener newProgressListener() {
36-
return null;
37-
}
38-
};
39-
4032

4133
/**
4234
* @return returns a new {@link ProgressListener} for current request.
4335
*/
44-
ProgressListener newProgressListener();
36+
ProgressListener newProgressListener(HttpServletRequest servletRequest);
4537

4638
}

0 commit comments

Comments
 (0)