Package org.apache.cayenne.event
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 Summary
Modifier and TypeMethodDescriptionvoid
addListener
(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject) Register anEventListener
for events sent by any sender.void
addListener
(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) Register anEventListener
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
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 Details
-
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 anEventListener
for events sent by any sender.- Throws:
RuntimeException
- ifmethodName
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 anEventListener
for events sent by a specific sender.- Parameters:
listener
- the object to be notified about eventsmethodName
- the name of the listener method to be invokedeventParameterClass
- the class of the single event argument passed tomethodName
subject
- the event subject that the listener is interested insender
- the object whose events the listener is interested in;null
means 'any sender'.- Throws:
RuntimeException
- ifmethodName
is not found
-
addNonBlockingListener
void addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) -
removeListener
Unregister the specified listener from all event subjects handled by this manager instance.- Parameters:
listener
- the object to be unregistered- Returns:
true
iflistener
could be removed for any existing subjects, else returnsfalse
.
-
removeAllListeners
Removes all listeners for a given subject. -
removeListener
Unregister the specified listener for the events about the given subject.- Parameters:
listener
- the object to be unregisteredsubject
- the subject from which the listener is to be unregistered- Returns:
true
iflistener
could be removed for the given subject, else returnsfalse
.
-
removeListener
Unregister the specified listener for the events about the given subject and the given sender.- Parameters:
listener
- the object to be unregisteredsubject
- the subject from which the listener is to be unregisteredsender
- the object whose events the listener was interested in;null
means 'any sender'.- Returns:
true
iflistener
could be removed for the given subject, else returnsfalse
.
-
postEvent
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 observerssubject
- the subject about which observers will be notified- Throws:
IllegalArgumentException
- if event or subject are null
-
postNonBlockingEvent
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 observerssubject
- the subject about which observers will be notified- Throws:
IllegalArgumentException
- if event or subject are null- Since:
- 1.1
-