net.ranides.assira.events
Class NamedEventListener

java.lang.Object
  extended by net.ranides.assira.events.NamedEventListener
All Implemented Interfaces:
EventListener<Event>, EventRouter, Observable
Direct Known Subclasses:
NamedEventRouter

public class NamedEventListener
extends Object
implements Observable

Obserwator pozwalający tworzyć wiązania z obserwatorami nasłuchującymi zdarzeń o określonym typie oraz nazwie. Wszystkie nazwane zdarzenia dziedziczą po NamedEvent. Ponieważ mechanizm obsługi zdarzeń nazwanych jest rozszerzeniem klasycznej infrastruktury przekazywania zdarzeń, to może być dowolnie łączony ze standardowymi obiektami EventListener oraz EventRouter.

NamedEventListener posiada funkcjonalność bardzo podobną do ReflectEventListener. Klasy pochodne mogą deklarować metody (niekoniecznie publiczne), które zostaną uruchomione, jeśli do obserwatora zostanie wysłane określone zdarzenie. Deklaracja metody obsługi zdarzeń ma następującą postać:

thread-safe class

Author:
ranides

Method Summary
<T extends Event>
void
addEventListener(Class<T> event, EventListener<? super T> listener)
          Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanym typie.
<T extends NamedEvent>
Observable
bind(String name, Class<T> type, EventListener<? super T> listener)
          Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanej nazwie oraz typie.
 NamedEventListener bind(String name, EventListener<? super NamedEvent> listener)
          Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanej nazwie.
 void dispose()
          Kończy działanie routera i zwalnia wszystkie zasoby.
 Collection<EventBinding<?>> getEventListeners()
           
 void handleEvent(Event event)
          Metoda implementująca reakcję na zdarzenie.
 void removeAllEventListeners()
          Usuwa wszystkie zarejestrowane obserwatory.
<T extends Event>
void
removeEventListener(Class<T> event, EventListener<? super T> listener)
          Usuwa obserwatora, którego wcześniej zarejestrowano dla zdarzeń o podanym typie.
 boolean signalEvent(Event event)
          Sygnalizuje podane zdarzenie rozsyłając komunikat do wszystkich obserwatorów.
 NamedEventListener unbind(EventListener<? super NamedEvent> listener)
          Usuwa obserwatora, którego wcześniej dodano za pomocą metody Observable.bind(java.lang.String, net.ranides.assira.events.EventListener).
 NamedEventListener unbind(String name, EventListener<? super NamedEvent> listener)
          Usuwa obserwatora, którego wcześniej dodano za pomocą metody Observable.bind(java.lang.String, net.ranides.assira.events.EventListener).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

handleEvent

public final void handleEvent(Event event)
Description copied from interface: EventListener
Metoda implementująca reakcję na zdarzenie. Należy zwrócić uwagę, że wątek, w którym metoda zostanie wywołana, może być trudny do ustalenia.

Dokładniej rzecz ujmując: o tym, w jakim wątku zostanie wywołana metoda decyduje EventRouter, do którego Listener został podpięty. Jeśli podpięto obiekt do wielu EventRouter'ów, to każdy może zostać wywołany w zupełnie innym kontekście.

Specified by:
handleEvent in interface EventListener<Event>

signalEvent

public boolean signalEvent(Event event)
Description copied from interface: EventRouter
Sygnalizuje podane zdarzenie rozsyłając komunikat do wszystkich obserwatorów. Jeśli rozesłanie komunikatu nie jest możliwe, zwraca false.

Specified by:
signalEvent in interface EventRouter
Returns:
true - jeśli zdarzenie może być przekazane odbiorcom.

dispose

public void dispose()
Description copied from interface: EventRouter
Kończy działanie routera i zwalnia wszystkie zasoby.
thread-safe method

Specified by:
dispose in interface EventRouter

bind

public final NamedEventListener bind(String name,
                                     EventListener<? super NamedEvent> listener)
Description copied from interface: Observable
Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanej nazwie.

Specified by:
bind in interface Observable
Returns:

bind

public final <T extends NamedEvent> Observable bind(String name,
                                                    Class<T> type,
                                                    EventListener<? super T> listener)
Description copied from interface: Observable
Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanej nazwie oraz typie.

Specified by:
bind in interface Observable
Returns:

unbind

public final NamedEventListener unbind(String name,
                                       EventListener<? super NamedEvent> listener)
Description copied from interface: Observable
Usuwa obserwatora, którego wcześniej dodano za pomocą metody Observable.bind(java.lang.String, net.ranides.assira.events.EventListener). Jeśli zajestrowano go wielokrotnie dla wielu różnych zdarzeń o podanej nazwie - usuwane jest tylko jedno wiązanie. Jeśli zajestrowano go również dla zdarzeń o innych nazwach - zostają one nadal. Wiekrotna rejestrowane obserwatory musi zostać usunięte również wielokrotnie. zachowane.

Specified by:
unbind in interface Observable
Returns:

unbind

public final NamedEventListener unbind(EventListener<? super NamedEvent> listener)
Description copied from interface: Observable
Usuwa obserwatora, którego wcześniej dodano za pomocą metody Observable.bind(java.lang.String, net.ranides.assira.events.EventListener). Usuwane są wszystkie powiązania, bez względu na typ i nazwy obserwowanych zdarzeń, jeśli obserwator był rejestrowany wielokrotnie.

Specified by:
unbind in interface Observable
Returns:

addEventListener

public final <T extends Event> void addEventListener(Class<T> event,
                                                     EventListener<? super T> listener)
Description copied from interface: EventRouter
Rejestruje obserwatora, który otrzyma wszystkie zdarzenia o podanym typie.
thread-safe method

Specified by:
addEventListener in interface EventRouter

removeEventListener

public final <T extends Event> void removeEventListener(Class<T> event,
                                                        EventListener<? super T> listener)
Description copied from interface: EventRouter
Usuwa obserwatora, którego wcześniej zarejestrowano dla zdarzeń o podanym typie. Jeśli zajestrowano go również dla zdarzeń o innych typach - zostają one nadal. Jeśli zarejestrowano go wielokrotnie - musi zostać usunięty również wielokrotnie.
thread-safe method

Specified by:
removeEventListener in interface EventRouter

getEventListeners

public Collection<EventBinding<?>> getEventListeners()
Specified by:
getEventListeners in interface EventRouter

removeAllEventListeners

public final void removeAllEventListeners()
Usuwa wszystkie zarejestrowane obserwatory.
thread-safe method

Uwaga! Jeśli klasa posiada zadeklarowane metody adnotowane za pomocą Meta.EventHandler, to zdarzenia nadal są do nich delegowane. Nie istnieje możliwość usunięcia metod zadeklarowanych w czasie kompilacji.

Specified by:
removeAllEventListeners in interface EventRouter


Copyright © 2013. All Rights Reserved.