Browse Source

Sort WebApplicationInitializers properly

Issue: SPR-7672
pull/7/head
Chris Beams 15 years ago
parent
commit
847b54f3b1
  1. 16
      org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java

16
org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java

@ -19,9 +19,10 @@ package org.springframework.web; @@ -19,9 +19,10 @@ package org.springframework.web;
import static org.springframework.beans.BeanUtils.instantiateClass;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collections;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.TreeSet;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
@ -136,16 +137,13 @@ public class SpringServletContainerInitializer implements ServletContainerInitia @@ -136,16 +137,13 @@ public class SpringServletContainerInitializer implements ServletContainerInitia
public void onStartup(Set<Class<?>> webAppInitializerClasses,
ServletContext servletContext) throws ServletException {
Set<WebApplicationInitializer> initializers =
new TreeSet<WebApplicationInitializer>(new AnnotationAwareOrderComparator());
ArrayList<WebApplicationInitializer> initializers = new ArrayList<WebApplicationInitializer>();
for (Class<?> waiClass : webAppInitializerClasses) {
if (Modifier.isAbstract(waiClass.getModifiers())) {
// the class is not instantiable (i.e. abstract or an interface) -> skip it
continue;
if (!Modifier.isAbstract(waiClass.getModifiers())) {
// the class can be instantiated -> add it
initializers.add(instantiateClass(waiClass, WebApplicationInitializer.class));
}
initializers.add(instantiateClass(waiClass, WebApplicationInitializer.class));
}
if (initializers.isEmpty()) {
@ -153,6 +151,8 @@ public class SpringServletContainerInitializer implements ServletContainerInitia @@ -153,6 +151,8 @@ public class SpringServletContainerInitializer implements ServletContainerInitia
return;
}
Collections.sort(initializers, new AnnotationAwareOrderComparator());
logger.info("Delegating ServletContext to the following " +
"WebApplicationInitializer instances: " + initializers);

Loading…
Cancel
Save