Sort WebApplicationInitializers properly

Issue: SPR-7672
This commit is contained in:
Chris Beams 2011-05-31 01:12:34 +00:00
parent 0067618b35
commit 847b54f3b1
1 changed files with 8 additions and 8 deletions

View File

@ -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
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
return;
}
Collections.sort(initializers, new AnnotationAwareOrderComparator());
logger.info("Delegating ServletContext to the following " +
"WebApplicationInitializer instances: " + initializers);