MetadataNamingStrategy (Spring Framework 3.2.1.RELEASE API)
Date: 2013-01-24

org.springframework.jmx.export.naming

## Class MetadataNamingStrategy

- java.lang.Object
- - org.springframework.jmx.export.naming.MetadataNamingStrategy

- All Implemented Interfaces:
    InitializingBean, ObjectNamingStrategy

      public class MetadataNamingStrategy
      extends Object
      implements ObjectNamingStrategy, InitializingBean

  An implementation of the `ObjectNamingStrategy` interface that reads the `ObjectName` from the source-level metadata. Falls back to the bean key (bean name) if no `ObjectName` can be found in source-level metadata.

  Uses the `JmxAttributeSource` strategy interface, so that metadata can be read using any supported implementation. Out of the box, `AnnotationJmxAttributeSource` introspects a well-defined set of Java 5 annotations that come with Spring.

  Since:
    1.2
  Author:
    Rob Harrop, Juergen Hoeller
  See Also:
    `ObjectNamingStrategy`, `AnnotationJmxAttributeSource`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `MetadataNamingStrategy()` Create a new `MetadataNamingStrategy` which needs to be configured through the `setAttributeSource(org.springframework.jmx.export.metadata.JmxAttributeSource)` method.
    `MetadataNamingStrategy(JmxAttributeSource attributeSource)` Create a new `MetadataNamingStrategy` for the given `JmxAttributeSource`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
    `ObjectName` | `getObjectName(Object managedBean, String beanKey)` Reads the `ObjectName` from the source-level metadata associated with the managed resource's `Class`.
    `void` | `setAttributeSource(JmxAttributeSource attributeSource)` Set the implementation of the `JmxAttributeSource` interface to use when reading the source-level metadata.
    `void` | `setDefaultDomain(String defaultDomain)` Specify the default domain to be used for generating ObjectNames when no source-level metadata has been specified.

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

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

- - ### Constructor Detail

    - #### MetadataNamingStrategy

          public MetadataNamingStrategy()

      Create a new `MetadataNamingStrategy` which needs to be configured through the `setAttributeSource(org.springframework.jmx.export.metadata.JmxAttributeSource)` method.

    - #### MetadataNamingStrategy

          public MetadataNamingStrategy(JmxAttributeSource attributeSource)

      Create a new `MetadataNamingStrategy` for the given `JmxAttributeSource`.
      Parameters:
        `attributeSource` - the JmxAttributeSource to use

  - ### Method Detail

    - #### setAttributeSource

          public void setAttributeSource(JmxAttributeSource attributeSource)

      Set the implementation of the `JmxAttributeSource` interface to use when reading the source-level metadata.

    - #### setDefaultDomain

          public void setDefaultDomain(String defaultDomain)

      Specify the default domain to be used for generating ObjectNames when no source-level metadata has been specified.

      The default is to use the domain specified in the bean name (if the bean name follows the JMX ObjectName syntax); else, the package name of the managed bean class.

    - #### afterPropertiesSet

          public void afterPropertiesSet()

      Description copied from interface: `InitializingBean`
      Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

      This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`

    - #### getObjectName

          public ObjectName getObjectName(Object managedBean,
                                 String beanKey)
                                   throws MalformedObjectNameException

      Reads the `ObjectName` from the source-level metadata associated with the managed resource's `Class`.
      Specified by:
        `getObjectName` in interface `ObjectNamingStrategy`
      Parameters:
        `managedBean` - the bean that will be exposed under the returned `ObjectName`
        `beanKey` - the key associated with this bean in the beans map passed to the `MBeanExporter`
      Returns:
        the `ObjectName` instance
      Throws:
        `MalformedObjectNameException` - if the resulting `ObjectName` is invalid