Class SpringBeanProcessor
- java.lang.Object
-
- org.jboss.resteasy.plugins.spring.SpringBeanProcessor
-
- All Implemented Interfaces:
EventListener,org.springframework.beans.factory.config.BeanFactoryPostProcessor,org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>,org.springframework.context.event.SmartApplicationListener,org.springframework.core.Ordered
- Direct Known Subclasses:
SpringBeanProcessorServletAware
public class SpringBeanProcessor extends Object implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.context.event.SmartApplicationListener
The processor will register any bean annotated with @Path or @Provider into the Resteasy framework.
It also sets up Registry and ResteasyProviderFactory to be autowirable via @Autowire in Controllers/service layers.
There's quite a bit of spring integration functionality under the covers:
- @Providers, such as RESTEasy interceptors and String converters have to be registered in RESTEasy before resources and registers. That gets a bit tricky, so depends-on functionality is used as well
- Version:
- $Revision: 1 $
- Author:
- Solomon Duskis, Bill Burke
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classSpringBeanProcessor.ResteasyBeanPostProcessor
-
Field Summary
Fields Modifier and Type Field Description protected ResteasyDeploymentdeploymentprotected Dispatcherdispatcherprotected ResteasyProviderFactoryproviderFactoryprotected Set<String>providerNamesprotected Registryregistryprotected Map<String,SpringResourceFactory>resourceFactoriesprotected Set<String>resourceFactoryNames
-
Constructor Summary
Constructors Constructor Description SpringBeanProcessor()SpringBeanProcessor(Dispatcher dispatcher)SpringBeanProcessor(Dispatcher dispatcher, Registry registry, ResteasyProviderFactory providerFactory)SpringBeanProcessor(ResteasyDeployment deployment)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DispatchergetDispatcher()intgetOrder()StringgetPropertyValue(org.springframework.beans.MutablePropertyValues registrationPropertyValues, String propertyName)ResteasyProviderFactorygetProviderFactory()RegistrygetRegistry()voidonApplicationEvent(org.springframework.context.ApplicationEvent event)Register all of the resources into RESTEasy only when Spring finishes it's life-cycle and the spring singleton bean creation is completed.voidpostProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)This method keeps track of @Provider and resources for future use.protected Class<?>processBean(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, List<String> dependsOnProviders, String name, org.springframework.beans.factory.config.BeanDefinition beanDef)Process a single @Provider or a single resource.voidsetDispatcher(Dispatcher dispatcher)voidsetOrder(int order)voidsetProviderFactory(ResteasyProviderFactory providerFactory)voidsetRegistry(Registry registry)booleansupportsEventType(Class<? extends org.springframework.context.ApplicationEvent> eventType)booleansupportsSourceType(Class<?> sourceType)
-
-
-
Field Detail
-
registry
protected Registry registry
-
providerFactory
protected ResteasyProviderFactory providerFactory
-
dispatcher
protected Dispatcher dispatcher
-
deployment
protected ResteasyDeployment deployment
-
resourceFactories
protected Map<String,SpringResourceFactory> resourceFactories
-
-
Constructor Detail
-
SpringBeanProcessor
public SpringBeanProcessor(ResteasyDeployment deployment)
-
SpringBeanProcessor
public SpringBeanProcessor(Dispatcher dispatcher)
-
SpringBeanProcessor
public SpringBeanProcessor(Dispatcher dispatcher, Registry registry, ResteasyProviderFactory providerFactory)
-
SpringBeanProcessor
public SpringBeanProcessor()
-
-
Method Detail
-
getRegistry
public Registry getRegistry()
-
setRegistry
public void setRegistry(Registry registry)
-
getProviderFactory
public ResteasyProviderFactory getProviderFactory()
-
setProviderFactory
public void setProviderFactory(ResteasyProviderFactory providerFactory)
-
getDispatcher
public Dispatcher getDispatcher()
-
setDispatcher
public void setDispatcher(Dispatcher dispatcher)
-
postProcessBeanFactory
public void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) throws org.springframework.beans.BeansExceptionThis method keeps track of @Provider and resources for future use. It also registers the RESTEasy Registry, ProviderFactry, and Dispatcher for @Autowire injection.
Beyond tracking, this will ensure that non-MessageBody(Reader|Writer) @Providers are created by Spring before any resources by having the resources "depends-on" the @Providers.
- Specified by:
postProcessBeanFactoryin interfaceorg.springframework.beans.factory.config.BeanFactoryPostProcessor- Parameters:
beanFactory- bean factory- Throws:
org.springframework.beans.BeansException
-
processBean
protected Class<?> processBean(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, List<String> dependsOnProviders, String name, org.springframework.beans.factory.config.BeanDefinition beanDef)
Process a single @Provider or a single resource.- Parameters:
beanFactory- bean factorydependsOnProviders- dependent providers listname- bean namebeanDef- bean definition- Returns:
- bean class
-
getPropertyValue
public String getPropertyValue(org.springframework.beans.MutablePropertyValues registrationPropertyValues, String propertyName)
-
onApplicationEvent
public void onApplicationEvent(org.springframework.context.ApplicationEvent event)
Register all of the resources into RESTEasy only when Spring finishes it's life-cycle and the spring singleton bean creation is completed.- Specified by:
onApplicationEventin interfaceorg.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>- Parameters:
event- application event
-
getOrder
public int getOrder()
- Specified by:
getOrderin interfaceorg.springframework.core.Ordered- Specified by:
getOrderin interfaceorg.springframework.context.event.SmartApplicationListener
-
setOrder
public void setOrder(int order)
-
supportsEventType
public boolean supportsEventType(Class<? extends org.springframework.context.ApplicationEvent> eventType)
- Specified by:
supportsEventTypein interfaceorg.springframework.context.event.SmartApplicationListener
-
supportsSourceType
public boolean supportsSourceType(Class<?> sourceType)
- Specified by:
supportsSourceTypein interfaceorg.springframework.context.event.SmartApplicationListener
-
-