org.apache.cayenne.event

## Interface EventManager

- All Known Implementing Classes:
    DefaultEventManager

      public interface EventManager

  This class acts as bridge between an Object that wants to inform others about its current state or a change thereof (Publisher) and a list of objects interested in the Subject (Listeners).
  Since:
    3.1 before 3.1 this was a concrete class.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject)` Register an `EventListener` for events sent by any sender.
    `void` | `addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender)` Register an `EventListener` for events sent by a specific sender.
    `void` | `addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject)`
    `void` | `addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender)`
    `boolean` | `isSingleThreaded()` Returns true if this EventManager is single-threaded.
    `void` | `postEvent(EventObject event, EventSubject subject)` Sends an event to all registered objects about a particular subject.
    `void` | `postNonBlockingEvent(EventObject event, EventSubject subject)` Sends an event to all registered objects about a particular subject.
    `boolean` | `removeAllListeners(EventSubject subject)` Removes all listeners for a given subject.
    `boolean` | `removeListener(Object listener)` Unregister the specified listener from all event subjects handled by this manager instance.
    `boolean` | `removeListener(Object listener, EventSubject subject)` Unregister the specified listener for the events about the given subject.
    `boolean` | `removeListener(Object listener, EventSubject subject, Object sender)` Unregister the specified listener for the events about the given subject and the given sender.

- - ### Method Detail

    - #### isSingleThreaded

          boolean isSingleThreaded()

      Returns true if this EventManager is single-threaded. If so it will throw an exception on any attempt to register an unblocking listener or dispatch a non-blocking event.
      Since:
        1.2

    - #### addListener

          void addListener(Object listener,
                           String methodName,
                           Class<?> eventParameterClass,
                           EventSubject subject)

      Register an `EventListener` for events sent by any sender.
      Throws:
        `RuntimeException` - if `methodName` is not found.

    - #### addNonBlockingListener

          void addNonBlockingListener(Object listener,
                                      String methodName,
                                      Class<?> eventParameterClass,
                                      EventSubject subject)

    - #### addListener

          void addListener(Object listener,
                           String methodName,
                           Class<?> eventParameterClass,
                           EventSubject subject,
                           Object sender)

      Register an `EventListener` for events sent by a specific sender.
      Parameters:
        `listener` - the object to be notified about events
        `methodName` - the name of the listener method to be invoked
        `eventParameterClass` - the class of the single event argument passed to `methodName`
        `subject` - the event subject that the listener is interested in
        `sender` - the object whose events the listener is interested in; `null` means 'any sender'.
      Throws:
        `RuntimeException` - if `methodName` is not found

    - #### addNonBlockingListener

          void addNonBlockingListener(Object listener,
                                      String methodName,
                                      Class<?> eventParameterClass,
                                      EventSubject subject,
                                      Object sender)

    - #### removeListener

          boolean removeListener(Object listener)

      Unregister the specified listener from all event subjects handled by this manager instance.
      Parameters:
        `listener` - the object to be unregistered
      Returns:
        `true` if `listener` could be removed for any existing subjects, else returns `false`.

    - #### removeAllListeners

          boolean removeAllListeners(EventSubject subject)

      Removes all listeners for a given subject.

    - #### removeListener

          boolean removeListener(Object listener,
                                 EventSubject subject)

      Unregister the specified listener for the events about the given subject.
      Parameters:
        `listener` - the object to be unregistered
        `subject` - the subject from which the listener is to be unregistered
      Returns:
        `true` if `listener` could be removed for the given subject, else returns `false`.

    - #### removeListener

          boolean removeListener(Object listener,
                                 EventSubject subject,
                                 Object sender)

      Unregister the specified listener for the events about the given subject and the given sender.
      Parameters:
        `listener` - the object to be unregistered
        `subject` - the subject from which the listener is to be unregistered
        `sender` - the object whose events the listener was interested in; `null` means 'any sender'.
      Returns:
        `true` if `listener` could be removed for the given subject, else returns `false`.

    - #### postEvent

          void postEvent(EventObject event,
                         EventSubject subject)

      Sends an event to all registered objects about a particular subject. Event is sent synchronously, so the sender thread is blocked until all the listeners finish processing the event.
      Parameters:
        `event` - the event to be posted to the observers
        `subject` - the subject about which observers will be notified
      Throws:
        `IllegalArgumentException` - if event or subject are null

    - #### postNonBlockingEvent

          void postNonBlockingEvent(EventObject event,
                                    EventSubject subject)

      Sends an event to all registered objects about a particular subject. Event is queued by EventManager, releasing the sender thread, and is later dispatched in a separate thread.
      Parameters:
        `event` - the event to be posted to the observers
        `subject` - the subject about which observers will be notified
      Throws:
        `IllegalArgumentException` - if event or subject are null
      Since:
        1.1

Copyright © 2001–2018 Apache Cayenne. All rights reserved.