org.eclipse.emf.emfstore.internal.common.observer
Class ObserverBus

java.lang.Object
  extended by org.eclipse.emf.emfstore.internal.common.observer.ObserverBus

public class ObserverBus
extends Object

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
 
 

Author:
wesendon

Constructor Summary
ObserverBus()
          Default constructor.
 
Method Summary
 void collectionExtensionPoints()
          Pulls observers from an extension point and registers them.
<T extends ESObserver>
T
notify(Class<T> clazz)
          This method allows you to notify all observers.
<T extends ESObserver>
T
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

ObserverBus

public ObserverBus()
Default constructor.

Method Detail

notify

public <T extends ESObserver> T notify(Class<T> clazz)
This method allows you to notify all observers.

Type Parameters:
T - class of observer
Parameters:
clazz - class of observer
Returns:
call object

notify

public <T extends ESObserver> T notify(Class<T> clazz,
                                       boolean prioritized)
This method allows you to notify all observers.

Type Parameters:
T - class of observer
Parameters:
clazz - class of observer
prioritized - sort observer after ESPrioritizedObserver
Returns:
call object

register

public void register(ESObserver observer)
Registers an observer for all observer interfaces implemented by the object or its super classes.

Parameters:
observer - observer object

register

public void register(ESObserver observer,
                     Class<? extends ESObserver>... classes)
Registers an observer for the specified observer interfaces.

Parameters:
observer - observer object
classes - set of classes

unregister

public void unregister(ESObserver observer)
Unregisters an observer for all observer interfaces implemented by the object or its super classes.

Parameters:
observer - observer object

unregister

public void unregister(ESObserver observer,
                       Class<? extends ESObserver>... classes)
Unregisters an observer for the specified observer interfaces.

Parameters:
observer - observer object
classes - set of classes

collectionExtensionPoints

public void collectionExtensionPoints()
Pulls observers from an extension point and registers them.



Copyright © 2015. All Rights Reserved.