org.eclipse.viatra.transformation.evm.notification

## Class AttributeMonitor<Atom>

- java.lang.Object
- - org.eclipse.viatra.transformation.evm.notification.AttributeMonitor<Atom>

- Direct Known Subclasses:
    DefaultAttributeMonitor, LightweightAttributeMonitor

      public abstract class AttributeMonitor<Atom>
      extends java.lang.Object

  The class defines the operations that are required to observe the EMF attribute changes on atom objects.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AttributeMonitor()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAttributeMonitorListener(IAttributeMonitorListener<Atom> listener)` Registers a listener for notifications when a feature value of an object in a atom changes.
    `void` | `dispose()` Disposes of the attribute monitor by unregistering from each atom.
    `protected void` | `notifyListeners(Atom atom)` Sends notification to listeners when the given atom is updated.
    `abstract void` | `registerFor(Atom atom)` Register the attribute monitor to watch feature values of object defined in the given atom.
    `void` | `removeAttributeMonitorListener(IAttributeMonitorListener<Atom> listener)` Unregisters a listener registered by `addAttributeMonitorListener(IAttributeMonitorListener)`.
    `abstract void` | `unregisterFor(Atom atom)` Remove the attribute monitor from watching the given atom.
    `abstract void` | `unregisterForAll()` Remove the attribute monitor from watching registered atoms.

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

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

- - ### Constructor Detail

    - #### AttributeMonitor

          public AttributeMonitor()

  - ### Method Detail

    - #### addAttributeMonitorListener

          public void addAttributeMonitorListener(IAttributeMonitorListener<Atom> listener)

      Registers a listener for notifications when a feature value of an object in a atom changes.

      The listener can be unregistered via `removeAttributeMonitorListener(IAttributeMonitorListener)`.

      Parameters:
        `listener` -

    - #### removeAttributeMonitorListener

          public void removeAttributeMonitorListener(IAttributeMonitorListener<Atom> listener)

      Unregisters a listener registered by `addAttributeMonitorListener(IAttributeMonitorListener)`.
      Parameters:
        `listener` -

    - #### registerFor

          public abstract void registerFor(Atom atom)

      Register the attribute monitor to watch feature values of object defined in the given atom.
      Parameters:
        `atom` -

    - #### unregisterForAll

          public abstract void unregisterForAll()

      Remove the attribute monitor from watching registered atoms.

    - #### unregisterFor

          public abstract void unregisterFor(Atom atom)

      Remove the attribute monitor from watching the given atom.
      Parameters:
        `atom` -

    - #### notifyListeners

          protected void notifyListeners(Atom atom)

      Sends notification to listeners when the given atom is updated.
      Parameters:
        `match` -

    - #### dispose

          public void dispose()

      Disposes of the attribute monitor by unregistering from each atom. TODO should we clear the listener list?