|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.emf.emfstore.internal.common.observer.ObserverBus
public class ObserverBus
This is a universal observer bus. This class follows the publish/subscribe pattern, it is a central dispatcher for
observers and makes use of generics in order to allow type safety. It can be used as singleton or be injected through
DI.
Observers have to implement the ESObserver
interface, which is only used as a marker. Future use of
Annotations is possible.
by using notify(Class)
(e.g. bus.notify(MyObserver.class).myObserverMethod()
) all registered
Observers are notified.
This is implemented by using the java Proxy
class. By calling notify(Class)
a proxy is returned,
which then calls all registered observers.
The proxy can also be casted into ObserverCall
, which allows to access all results by the different
observers.
Example code:
// A is ESObserver A a = new A() { public void foo() { System.out.println("A says: go!"); } }; // B extends A and is ESObserver B b = new B() { public void say(String ja) { System.out.println("B says: " + ja); } public void foo() { System.out.println("B says: h??"); } }; // B is registered first ObserverBus.register(b); ObserverBus.register(a); ObserverBus.notify(A.class).foo(); ObserverBus.notify(B.class).say("w00t"); // Output: // B says: h?? // A says: go! // // B says: w00t
Constructor Summary | |
---|---|
ObserverBus()
Default constructor. |
Method Summary | ||
---|---|---|
void |
collectionExtensionPoints()
Pulls observers from an extension point and registers them. |
|
|
notify(Class<T> clazz)
This method allows you to notify all observers. |
|
|
notify(Class<T> clazz,
boolean prioritized)
This method allows you to notify all observers. |
|
void |
register(ESObserver observer)
Registers an observer for all observer interfaces implemented by the object or its super classes. |
|
void |
register(ESObserver observer,
Class<? extends ESObserver>... classes)
Registers an observer for the specified observer interfaces. |
|
void |
unregister(ESObserver observer)
Unregisters an observer for all observer interfaces implemented by the object or its super classes. |
|
void |
unregister(ESObserver observer,
Class<? extends ESObserver>... classes)
Unregisters an observer for the specified observer interfaces. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ObserverBus()
Method Detail |
---|
public <T extends ESObserver> T notify(Class<T> clazz)
T
- class of observerclazz
- class of observer
public <T extends ESObserver> T notify(Class<T> clazz, boolean prioritized)
T
- class of observerclazz
- class of observerprioritized
- sort observer after ESPrioritizedObserver
public void register(ESObserver observer)
observer
- observer objectpublic void register(ESObserver observer, Class<? extends ESObserver>... classes)
observer
- observer objectclasses
- set of classespublic void unregister(ESObserver observer)
observer
- observer objectpublic void unregister(ESObserver observer, Class<? extends ESObserver>... classes)
observer
- observer objectclasses
- set of classespublic void collectionExtensionPoints()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |