org.springframework.jms.listener.endpoint

## Class StandardJmsActivationSpecFactory

- java.lang.Object
- - org.springframework.jms.listener.endpoint.StandardJmsActivationSpecFactory

- All Implemented Interfaces:
    JmsActivationSpecFactory
  Direct Known Subclasses:
    DefaultJmsActivationSpecFactory

      public class StandardJmsActivationSpecFactory
      extends Object
      implements JmsActivationSpecFactory

  Standard implementation of the `JmsActivationSpecFactory` interface. Supports the standard JMS properties as defined by the JMS 1.5 specification (Appendix B); ignores Spring's "maxConcurrency" and "prefetchSize" settings.

  The 'activationSpecClass' property is required, explicitly defining the fully-qualified class name of the provider's ActivationSpec class (e.g. "org.apache.activemq.ra.ActiveMQActivationSpec").

  Check out `DefaultJmsActivationSpecFactory` for an extended variant of this class, supporting some further default conventions beyond the plain JMS 1.5 specification.

  Since:
    2.5
  Author:
    Juergen Hoeller
  See Also:
    `setActivationSpecClass(java.lang.Class<?>)`, `DefaultJmsActivationSpecFactory`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `StandardJmsActivationSpecFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `applyAcknowledgeMode(BeanWrapper bw, int ackMode)` Apply the specified acknowledge mode to the ActivationSpec object.
    `ActivationSpec` | `createActivationSpec(ResourceAdapter adapter, JmsActivationSpecConfig config)` Create a JCA 1.5 ActivationSpec object based on the given `JmsActivationSpecConfig` object.
    `protected Class<?>` | `determineActivationSpecClass(ResourceAdapter adapter)` Determine the ActivationSpec class for the given ResourceAdapter, if possible.
    `DestinationResolver` | `getDestinationResolver()` Return the `DestinationResolver` to use for resolving destinations names.
    `protected void` | `populateActivationSpecProperties(BeanWrapper bw, JmsActivationSpecConfig config)` Populate the given ApplicationSpec object with the settings defined in the given configuration object.
    `void` | `setActivationSpecClass(Class<?> activationSpecClass)` Specify the fully-qualified ActivationSpec class name for the target provider (e.g.
    `void` | `setDefaultProperties(Map<String,String> defaultProperties)` Specify custom default properties, with String keys and String values.
    `void` | `setDestinationResolver(DestinationResolver destinationResolver)` Set the DestinationResolver to use for resolving destination names into the JCA 1.5 ActivationSpec "destination" property.

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

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

- - ### Constructor Detail

    - #### StandardJmsActivationSpecFactory

          public StandardJmsActivationSpecFactory()

  - ### Method Detail

    - #### setActivationSpecClass

          public void setActivationSpecClass(Class<?> activationSpecClass)

      Specify the fully-qualified ActivationSpec class name for the target provider (e.g. "org.apache.activemq.ra.ActiveMQActivationSpec").

    - #### setDefaultProperties

          public void setDefaultProperties(Map<String,String> defaultProperties)

      Specify custom default properties, with String keys and String values.

      Applied to each ActivationSpec object before it gets populated with listener-specific settings. Allows for configuring vendor-specific properties beyond the Spring-defined settings in `JmsActivationSpecConfig`.

    - #### setDestinationResolver

          public void setDestinationResolver(@Nullable
                                             DestinationResolver destinationResolver)

      Set the DestinationResolver to use for resolving destination names into the JCA 1.5 ActivationSpec "destination" property.

      If not specified, destination names will simply be passed in as Strings. If specified, destination names will be resolved into Destination objects first.

      Note that a DestinationResolver for use with this factory must be able to work without an active JMS Session: e.g. `JndiDestinationResolver` or `BeanFactoryDestinationResolver` but not `DynamicDestinationResolver`.

    - #### getDestinationResolver

          @Nullable
          public DestinationResolver getDestinationResolver()

      Return the `DestinationResolver` to use for resolving destinations names.

    - #### createActivationSpec

          public ActivationSpec createActivationSpec(ResourceAdapter adapter,
                                                     JmsActivationSpecConfig config)

      Description copied from interface: `JmsActivationSpecFactory`
      Create a JCA 1.5 ActivationSpec object based on the given `JmsActivationSpecConfig` object.
      Specified by:
        `createActivationSpec` in interface `JmsActivationSpecFactory`
      Parameters:
        `adapter` - the ResourceAdapter to create an ActivationSpec object for
        `config` - the configured object holding common JMS settings
      Returns:
        the provider-specific JCA ActivationSpec object, representing the same settings

    - #### determineActivationSpecClass

          @Nullable
          protected Class<?> determineActivationSpecClass(ResourceAdapter adapter)

      Determine the ActivationSpec class for the given ResourceAdapter, if possible. Called if no 'activationSpecClass' has been set explicitly
      Parameters:
        `adapter` - the ResourceAdapter to check
      Returns:
        the corresponding ActivationSpec class, or `null` if not determinable
      See Also:
        `setActivationSpecClass(java.lang.Class<?>)`

    - #### populateActivationSpecProperties

          protected void populateActivationSpecProperties(BeanWrapper bw,
                                                          JmsActivationSpecConfig config)

      Populate the given ApplicationSpec object with the settings defined in the given configuration object.

      This implementation applies all standard JMS settings, but ignores "maxConcurrency" and "prefetchSize" - not supported in standard JCA 1.5.

      Parameters:
        `bw` - the BeanWrapper wrapping the ActivationSpec object
        `config` - the configured object holding common JMS settings

    - #### applyAcknowledgeMode

          protected void applyAcknowledgeMode(BeanWrapper bw,
                                              int ackMode)

      Apply the specified acknowledge mode to the ActivationSpec object.

      This implementation applies the standard JCA 1.5 acknowledge modes "Auto-acknowledge" and "Dups-ok-acknowledge". It throws an exception in case of `CLIENT_ACKNOWLEDGE` or `SESSION_TRANSACTED` having been requested.

      Parameters:
        `bw` - the BeanWrapper wrapping the ActivationSpec object
        `ackMode` - the configured acknowledgment mode (according to the constants in `Session`)
      See Also:
        `Session.AUTO_ACKNOWLEDGE`, `Session.DUPS_OK_ACKNOWLEDGE`, `Session.CLIENT_ACKNOWLEDGE`, `Session.SESSION_TRANSACTED`