# Class OpenMBeanInfoSupport

java.lang.Object
javax.management.MBeanInfo
javax.management.openmbean.OpenMBeanInfoSupport

All Implemented Interfaces:
  `Serializable, Cloneable, DescriptorRead, OpenMBeanInfo`

public class OpenMBeanInfoSupport extends MBeanInfo implements OpenMBeanInfo
The `OpenMBeanInfoSupport` class describes the management information of an open MBean: it is a subclass of `MBeanInfo`, and it implements the `OpenMBeanInfo` interface. Note that an open MBean is recognized as such if its `getMBeanInfo()` method returns an instance of a class which implements the OpenMBeanInfo interface, typically `OpenMBeanInfoSupport`.

Since:
  1.5
See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `OpenMBeanInfoSupport(String className, String description, OpenMBeanAttributeInfo[] openAttributes, OpenMBeanConstructorInfo[] openConstructors, OpenMBeanOperationInfo[] openOperations, MBeanNotificationInfo[] notifications)`
  Constructs an `OpenMBeanInfoSupport` instance, which describes a class of open MBeans with the specified `className`, `description`, `openAttributes`, `openConstructors` , `openOperations` and `notifications`.
  `OpenMBeanInfoSupport(String className, String description, OpenMBeanAttributeInfo[] openAttributes, OpenMBeanConstructorInfo[] openConstructors, OpenMBeanOperationInfo[] openOperations, MBeanNotificationInfo[] notifications, Descriptor descriptor)`
  Constructs an `OpenMBeanInfoSupport` instance, which describes a class of open MBeans with the specified `className`, `description`, `openAttributes`, `openConstructors` , `openOperations`, `notifications`, and `descriptor`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  Compares the specified `obj` parameter with this `OpenMBeanInfoSupport` instance for equality.
  `int`
  `hashCode()`
  Returns the hash code value for this `OpenMBeanInfoSupport` instance.
  `String`
  `toString()`
  Returns a string representation of this `OpenMBeanInfoSupport` instance.

  ### Methods declared in class MBeanInfo

  `clone, getAttributes, getClassName, getConstructors, getDescription, getDescriptor, getNotifications, getOperations`
  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Returns a shallow clone of this instance.
  `MBeanAttributeInfo[]`
  `getAttributes()`
  Returns the list of attributes exposed for management.
  `String`
  `getClassName()`
  Returns the name of the Java class of the MBean described by this `MBeanInfo`.
  `MBeanConstructorInfo[]`
  `getConstructors()`
  Returns the list of the public constructors of the MBean.
  `String`
  `getDescription()`
  Returns a human readable description of the MBean.
  `Descriptor`
  `getDescriptor()`
  Get the descriptor of this MBeanInfo.
  `MBeanNotificationInfo[]`
  `getNotifications()`
  Returns the list of the notifications emitted by the MBean.
  `MBeanOperationInfo[]`
  `getOperations()`
  Returns the list of operations of the MBean.

  ### Methods declared in class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

  ### Methods declared in interface OpenMBeanInfo

  `getAttributes, getClassName, getConstructors, getDescription, getNotifications, getOperations`
  Modifier and Type
  Method
  Description
  `MBeanAttributeInfo[]`
  `getAttributes()`
  Returns an array of `OpenMBeanAttributeInfo` instances describing each attribute in the open MBean described by this `OpenMBeanInfo` instance.
  `String`
  `getClassName()`
  Returns the fully qualified Java class name of the open MBean instances this `OpenMBeanInfo` describes.
  `MBeanConstructorInfo[]`
  `getConstructors()`
  Returns an array of `OpenMBeanConstructorInfo` instances describing each constructor in the open MBean described by this `OpenMBeanInfo` instance.
  `String`
  `getDescription()`
  Returns a human readable description of the type of open MBean instances this `OpenMBeanInfo` describes.
  `MBeanNotificationInfo[]`
  `getNotifications()`
  Returns an array of `MBeanNotificationInfo` instances describing each notification emitted by the open MBean described by this `OpenMBeanInfo` instance.
  `MBeanOperationInfo[]`
  `getOperations()`
  Returns an array of `OpenMBeanOperationInfo` instances describing each operation in the open MBean described by this `OpenMBeanInfo` instance.

