package org.jboss.resteasy.plugins.spring; import org.jboss.resteasy.plugins.spring.i18n.Messages; import org.springframework.web.context.ConfigurableWebApplicationContext; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.WebApplicationContext; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class SpringContextLoaderListener extends ContextLoaderListener { private SpringContextLoaderSupport springContextLoaderSupport = new SpringContextLoaderSupport(); public SpringContextLoaderListener() { } public SpringContextLoaderListener(WebApplicationContext context) { super(context); } @Override public void contextInitialized(ServletContextEvent event) { boolean scanProviders = false; boolean scanResources = false; String sProviders = event.getServletContext().getInitParameter("resteasy.scan.providers"); if (sProviders != null) { scanProviders = Boolean.valueOf(sProviders.trim()); } String scanAll = event.getServletContext().getInitParameter("resteasy.scan"); if (scanAll != null) { boolean tmp = Boolean.valueOf(scanAll.trim()); scanProviders = tmp || scanProviders; scanResources = tmp; } String sResources = event.getServletContext().getInitParameter("resteasy.scan.resources"); if (sResources != null) { scanResources = Boolean.valueOf(sResources.trim()); } if (scanProviders || scanResources) { throw new RuntimeException(Messages.MESSAGES.cannotUseScanParameters()); } super.contextInitialized(event); } protected ContextLoader createContextLoader() { return new SpringContextLoader(); } @Override protected void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext configurableWebApplicationContext) { super.customizeContext(servletContext, configurableWebApplicationContext); this.springContextLoaderSupport.customizeContext(servletContext, configurableWebApplicationContext); } }