Class ListenerEventDispatcher
- java.lang.Object
-
- org.jivesoftware.smackx.workgroup.util.ListenerEventDispatcher
-
- All Implemented Interfaces:
Runnable
public class ListenerEventDispatcher extends Object implements Runnable
This class is a very flexible event dispatcher which implements Runnable so that it can dispatch easily from a newly created thread. The usage of this in code is more or less: create a new instance of this class, use addListenerTriplet to add as many listeners as desired to be messaged, create a new Thread using the instance of this class created as the argument to the constructor, start the new Thread instance.Also, this is intended to be used to message methods that either return void, or have a return which the developer using this class is uninterested in receiving.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
ListenerEventDispatcher.TripletContainer
-
Field Summary
Fields Modifier and Type Field Description protected boolean
hasFinishedDispatching
protected boolean
isRunning
protected ArrayList<ListenerEventDispatcher.TripletContainer>
triplets
-
Constructor Summary
Constructors Constructor Description ListenerEventDispatcher()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListenerTriplet(Object listenerInstance, Method listenerMethod, Object[] methodArguments)
Add a listener triplet - the instance of the listener to be messaged, the Method on which the listener should be messaged, and the Object array of arguments to be supplied to the Method.boolean
hasFinished()
Has finished.void
run()
-
-
-
Field Detail
-
triplets
protected transient ArrayList<ListenerEventDispatcher.TripletContainer> triplets
-
hasFinishedDispatching
protected transient boolean hasFinishedDispatching
-
isRunning
protected transient boolean isRunning
-
-
Constructor Detail
-
ListenerEventDispatcher
public ListenerEventDispatcher()
-
-
Method Detail
-
addListenerTriplet
public void addListenerTriplet(Object listenerInstance, Method listenerMethod, Object[] methodArguments)
Add a listener triplet - the instance of the listener to be messaged, the Method on which the listener should be messaged, and the Object array of arguments to be supplied to the Method. No attempts are made to determine whether this triplet was already added.
Messages are dispatched in the order in which they're added via this method; so if triplet X is added after triplet Z, then triplet Z will undergo messaging prior to triplet X.
This method should not be called once the owning Thread instance has been started; if it is called, the triplet will not be added to the messaging queue.- Parameters:
listenerInstance
- the instance of the listener to receive the associated notificationlistenerMethod
- the Method instance representing the method through which notification will occurmethodArguments
- the arguments supplied to the notification method
-
hasFinished
public boolean hasFinished()
Has finished.- Returns:
- whether this instance has finished dispatching its messages
-
-