|
17 | 17 | package org.apache.catalina.core; |
18 | 18 |
|
19 | 19 | import java.io.InputStream; |
| 20 | +import java.lang.reflect.Constructor; |
20 | 21 | import java.lang.reflect.InvocationTargetException; |
21 | 22 | import java.net.MalformedURLException; |
22 | 23 | import java.net.URL; |
@@ -1174,11 +1175,28 @@ protected StandardContext getContext() { |
1174 | 1175 |
|
1175 | 1176 | public ProgressListenerFactory getProgressListenerFactory() { |
1176 | 1177 | if (progressListenerFactory == null) { |
1177 | | - progressListenerFactory = ProgressListenerFactory.newFactory(log, sm, context, this); |
| 1178 | + progressListenerFactory = newProgressListenerFactory(); |
1178 | 1179 | } |
1179 | 1180 | return progressListenerFactory; |
1180 | 1181 | } |
1181 | 1182 |
|
| 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 | + |
1182 | 1200 | /** |
1183 | 1201 | * Clear all application-created attributes. |
1184 | 1202 | */ |
|
0 commit comments