
com.jpattern.gwt.client.bus.BusService Maven / Gradle / Ivy
package com.jpattern.gwt.client.bus;
import java.util.ArrayList;
import java.util.List;
import com.jpattern.gwt.client.IApplicationProvider;
import com.jpattern.gwt.client.event.IEvent;
import com.jpattern.gwt.client.event.IEventResult;
import com.jpattern.gwt.client.logger.ILogger;
/**
*
* @author Francesco Cina'
*
* Dec 5, 2011
*/
public class BusService extends ABusService {
private final List statusObservers = new ArrayList();
private final List eventBusObservers = new ArrayList();
private final List navigationEventObservers = new ArrayList();
private final ILogger logger;
public BusService(IApplicationProvider provider) {
this.logger = provider.getLoggerService().getLogger(getClass());
}
@Override
public void addGlobalEventObserver(IGlobalEventObserver statusObserver) {
statusObservers.add(statusObserver);
}
@Override
public void removeGlobalEventObserver(IGlobalEventObserver statusObserver) {
statusObservers.remove(statusObserver);
}
@Override
public void addEventObserver(IEventObserver eventBusObserver) {
eventBusObservers.add(eventBusObserver);
}
@Override
public void removeEventObserver(IEventObserver eventBusObserver) {
eventBusObservers.remove(eventBusObserver);
}
@Override
public void addNavigationEventObserver(INavigationEventObserver navigationEventObserver) {
navigationEventObservers.add(navigationEventObserver);
}
@Override
public void removeNavigationEventObserver(INavigationEventObserver navigationEventObserver) {
navigationEventObservers.remove(navigationEventObserver);
}
@Override
public void notifyGlobalEvent(String globalEvent) {
if (globalEvent!=null) {
logger.debug("notifyGlobalEvent", "GlobalEvent [" + globalEvent + "] launch notified to the bus");
for (IGlobalEventObserver observer : statusObservers) {
observer.onGlobalEvent(globalEvent);
}
}
}
@Override
@SuppressWarnings("unchecked")
public void notifyEventStart(IEvent event) {
if (event!=null) {
logger.debug("notifyEventStart", "Event class [" + event.getClass() + "] execution start notified to the bus");
for (IEventObserver observer : eventBusObservers) {
Class extends IEvent> eventClass = (Class extends IEvent>) event.getClass();
observer.onEventStart(eventClass);
}
}
}
@Override
@SuppressWarnings("unchecked")
public void notifyEventEnd(IEvent event, IEventResult eventResult) {
if (event!=null) {
Class extends IEvent> eventClass = (Class extends IEvent>) event.getClass();
logger.debug("notifyEventEnd", "Event class [" + eventClass + "] execution end notified to the bus. Execution success? " + eventResult.isValid());
for (IEventObserver observer : eventBusObservers) {
observer.onEventEnd(eventClass, eventResult);
}
}
}
@Override
public void notifyNavigationEvent(String navigationEventName) {
if (navigationEventName!=null) {
logger.debug("notifyNavigationEvent", "NavigationEvent [" + navigationEventName + "] launch notified to the bus");
for (INavigationEventObserver observer : navigationEventObservers) {
observer.onNavigationEvent(navigationEventName);
}
}
}
@Override
public List getStatusObservers() {
return statusObservers;
}
@Override
public List getEventObservers() {
return eventBusObservers;
}
@Override
public List getNavigationEventObservers() {
return navigationEventObservers;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy