package gov.samhsa.consent2share.infrastructure.eventlistener; import gov.samhsa.consent2share.domain.SecurityEvent; import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationEvent; /** * The Class EventService. */ public class EventService implements org.springframework.context.ApplicationListener { /** The listeners. */ List<EventListener> listeners = new ArrayList<EventListener>(); /** * Method that allows registering of an Event Listener. * * @param listener * the listener */ public void registerListener(EventListener listener) { listeners.add(listener); } /** * Spring executes this method with the event object. This method iterates * though the list of registered Listeners and checks whether any listener * can handle the event. Calls handle method of the Listener if it can * handle the event. * * @param event * the event */ public void onApplicationEvent(ApplicationEvent event) { dispatchEvent(event); } /** * Raise security event. * * @param securityEvent * the security event */ public void raiseSecurityEvent(SecurityEvent securityEvent) { dispatchEvent(securityEvent); } /** * Dispatch event. * * @param event * the event */ private void dispatchEvent(Object event) { for (EventListener listener : listeners) { if (listener.canHandle(event)) { listener.handle(event); } } } }