From 847b54f3b1aa7fae0473fb20dffc9c7fa3fec063 Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Tue, 31 May 2011 01:12:34 +0000 Subject: [PATCH] Sort WebApplicationInitializers properly Issue: SPR-7672 --- .../web/SpringServletContainerInitializer.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java b/org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java index 5ea1ebfb1e3..d2153ca9c68 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java +++ b/org.springframework.web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java @@ -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> webAppInitializerClasses, ServletContext servletContext) throws ServletException { - Set initializers = - new TreeSet(new AnnotationAwareOrderComparator()); + ArrayList initializers = new ArrayList(); 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);