package org.jboss.resteasy.plugins.spring; import org.jboss.resteasy.core.Dispatcher; import org.jboss.resteasy.plugins.spring.i18n.Messages; import org.jboss.resteasy.spi.Registry; import org.jboss.resteasy.spi.ResteasyDeployment; import org.jboss.resteasy.spi.ResteasyProviderFactory; import org.springframework.web.context.ConfigurableWebApplicationContext; import javax.servlet.ServletContext; /** * Provides access to RESTEasy's SpringContextLoader implementation without having * to extend {@link org.springframework.web.context.ContextLoader}. This is useful * if you have your own SpringContextLoaderListener and dont' want to * return RESTEasy's {@link SpringContextLoader}. * * Usage: * <pre> * public class MyCustomSpringContextLoader extends ContextLoader * { * private SpringContextLoaderSupport springContextLoaderSupport = * new SpringContextLoaderSupport(); * * protected void customizeContext( * ServletContext servletContext, * ConfigurableWebApplicationContext configurableWebApplicationContext) * { * super.customizeContext(servletContext, configurableWebApplicationContext); * * // Your custom code * * this.springContextLoaderSupport.customizeContext(servletContext.configurableWebApplicationContext); * * // Your custom code * } * } * </pre> */ public class SpringContextLoaderSupport { public void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext configurableWebApplicationContext) { SpringBeanProcessor processor = null; ResteasyDeployment deployment = (ResteasyDeployment) servletContext.getAttribute(ResteasyDeployment.class.getName()); if (deployment == null) { throw new RuntimeException(Messages.MESSAGES.deploymentIsNull()); } processor = new SpringBeanProcessor(deployment); configurableWebApplicationContext.addBeanFactoryPostProcessor(processor); configurableWebApplicationContext.addApplicationListener(processor); } }