- ## Constructor Details

  - ### OpenMBeanInfoSupport

    public OpenMBeanInfoSupport(String className, String description, OpenMBeanAttributeInfo[] openAttributes, OpenMBeanConstructorInfo[] openConstructors, OpenMBeanOperationInfo[] openOperations, MBeanNotificationInfo[] notifications)

    Constructs an `OpenMBeanInfoSupport` instance, which describes a class of open MBeans with the specified `className`, `description`, `openAttributes`, `openConstructors` , `openOperations` and `notifications`.

    The `openAttributes`, `openConstructors`, `openOperations` and `notifications` array parameters are internally copied, so that subsequent changes to the arrays referenced by these parameters have no effect on this instance.

    Parameters:
      `className` - The fully qualified Java class name of the open MBean described by this `OpenMBeanInfoSupport` instance.
      `description` - A human readable description of the open MBean described by this `OpenMBeanInfoSupport` instance.
      `openAttributes` - The list of exposed attributes of the described open MBean; Must be an array of instances of a subclass of `MBeanAttributeInfo`, typically `OpenMBeanAttributeInfoSupport`.
      `openConstructors` - The list of exposed public constructors of the described open MBean; Must be an array of instances of a subclass of `MBeanConstructorInfo`, typically `OpenMBeanConstructorInfoSupport`.
      `openOperations` - The list of exposed operations of the described open MBean. Must be an array of instances of a subclass of `MBeanOperationInfo`, typically `OpenMBeanOperationInfoSupport`.
      `notifications` - The list of notifications emitted by the described open MBean.
    Throws:
      `ArrayStoreException` - If `openAttributes`, `openConstructors` or `openOperations` is not an array of instances of a subclass of `MBeanAttributeInfo`, `MBeanConstructorInfo` or `MBeanOperationInfo` respectively.

  - ### OpenMBeanInfoSupport

    public OpenMBeanInfoSupport(String className, String description, OpenMBeanAttributeInfo[] openAttributes, OpenMBeanConstructorInfo[] openConstructors, OpenMBeanOperationInfo[] openOperations, MBeanNotificationInfo[] notifications, Descriptor descriptor)

    Constructs an `OpenMBeanInfoSupport` instance, which describes a class of open MBeans with the specified `className`, `description`, `openAttributes`, `openConstructors` , `openOperations`, `notifications`, and `descriptor`.

    The `openAttributes`, `openConstructors`, `openOperations` and `notifications` array parameters are internally copied, so that subsequent changes to the arrays referenced by these parameters have no effect on this instance.

    Parameters:
      `className` - The fully qualified Java class name of the open MBean described by this `OpenMBeanInfoSupport` instance.
      `description` - A human readable description of the open MBean described by this `OpenMBeanInfoSupport` instance.
      `openAttributes` - The list of exposed attributes of the described open MBean; Must be an array of instances of a subclass of `MBeanAttributeInfo`, typically `OpenMBeanAttributeInfoSupport`.
      `openConstructors` - The list of exposed public constructors of the described open MBean; Must be an array of instances of a subclass of `MBeanConstructorInfo`, typically `OpenMBeanConstructorInfoSupport`.
      `openOperations` - The list of exposed operations of the described open MBean. Must be an array of instances of a subclass of `MBeanOperationInfo`, typically `OpenMBeanOperationInfoSupport`.
      `notifications` - The list of notifications emitted by the described open MBean.
      `descriptor` - The descriptor for the MBean. This may be null which is equivalent to an empty descriptor.
    Throws:
      `ArrayStoreException` - If `openAttributes`, `openConstructors` or `openOperations` is not an array of instances of a subclass of `MBeanAttributeInfo`, `MBeanConstructorInfo` or `MBeanOperationInfo` respectively.
    Since:
      1.6

- ## Method Details

  - ### equals

    public boolean equals(Object obj)

    Compares the specified `obj` parameter with this `OpenMBeanInfoSupport` instance for equality.

    Returns `true` if and only if all of the following statements are true:

    - `obj` is non null,
    - `obj` also implements the `OpenMBeanInfo` interface,
    - their class names are equal
    - their infos on attributes, constructors, operations and notifications are equal
    This ensures that this `equals` method works properly for `obj` parameters which are different implementations of the `OpenMBeanInfo` interface.
    Specified by:
      `equals` in interface `OpenMBeanInfo`
    Overrides:
      `equals` in class `MBeanInfo`
    Parameters:
      `obj` - the object to be compared for equality with this `OpenMBeanInfoSupport` instance;
    Returns:
      `true` if the specified object is equal to this `OpenMBeanInfoSupport` instance.
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    public int hashCode()

    Returns the hash code value for this `OpenMBeanInfoSupport` instance.

    The hash code of an `OpenMBeanInfoSupport` instance is the sum of the hash codes of all elements of information used in `equals` comparisons (ie: its class name, and its infos on attributes, constructors, operations and notifications, where the hashCode of each of these arrays is calculated by a call to `new java.util.HashSet(java.util.Arrays.asList(this.getSignature)).hashCode()`).

    This ensures that `t1.equals(t2)` implies that `t1.hashCode()==t2.hashCode()` for any two `OpenMBeanInfoSupport` instances `t1` and `t2`, as required by the general contract of the method `Object.hashCode()`.

    However, note that another instance of a class implementing the `OpenMBeanInfo` interface may be equal to this `OpenMBeanInfoSupport` instance as defined by `equals(java.lang.Object)`, but may have a different hash code if it is calculated differently.

    As `OpenMBeanInfoSupport` instances are immutable, the hash code for this instance is calculated once, on the first call to `hashCode`, and then the same value is returned for subsequent calls.

    Specified by:
      `hashCode` in interface `OpenMBeanInfo`
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hash code value for this `OpenMBeanInfoSupport` instance
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### toString

    public String toString()

    Returns a string representation of this `OpenMBeanInfoSupport` instance.

    The string representation consists of the name of this class (ie `javax.management.openmbean.OpenMBeanInfoSupport`), the MBean class name, the string representation of infos on attributes, constructors, operations and notifications of the described MBean and the string representation of the descriptor.

    As `OpenMBeanInfoSupport` instances are immutable, the string representation for this instance is calculated once, on the first call to `toString`, and then the same value is returned for subsequent calls.

    Specified by:
      `toString` in interface `OpenMBeanInfo`
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this `OpenMBeanInfoSupport` instance