package net.greencoding.thysdrus.event.core;
import java.util.List;
import net.greencoding.thysdrus.event.core.listener.EventListener;
/**
*
* @author Nabil Ben Said (nabil.bensaid@gmail.com)
*
*/
public class DefaultEventHub implements EventHub {
private EventListenerRegistry listenerRegistry = DefaultEventListenerRegistry.getSingelton();
private static EventHub singelton = new DefaultEventHub();
public static EventHub getSingelton() {
return singelton;
}
protected DefaultEventHub(){
}
@Override
public void publishEvent(Event event) {
// TODO improve this method to run asynchronous. use a queue and threads.
List<EventListener<? extends Event>> listeners = listenerRegistry.getEventListernersByEventType(event.getClass());
if (listeners == null){
return;
}
for (EventListener<? extends Event> eventListener : listeners){
eventListener.newEvent(event);
}
}
protected void setListenerRegistry(EventListenerRegistry listenerRegistry) {
this.listenerRegistry = listenerRegistry;
}
}