# Class OpenMBeanAttributeInfoSupport

java.lang.Object
javax.management.MBeanFeatureInfo
javax.management.MBeanAttributeInfo
javax.management.openmbean.OpenMBeanAttributeInfoSupport

All Implemented Interfaces:
  `Serializable, Cloneable, DescriptorRead, OpenMBeanAttributeInfo, OpenMBeanParameterInfo`

public class OpenMBeanAttributeInfoSupport extends MBeanAttributeInfo implements OpenMBeanAttributeInfo
Describes an attribute of an open MBean.

Since:
  1.5
See Also:
  - Serialized Form

- ## Field Summary

  ### Fields declared in class MBeanFeatureInfo

  `description, name`
  Modifier and Type
  Field
  Description
  `protected String`
  `description`
  The human-readable description of the feature.
  `protected String`
  `name`
  The name of the feature.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `OpenMBeanAttributeInfoSupport(String name, String description, OpenType<?> openType, boolean isReadable, boolean isWritable, boolean isIs)`
  Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType` and `description`, and the specified read/write access properties.
  ``
  `OpenMBeanAttributeInfoSupport(String name, String description, OpenType<?> openType, boolean isReadable, boolean isWritable, boolean isIs, Descriptor descriptor)`
  Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description`, read/write access properties, and `Descriptor`.
  `<T>`
  `OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue)`
  Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description` and `defaultValue`, and the specified read/write access properties.
  `<T>`
  `OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue, Comparable<T> minValue, Comparable<T> maxValue)`
  Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean, with the specified `name`, `openType`, `description`, `defaultValue`, `minValue` and `maxValue`.
  `<T>`
  `OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue, T[] legalValues)`
  Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description`, `defaultValue` and `legalValues`, and the specified read/write access properties.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  Compares the specified `obj` parameter with this `OpenMBeanAttributeInfoSupport` instance for equality.
  `Object`
  `getDefaultValue()`
  Returns the default value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
  `Set<?>`
  `getLegalValues()`
  Returns an unmodifiable Set of legal values for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
  `Comparable<?>`
  `getMaxValue()`
  Returns the maximal value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
  `Comparable<?>`
  `getMinValue()`
  Returns the minimal value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
  `OpenType<?>`
  `getOpenType()`
  Returns the open type for the values of the attribute described by this `OpenMBeanAttributeInfoSupport` instance.
  `boolean`
  `hasDefaultValue()`
  Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null default value for the described attribute, `false` otherwise.
  `int`
  `hashCode()`
  Returns the hash code value for this `OpenMBeanAttributeInfoSupport` instance.
  `boolean`
  `hasLegalValues()`
  Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null set of legal values for the described attribute, `false` otherwise.
  `boolean`
  `hasMaxValue()`
  Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null maximal value for the described attribute, `false` otherwise.
  `boolean`
  `hasMinValue()`
  Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null minimal value for the described attribute, `false` otherwise.
  `boolean`
  `isValue(Object obj)`
  Tests whether `obj` is a valid value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance.
  `String`
  `toString()`
  Returns a string representation of this `OpenMBeanAttributeInfoSupport` instance.

  ### Methods declared in class MBeanAttributeInfo

  `clone, getType, isIs, isReadable, isWritable`
  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Returns a shallow clone of this instance.
  `String`
  `getType()`
  Returns the class name of the attribute.
  `boolean`
  `isIs()`
  Indicates if this attribute has an "is" getter.
  `boolean`
  `isReadable()`
  Whether the value of the attribute can be read.
  `boolean`
  `isWritable()`
  Whether new values can be written to the attribute.

  ### Methods declared in class MBeanFeatureInfo

  `getDescription, getDescriptor, getName`
  Modifier and Type
  Method
  Description
  `String`
  `getDescription()`
  Returns the human-readable description of the feature.
  `Descriptor`
  `getDescriptor()`
  Returns the descriptor for the feature.
  `String`
  `getName()`
  Returns the name of the feature.

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

  `isIs, isReadable, isWritable`
  Modifier and Type
  Method
  Description
  `boolean`
  `isIs()`
  Returns `true` if the attribute described by this `OpenMBeanAttributeInfo` instance is accessed through a `isXXX` getter (applies only to `boolean` and `Boolean` values), `false` otherwise.
  `boolean`
  `isReadable()`
  Returns `true` if the attribute described by this `OpenMBeanAttributeInfo` instance is readable, `false` otherwise.
  `boolean`
  `isWritable()`
  Returns `true` if the attribute described by this `OpenMBeanAttributeInfo` instance is writable, `false` otherwise.

  ### Methods declared in interface OpenMBeanParameterInfo

  `getDescription, getName`
  Modifier and Type
  Method
  Description
  `String`
  `getDescription()`
  Returns a human readable description of the parameter described by this `OpenMBeanParameterInfo` instance.
  `String`
  `getName()`
  Returns the name of the parameter described by this `OpenMBeanParameterInfo` instance.

- ## Constructor Details

  - ### OpenMBeanAttributeInfoSupport

    public OpenMBeanAttributeInfoSupport(String name, String description, OpenType<?> openType, boolean isReadable, boolean isWritable, boolean isIs)
    Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType` and `description`, and the specified read/write access properties.
    Parameters:
      `name` - cannot be a null or empty string.
      `description` - cannot be a null or empty string.
      `openType` - cannot be null.
      `isReadable` - `true` if the attribute has a getter exposed for management.
      `isWritable` - `true` if the attribute has a setter exposed for management.
      `isIs` - `true` if the attribute's getter is of the form `isXXX`.
    Throws:
      `IllegalArgumentException` - if `name` or `description` are null or empty string, or `openType` is null.

  - ### OpenMBeanAttributeInfoSupport

    public OpenMBeanAttributeInfoSupport(String name, String description, OpenType<?> openType, boolean isReadable, boolean isWritable, boolean isIs, Descriptor descriptor)

    Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description`, read/write access properties, and `Descriptor`.

    The `descriptor` can contain entries that will define the values returned by certain methods of this class, as explained in the package description.

    Parameters:
      `name` - cannot be a null or empty string.
      `description` - cannot be a null or empty string.
      `openType` - cannot be null.
      `isReadable` - `true` if the attribute has a getter exposed for management.
      `isWritable` - `true` if the attribute has a setter exposed for management.
      `isIs` - `true` if the attribute's getter is of the form `isXXX`.
      `descriptor` - The descriptor for the attribute. This may be null which is equivalent to an empty descriptor.
    Throws:
      `IllegalArgumentException` - if `name` or `description` are null or empty string, or `openType` is null, or the descriptor entries are invalid as described in the package description.
    Since:
      1.6

  - ### OpenMBeanAttributeInfoSupport

    public <T> OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue) throws OpenDataException
    Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description` and `defaultValue`, and the specified read/write access properties.
    Type Parameters:
      `T` - allows the compiler to check that the `defaultValue`, if non-null, has the correct Java type for the given `openType`.
    Parameters:
      `name` - cannot be a null or empty string.
      `description` - cannot be a null or empty string.
      `openType` - cannot be null.
      `isReadable` - `true` if the attribute has a getter exposed for management.
      `isWritable` - `true` if the attribute has a setter exposed for management.
      `isIs` - `true` if the attribute's getter is of the form `isXXX`.
      `defaultValue` - must be a valid value for the `openType` specified for this attribute; default value not supported for `ArrayType` and `TabularType`; can be null, in which case it means that no default value is set.
    Throws:
      `IllegalArgumentException` - if `name` or `description` are null or empty string, or `openType` is null.
      `OpenDataException` - if `defaultValue` is not a valid value for the specified `openType`, or `defaultValue` is non null and `openType` is an `ArrayType` or a `TabularType`.

  - ### OpenMBeanAttributeInfoSupport

    public <T> OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue, T[] legalValues) throws OpenDataException

    Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean with the specified `name`, `openType`, `description`, `defaultValue` and `legalValues`, and the specified read/write access properties.

    The contents of `legalValues` are copied, so subsequent modifications of the array referenced by `legalValues` have no impact on this `OpenMBeanAttributeInfoSupport` instance.

    Type Parameters:
      `T` - allows the compiler to check that the `defaultValue` and `legalValues`, if non-null, have the correct Java type for the given `openType`.
    Parameters:
      `name` - cannot be a null or empty string.
      `description` - cannot be a null or empty string.
      `openType` - cannot be null.
      `isReadable` - `true` if the attribute has a getter exposed for management.
      `isWritable` - `true` if the attribute has a setter exposed for management.
      `isIs` - `true` if the attribute's getter is of the form `isXXX`.
      `defaultValue` - must be a valid value for the `openType` specified for this attribute; default value not supported for `ArrayType` and `TabularType`; can be null, in which case it means that no default value is set.
      `legalValues` - each contained value must be valid for the `openType` specified for this attribute; legal values not supported for `ArrayType` and `TabularType`; can be null or empty.
    Throws:
      `IllegalArgumentException` - if `name` or `description` are null or empty string, or `openType` is null.
      `OpenDataException` - if `defaultValue` is not a valid value for the specified `openType`, or one value in `legalValues` is not valid for the specified `openType`, or `defaultValue` is non null and `openType` is an `ArrayType` or a `TabularType`, or `legalValues` is non null and non empty and `openType` is an `ArrayType` or a `TabularType`, or `legalValues` is non null and non empty and `defaultValue` is not contained in `legalValues`.

  - ### OpenMBeanAttributeInfoSupport

    public <T> OpenMBeanAttributeInfoSupport(String name, String description, OpenType<T> openType, boolean isReadable, boolean isWritable, boolean isIs, T defaultValue, Comparable<T> minValue, Comparable<T> maxValue) throws OpenDataException
    Constructs an `OpenMBeanAttributeInfoSupport` instance, which describes the attribute of an open MBean, with the specified `name`, `openType`, `description`, `defaultValue`, `minValue` and `maxValue`. It is possible to specify minimal and maximal values only for an open type whose values are `Comparable`.
    Type Parameters:
      `T` - allows the compiler to check that the `defaultValue`, `minValue`, and `maxValue`, if non-null, have the correct Java type for the given `openType`.
    Parameters:
      `name` - cannot be a null or empty string.
      `description` - cannot be a null or empty string.
      `openType` - cannot be null.
      `isReadable` - `true` if the attribute has a getter exposed for management.
      `isWritable` - `true` if the attribute has a setter exposed for management.
      `isIs` - `true` if the attribute's getter is of the form `isXXX`.
      `defaultValue` - must be a valid value for the `openType` specified for this attribute; default value not supported for `ArrayType` and `TabularType`; can be null, in which case it means that no default value is set.
      `minValue` - must be valid for the `openType` specified for this attribute; can be null, in which case it means that no minimal value is set.
      `maxValue` - must be valid for the `openType` specified for this attribute; can be null, in which case it means that no maximal value is set.
    Throws:
      `IllegalArgumentException` - if `name` or `description` are null or empty string, or `openType` is null.
      `OpenDataException` - if `defaultValue`, `minValue` or `maxValue` is not a valid value for the specified `openType`, or `defaultValue` is non null and `openType` is an `ArrayType` or a `TabularType`, or both `minValue` and `maxValue` are non-null and `minValue.compareTo(maxValue) > 0` is `true`, or both `defaultValue` and `minValue` are non-null and `minValue.compareTo(defaultValue) > 0` is `true`, or both `defaultValue` and `maxValue` are non-null and `defaultValue.compareTo(maxValue) > 0` is `true`.

- ## Method Details

  - ### getOpenType

    public OpenType<?> getOpenType()
    Returns the open type for the values of the attribute described by this `OpenMBeanAttributeInfoSupport` instance.
    Specified by:
      `getOpenType` in interface `OpenMBeanParameterInfo`
    Returns:
      the open type.

  - ### getDefaultValue

    public Object getDefaultValue()
    Returns the default value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
    Specified by:
      `getDefaultValue` in interface `OpenMBeanParameterInfo`
    Returns:
      the default value.

  - ### getLegalValues

    public Set<?> getLegalValues()
    Returns an unmodifiable Set of legal values for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
    Specified by:
      `getLegalValues` in interface `OpenMBeanParameterInfo`
    Returns:
      the set of legal values.

  - ### getMinValue

    public Comparable<?> getMinValue()
    Returns the minimal value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
    Specified by:
      `getMinValue` in interface `OpenMBeanParameterInfo`
    Returns:
      the minimum value.

  - ### getMaxValue

    public Comparable<?> getMaxValue()
    Returns the maximal value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance, if specified, or `null` otherwise.
    Specified by:
      `getMaxValue` in interface `OpenMBeanParameterInfo`
    Returns:
      the maximum value.

  - ### hasDefaultValue

    public boolean hasDefaultValue()
    Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null default value for the described attribute, `false` otherwise.
    Specified by:
      `hasDefaultValue` in interface `OpenMBeanParameterInfo`
    Returns:
      true if there is a default value.

  - ### hasLegalValues

    public boolean hasLegalValues()
    Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null set of legal values for the described attribute, `false` otherwise.
    Specified by:
      `hasLegalValues` in interface `OpenMBeanParameterInfo`
    Returns:
      true if there is a set of legal values.

  - ### hasMinValue

    public boolean hasMinValue()
    Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null minimal value for the described attribute, `false` otherwise.
    Specified by:
      `hasMinValue` in interface `OpenMBeanParameterInfo`
    Returns:
      true if there is a minimum value.

  - ### hasMaxValue

    public boolean hasMaxValue()
    Returns `true` if this `OpenMBeanAttributeInfoSupport` instance specifies a non-null maximal value for the described attribute, `false` otherwise.
    Specified by:
      `hasMaxValue` in interface `OpenMBeanParameterInfo`
    Returns:
      true if there is a maximum value.

  - ### isValue

    public boolean isValue(Object obj)
    Tests whether `obj` is a valid value for the attribute described by this `OpenMBeanAttributeInfoSupport` instance.
    Specified by:
      `isValue` in interface `OpenMBeanParameterInfo`
    Parameters:
      `obj` - the object to be tested.
    Returns:
      `true` if `obj` is a valid value for the parameter described by this `OpenMBeanAttributeInfoSupport` instance, `false` otherwise.

  - ### equals

    public boolean equals(Object obj)
    Compares the specified `obj` parameter with this `OpenMBeanAttributeInfoSupport` instance for equality.

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

    - `obj` is non null,
    - `obj` also implements the `OpenMBeanAttributeInfo` interface,
    - their names are equal
    - their open types are equal
    - their access properties (isReadable, isWritable and isIs) are equal
    - their default, min, max and legal values are equal.
    This ensures that this `equals` method works properly for `obj` parameters which are different implementations of the `OpenMBeanAttributeInfo` interface.

    If `obj` also implements `DescriptorRead`, then its `getDescriptor()` method must also return the same value as for this object.

    Specified by:
      `equals` in interface `OpenMBeanAttributeInfo`
    Specified by:
      `equals` in interface `OpenMBeanParameterInfo`
    Overrides:
      `equals` in class `MBeanAttributeInfo`
    Parameters:
      `obj` - the object to be compared for equality with this `OpenMBeanAttributeInfoSupport` instance.
    Returns:
      `true` if the specified object is equal to this `OpenMBeanAttributeInfoSupport` instance.
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    public int hashCode()

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

    The hash code of an `OpenMBeanAttributeInfoSupport` instance is the sum of the hash codes of all elements of information used in `equals` comparisons (ie: its name, its open type, its default, min, max and legal values, and its Descriptor).

    This ensures that `t1.equals(t2)` implies that `t1.hashCode()==t2.hashCode()` for any two `OpenMBeanAttributeInfoSupport` 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 `OpenMBeanAttributeInfo` interface may be equal to this `OpenMBeanAttributeInfoSupport` instance as defined by `equals(java.lang.Object)`, but may have a different hash code if it is calculated differently.

    As `OpenMBeanAttributeInfoSupport` 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 `OpenMBeanAttributeInfo`
    Specified by:
      `hashCode` in interface `OpenMBeanParameterInfo`
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hash code value for this `OpenMBeanAttributeInfoSupport` instance
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### toString

    public String toString()
    Returns a string representation of this `OpenMBeanAttributeInfoSupport` instance.

    The string representation consists of the name of this class (i.e. `javax.management.openmbean.OpenMBeanAttributeInfoSupport`), the string representation of the name and open type of the described parameter, the string representation of its default, min, max and legal values and the string representation of its descriptor.

    As `OpenMBeanAttributeInfoSupport` 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 `OpenMBeanAttributeInfo`
    Specified by:
      `toString` in interface `OpenMBeanParameterInfo`
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this `OpenMBeanAttributeInfoSupport` instance.