de.unikassel.android.sdcframework.util
Class AbstractEventDispatcherImpl<T extends ObservableEvent,U extends ObservableEvent>

Package class diagram package AbstractEventDispatcherImpl
java.lang.Object
  extended by java.lang.Thread
      extended by de.unikassel.android.sdcframework.util.AbstractWorkerThread
          extended by de.unikassel.android.sdcframework.util.AbstractEventDispatcherImpl<T,U>
Type Parameters:
T - the collected event type extending ObservableEvent
U - the dispatched event type extending ObservableEvent
All Implemented Interfaces:
EventDispatcher<T,U>, ObservableEventSource<U>, ObserverRegistration<U>, WorkerThread, Runnable
Direct Known Subclasses:
EventDispatcherImpl

public abstract class AbstractEventDispatcherImpl<T extends ObservableEvent,U extends ObservableEvent>
extends AbstractWorkerThread
implements EventDispatcher<T,U>

Abstract Implementation of a event dispatcher as worker thread.

The event dispatcher does collect observed events using an event collector and does asynchronously dispatch the events to the registered observers.

The different types for the collected and the dispatched events do allow - among other things - an implementation which does collect single events and dispatch collections of the same event type.

See Also:
EventDispatcher, EventCollectorImpl, ObservableEventSource

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  EventCollector<T> collector
          The event collector to observe and dispatch collected events from
private  ObservableEventSource<U> eventSource
          The observable event source to delegate observer and notification handling to
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
private AbstractEventDispatcherImpl()
          Constructor
  AbstractEventDispatcherImpl(EventCollector<T> collector)
          Constructor
 
Method Summary
protected  void doCleanUp()
          The clean up method executed on termination
 EventCollector<T> getCollector()
          Getter for the collector
 ObservableEventSource<U> getEventSource()
          Getter for the eventSource
 boolean hasObservers()
          Test method for observers.
 void notify(U data)
          Does set the changed flag and notifies all observers
 void registerEventObserver(EventObserver<? extends U> observer)
          Does register an observer
 void removeAllObservers()
          Does remove all registered observers
 void unregisterEventObserver(EventObserver<? extends U> observer)
          Does delete a registered observer
 
Methods inherited from class de.unikassel.android.sdcframework.util.AbstractWorkerThread
doTerminate, doWork, hasTerminated, isLogging, isWorking, logMessage, run, setLogging, start, startWork, stopWork
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.unikassel.android.sdcframework.util.facade.WorkerThread
doTerminate, hasTerminated, isLogging, isWorking, setLogging, startWork, stopWork
 

Field Detail

eventSource

private final ObservableEventSource<U extends ObservableEvent> eventSource
The observable event source to delegate observer and notification handling to


collector

protected final EventCollector<T extends ObservableEvent> collector
The event collector to observe and dispatch collected events from

Constructor Detail

AbstractEventDispatcherImpl

private AbstractEventDispatcherImpl()
Constructor


AbstractEventDispatcherImpl

public AbstractEventDispatcherImpl(EventCollector<T> collector)
                            throws InvalidParameterException
Constructor

Parameters:
collector - the event collector to observe
Throws:
InvalidParameterException - is thrown if the collector reference is null
Method Detail

getEventSource

public final ObservableEventSource<U> getEventSource()
Getter for the eventSource

Returns:
the eventSource

getCollector

public final EventCollector<T> getCollector()
Description copied from interface: EventDispatcher
Getter for the collector

Specified by:
getCollector in interface EventDispatcher<T extends ObservableEvent,U extends ObservableEvent>
Returns:
the collector

doCleanUp

protected final void doCleanUp()
Description copied from class: AbstractWorkerThread
The clean up method executed on termination

Specified by:
doCleanUp in class AbstractWorkerThread

registerEventObserver

public final void registerEventObserver(EventObserver<? extends U> observer)
Description copied from interface: ObserverRegistration
Does register an observer

Specified by:
registerEventObserver in interface ObserverRegistration<U extends ObservableEvent>
Parameters:
observer - the observer to add

unregisterEventObserver

public final void unregisterEventObserver(EventObserver<? extends U> observer)
Description copied from interface: ObserverRegistration
Does delete a registered observer

Specified by:
unregisterEventObserver in interface ObserverRegistration<U extends ObservableEvent>
Parameters:
observer - the observer to delete

notify

public void notify(U data)
Description copied from interface: ObservableEventSource
Does set the changed flag and notifies all observers

Specified by:
notify in interface ObservableEventSource<U extends ObservableEvent>
Parameters:
data - the observable event data to create notifications for

removeAllObservers

public void removeAllObservers()
Description copied from interface: ObserverRegistration
Does remove all registered observers

Specified by:
removeAllObservers in interface ObserverRegistration<U extends ObservableEvent>

hasObservers

public boolean hasObservers()
Description copied from interface: ObservableEventSource
Test method for observers.

Specified by:
hasObservers in interface ObservableEventSource<U extends ObservableEvent>
Returns:
true if observers are registered, false otherwise