Smack

org.jivesoftware.smackx.workgroup.util
Class ListenerEventDispatcher

java.lang.Object
  extended by 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.

Author:
loki der quaeler

Nested Class Summary
protected  class ListenerEventDispatcher.TripletContainer
           
 
Field Summary
protected  boolean hasFinishedDispatching
           
protected  boolean isRunning
           
protected  ArrayList triplets
           
 
Constructor Summary
ListenerEventDispatcher()
           
 
Method Summary
 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()
           
 void run()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

triplets

protected transient ArrayList 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 notification
listenerMethod - the Method instance representing the method through which notification will occur
methodArguments - the arguments supplied to the notification method

hasFinished

public boolean hasFinished()
Returns:
whether this instance has finished dispatching its messages

run

public void run()
Specified by:
run in interface Runnable

Smack

Copyright © 2003-2007 Jive Software.