Avoid NPE in ContextLoader when dealing with an untyped ApplicationContextInitializer
Issue: SPR-10449
(cherry picked from commit a19c976)
This commit is contained in:
parent
76f870caca
commit
faa8430fd7
|
|
@ -470,7 +470,6 @@ public class ContextLoader {
|
||||||
protected void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext) {
|
protected void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext) {
|
||||||
List<Class<ApplicationContextInitializer<ConfigurableApplicationContext>>> initializerClasses =
|
List<Class<ApplicationContextInitializer<ConfigurableApplicationContext>>> initializerClasses =
|
||||||
determineContextInitializerClasses(servletContext);
|
determineContextInitializerClasses(servletContext);
|
||||||
|
|
||||||
if (initializerClasses.size() == 0) {
|
if (initializerClasses.size() == 0) {
|
||||||
// no ApplicationContextInitializers have been declared -> nothing to do
|
// no ApplicationContextInitializers have been declared -> nothing to do
|
||||||
return;
|
return;
|
||||||
|
|
@ -483,11 +482,13 @@ public class ContextLoader {
|
||||||
for (Class<ApplicationContextInitializer<ConfigurableApplicationContext>> initializerClass : initializerClasses) {
|
for (Class<ApplicationContextInitializer<ConfigurableApplicationContext>> initializerClass : initializerClasses) {
|
||||||
Class<?> initializerContextClass =
|
Class<?> initializerContextClass =
|
||||||
GenericTypeResolver.resolveTypeArgument(initializerClass, ApplicationContextInitializer.class);
|
GenericTypeResolver.resolveTypeArgument(initializerClass, ApplicationContextInitializer.class);
|
||||||
|
if (initializerContextClass != null) {
|
||||||
Assert.isAssignable(initializerContextClass, contextClass, String.format(
|
Assert.isAssignable(initializerContextClass, contextClass, String.format(
|
||||||
"Could not add context initializer [%s] as its generic parameter [%s] " +
|
"Could not add context initializer [%s] as its generic parameter [%s] " +
|
||||||
"is not assignable from the type of application context used by this " +
|
"is not assignable from the type of application context used by this " +
|
||||||
"context loader [%s]: ", initializerClass.getName(), initializerContextClass.getName(),
|
"context loader [%s]: ", initializerClass.getName(), initializerContextClass.getName(),
|
||||||
contextClass.getName()));
|
contextClass.getName()));
|
||||||
|
}
|
||||||
initializerInstances.add(BeanUtils.instantiateClass(initializerClass));
|
initializerInstances.add(BeanUtils.instantiateClass(initializerClass));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue