# Class RelationNotification

java.lang.Object
java.util.EventObject
javax.management.Notification
javax.management.relation.RelationNotification

All Implemented Interfaces:
  `Serializable`

public class RelationNotification extends Notification
A notification of a change in the Relation Service. A RelationNotification notification is sent when a relation is created via the Relation Service, or an MBean is added as a relation in the Relation Service, or a role is updated in a relation, or a relation is removed from the Relation Service.

The serialVersionUID of this class is `-6871117877523310399L`.

Since:
  1.5
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `RELATION_BASIC_CREATION`
  Type for the creation of an internal relation.
  `static final String`
  `RELATION_BASIC_REMOVAL`
  Type for the removal from the Relation Service of an internal relation.
  `static final String`
  `RELATION_BASIC_UPDATE`
  Type for an update of an internal relation.
  `static final String`
  `RELATION_MBEAN_CREATION`
  Type for the relation MBean added into the Relation Service.
  `static final String`
  `RELATION_MBEAN_REMOVAL`
  Type for the removal from the Relation Service of a relation MBean.
  `static final String`
  `RELATION_MBEAN_UPDATE`
  Type for the update of a relation MBean.

  ### Fields declared in class Notification

  `source`
  Modifier and Type
  Field
  Description
  `protected Object`
  `source`
  This field hides the `EventObject.source` field in the parent class to make it non-transient and therefore part of the serialized form.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RelationNotification(String notifType, Object sourceObj, long sequence, long timeStamp, String message, String id, String typeName, ObjectName objectName, String name, List<ObjectName> newValue, List<ObjectName> oldValue)`
  Creates a notification for a role update in a relation.
  `RelationNotification(String notifType, Object sourceObj, long sequence, long timeStamp, String message, String id, String typeName, ObjectName objectName, List<ObjectName> unregMBeanList)`
  Creates a notification for either a relation creation (RelationSupport object created internally in the Relation Service, or an MBean added as a relation) or for a relation removal from the Relation Service.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<ObjectName>`
  `getMBeansToUnregister()`
  Returns the list of ObjectNames of MBeans expected to be unregistered due to a relation removal (only for relation removal).
  `List<ObjectName>`
  `getNewRoleValue()`
  Returns new value of updated role (only for role update).
  `ObjectName`
  `getObjectName()`
  Returns the ObjectName of the created/removed/updated relation.
  `List<ObjectName>`
  `getOldRoleValue()`
  Returns old value of updated role (only for role update).
  `String`
  `getRelationId()`
  Returns the relation identifier of created/removed/updated relation.
  `String`
  `getRelationTypeName()`
  Returns the relation type name of created/removed/updated relation.
  `String`
  `getRoleName()`
  Returns name of updated role of updated relation (only for role update).

  ### Methods declared in class Notification

  `getMessage, getSequenceNumber, getTimeStamp, getType, getUserData, setSequenceNumber, setSource, setTimeStamp, setUserData, toString`
  Modifier and Type
  Method
  Description
  `String`
  `getMessage()`
  Get the notification message.
  `long`
  `getSequenceNumber()`
  Get the notification sequence number.
  `long`
  `getTimeStamp()`
  Get the notification timestamp.
  `String`
  `getType()`
  Get the notification type.
  `Object`
  `getUserData()`
  Get the user data.
  `void`
  `setSequenceNumber(long sequenceNumber)`
  Set the notification sequence number.
  `void`
  `setSource(Object source)`
  Sets the source.
  `void`
  `setTimeStamp(long timeStamp)`
  Set the notification timestamp.
  `void`
  `setUserData(Object userData)`
  Set the user data.
  `String`
  `toString()`
  Returns a String representation of this notification.

  ### Methods declared in class EventObject

  `getSource`
  Modifier and Type
  Method
  Description
  `Object`
  `getSource()`
  The object on which the Event initially occurred.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `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`.
  `int`
  `hashCode()`
  Returns a hash code value for 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.

- ## Field Details

  - ### RELATION_BASIC_CREATION

    public static final String RELATION_BASIC_CREATION
    Type for the creation of an internal relation.
    See Also:
      - Constant Field Values

  - ### RELATION_MBEAN_CREATION

    public static final String RELATION_MBEAN_CREATION
    Type for the relation MBean added into the Relation Service.
    See Also:
      - Constant Field Values

  - ### RELATION_BASIC_UPDATE

    public static final String RELATION_BASIC_UPDATE
    Type for an update of an internal relation.
    See Also:
      - Constant Field Values

  - ### RELATION_MBEAN_UPDATE

    public static final String RELATION_MBEAN_UPDATE
    Type for the update of a relation MBean.
    See Also:
      - Constant Field Values

  - ### RELATION_BASIC_REMOVAL

    public static final String RELATION_BASIC_REMOVAL
    Type for the removal from the Relation Service of an internal relation.
    See Also:
      - Constant Field Values

  - ### RELATION_MBEAN_REMOVAL

    public static final String RELATION_MBEAN_REMOVAL
    Type for the removal from the Relation Service of a relation MBean.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### RelationNotification

    public RelationNotification(String notifType, Object sourceObj, long sequence, long timeStamp, String message, String id, String typeName, ObjectName objectName, List<ObjectName> unregMBeanList) throws IllegalArgumentException
    Creates a notification for either a relation creation (RelationSupport object created internally in the Relation Service, or an MBean added as a relation) or for a relation removal from the Relation Service.
    Parameters:
      `notifType` - type of the notification; either:

      - RELATION_BASIC_CREATION

      - RELATION_MBEAN_CREATION

      - RELATION_BASIC_REMOVAL

      - RELATION_MBEAN_REMOVAL

      `sourceObj` - source object, sending the notification. This is either an ObjectName or a RelationService object. In the latter case it must be the MBean emitting the notification; the MBean Server will rewrite the source to be the ObjectName under which that MBean is registered.
      `sequence` - sequence number to identify the notification
      `timeStamp` - time stamp
      `message` - human-readable message describing the notification
      `id` - relation id identifying the relation in the Relation Service
      `typeName` - name of the relation type
      `objectName` - ObjectName of the relation object if it is an MBean (null for relations internally handled by the Relation Service)
      `unregMBeanList` - list of ObjectNames of referenced MBeans expected to be unregistered due to relation removal (only for removal, due to CIM qualifiers, can be null)
    Throws:
      `IllegalArgumentException` - if:

      - no value for the notification type

      - the notification type is not RELATION_BASIC_CREATION, RELATION_MBEAN_CREATION, RELATION_BASIC_REMOVAL or RELATION_MBEAN_REMOVAL

      - no source object

      - the source object is not a Relation Service

      - no relation id

      - no relation type name

  - ### RelationNotification

    public RelationNotification(String notifType, Object sourceObj, long sequence, long timeStamp, String message, String id, String typeName, ObjectName objectName, String name, List<ObjectName> newValue, List<ObjectName> oldValue) throws IllegalArgumentException
    Creates a notification for a role update in a relation.
    Parameters:
      `notifType` - type of the notification; either:

      - RELATION_BASIC_UPDATE

      - RELATION_MBEAN_UPDATE

      `sourceObj` - source object, sending the notification. This is either an ObjectName or a RelationService object. In the latter case it must be the MBean emitting the notification; the MBean Server will rewrite the source to be the ObjectName under which that MBean is registered.
      `sequence` - sequence number to identify the notification
      `timeStamp` - time stamp
      `message` - human-readable message describing the notification
      `id` - relation id identifying the relation in the Relation Service
      `typeName` - name of the relation type
      `objectName` - ObjectName of the relation object if it is an MBean (null for relations internally handled by the Relation Service)
      `name` - name of the updated role
      `newValue` - new role value (List of ObjectName objects)
      `oldValue` - old role value (List of ObjectName objects)
    Throws:
      `IllegalArgumentException` - if null parameter

- ## Method Details

  - ### getRelationId

    public String getRelationId()
    Returns the relation identifier of created/removed/updated relation.
    Returns:
      the relation id.

  - ### getRelationTypeName

    public String getRelationTypeName()
    Returns the relation type name of created/removed/updated relation.
    Returns:
      the relation type name.

  - ### getObjectName

    public ObjectName getObjectName()
    Returns the ObjectName of the created/removed/updated relation.
    Returns:
      the ObjectName if the relation is an MBean, otherwise null.

  - ### getMBeansToUnregister

    public List<ObjectName> getMBeansToUnregister()
    Returns the list of ObjectNames of MBeans expected to be unregistered due to a relation removal (only for relation removal).
    Returns:
      a `List` of `ObjectName`.

  - ### getRoleName

    public String getRoleName()
    Returns name of updated role of updated relation (only for role update).
    Returns:
      the name of the updated role.

  - ### getOldRoleValue

    public List<ObjectName> getOldRoleValue()
    Returns old value of updated role (only for role update).
    Returns:
      the old value of the updated role.

  - ### getNewRoleValue

    public List<ObjectName> getNewRoleValue()
    Returns new value of updated role (only for role update).
    Returns:
      the new value of the updated role.