org.jboss.resteasy.plugins.spring

## 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:

  1. @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 and Description
    --- | ---
    `protected class` | `SpringBeanProcessor.ResteasyBeanPostProcessor`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Dispatcher` | `dispatcher`
    `protected ResteasyProviderFactory` | `providerFactory`
    `protected Set<String>` | `providerNames`
    `protected Registry` | `registry`
    `protected Map<String,SpringResourceFactory>` | `resourceFactories`
    `protected Set<String>` | `resourceFactoryNames`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SpringBeanProcessor()`
    `SpringBeanProcessor(Dispatcher dispatcher)`
    `SpringBeanProcessor(Dispatcher dispatcher, Registry registry, ResteasyProviderFactory providerFactory)`
    `SpringBeanProcessor(ResteasyDeployment deployment)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Dispatcher` | `getDispatcher()`
    `int` | `getOrder()`
    `String` | `getPropertyValue(org.springframework.beans.MutablePropertyValues registrationPropertyValues, String propertyName)`
    `ResteasyProviderFactory` | `getProviderFactory()`
    `Registry` | `getRegistry()`
    `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
    `void` | `postProcessBeanFactory(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.
    `void` | `setDispatcher(Dispatcher dispatcher)`
    `void` | `setOrder(int order)`
    `void` | `setProviderFactory(ResteasyProviderFactory providerFactory)`
    `void` | `setRegistry(Registry registry)`
    `boolean` | `supportsEventType(Class<? extends org.springframework.context.ApplicationEvent> eventType)`
    `boolean` | `supportsSourceType(Class<?> sourceType)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### registry

          protected Registry registry

    - #### providerFactory

          protected ResteasyProviderFactory providerFactory

    - #### dispatcher

          protected Dispatcher dispatcher

    - #### resourceFactoryNames

          protected Set<String> resourceFactoryNames

    - #### resourceFactories

          protected Map<String,SpringResourceFactory> resourceFactories

    - #### providerNames

          protected Set<String> providerNames

  - ### 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.BeansException

      This 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:
        `postProcessBeanFactory` in interface `org.springframework.beans.factory.config.BeanFactoryPostProcessor`
      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.

    - #### 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:
        `onApplicationEvent` in interface `org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>`

    - #### getOrder

          public int getOrder()

      Specified by:
        `getOrder` in interface `org.springframework.core.Ordered`

    - #### setOrder

          public void setOrder(int order)

    - #### supportsEventType

          public boolean supportsEventType(Class<? extends org.springframework.context.ApplicationEvent> eventType)

      Specified by:
        `supportsEventType` in interface `org.springframework.context.event.SmartApplicationListener`

    - #### supportsSourceType

          public boolean supportsSourceType(Class<?> sourceType)

      Specified by:
        `supportsSourceType` in interface `org.springframework.context.event.SmartApplicationListener`

Copyright © 2014. All Rights Reserved.