Interface EventManager

  • All Known Implementing Classes:
    DefaultEventManager, NoopEventManager

    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 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
      • 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