Skip to content

Commit 78d3e5f

Browse files
committed
read factory from init parameters
1 parent 31d92fe commit 78d3e5f

File tree

2 files changed

+19
-27
lines changed

2 files changed

+19
-27
lines changed

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.apache.catalina.core;
1818

1919
import java.io.InputStream;
20+
import java.lang.reflect.Constructor;
2021
import java.lang.reflect.InvocationTargetException;
2122
import java.net.MalformedURLException;
2223
import java.net.URL;
@@ -1174,11 +1175,28 @@ protected StandardContext getContext() {
11741175

11751176
public ProgressListenerFactory getProgressListenerFactory() {
11761177
if (progressListenerFactory == null) {
1177-
progressListenerFactory = ProgressListenerFactory.newFactory(log, sm, context, this);
1178+
progressListenerFactory = newProgressListenerFactory();
11781179
}
11791180
return progressListenerFactory;
11801181
}
11811182

1183+
private ProgressListenerFactory newProgressListenerFactory() {
1184+
String progressListenerFactoryClassName = getInitParameter(ProgressListenerFactory.FACTORY_NAME);
1185+
if (progressListenerFactoryClassName == null || progressListenerFactoryClassName.isEmpty()) {
1186+
log.warn(sm.getString("applicationContext.no.upload.progressListenerFactory", progressListenerFactoryClassName));
1187+
return ProgressListenerFactory.NULL_FACTORY;
1188+
}
1189+
try {
1190+
Class<?> progressListenerFactoryClass = Introspection.loadClass(context, progressListenerFactoryClassName);
1191+
Constructor<?> ctor = progressListenerFactoryClass.getConstructor();
1192+
return (ProgressListenerFactory) ctor.newInstance();
1193+
} catch (InvocationTargetException | NoSuchMethodException | InstantiationException
1194+
| ClassCastException | IllegalAccessException e) {
1195+
log.error(sm.getString("applicationContext.invalid.progressListenerFactory", progressListenerFactoryClassName), e);
1196+
return ProgressListenerFactory.NULL_FACTORY;
1197+
}
1198+
}
1199+
11821200
/**
11831201
* Clear all application-created attributes.
11841202
*/

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

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,6 @@
1717

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

20-
import java.lang.reflect.Constructor;
21-
import java.lang.reflect.InvocationTargetException;
22-
23-
import jakarta.servlet.ServletContext;
24-
25-
import org.apache.catalina.core.StandardContext;
26-
import org.apache.catalina.util.Introspection;
27-
import org.apache.juli.logging.Log;
28-
import org.apache.tomcat.util.res.StringManager;
29-
3020
/**
3121
* Factory for {@link ProgressListener}. Users can specify this via a System property. See FACTORY_NAME
3222
*/
@@ -47,22 +37,6 @@ public ProgressListener newProgressListener() {
4737
}
4838
};
4939

50-
static ProgressListenerFactory newFactory(final Log log, StringManager sm, final StandardContext context, ServletContext servletContext) {
51-
String progressListenerFactoryClassName = servletContext.getInitParameter(ProgressListenerFactory.FACTORY_NAME);
52-
if (progressListenerFactoryClassName == null || progressListenerFactoryClassName.isEmpty()) {
53-
log.warn(sm.getString("applicationContext.no.upload.progressListenerFactory", progressListenerFactoryClassName));
54-
return NULL_FACTORY;
55-
}
56-
try {
57-
Class<?> progressListenerFactoryClass = Introspection.loadClass(context, progressListenerFactoryClassName);
58-
Constructor<?> ctor = progressListenerFactoryClass.getConstructor();
59-
return (ProgressListenerFactory) ctor.newInstance();
60-
} catch (InvocationTargetException | NoSuchMethodException | InstantiationException
61-
| ClassCastException | IllegalAccessException e) {
62-
log.error(sm.getString("applicationContext.invalid.progressListenerFactory", progressListenerFactoryClassName), e);
63-
return NULL_FACTORY;
64-
}
65-
}
6640

6741
/**
6842
* @return returns a new {@link ProgressListener} for current request.

0 commit comments

Comments
 (0)