package com.netflix.governator.event;
import java.lang.reflect.Method;
/**
* Interface for publishing {@link ApplicationEvent}s as well as programmatically registering
* {@link ApplicationEventListener}s.
*/
public interface ApplicationEventDispatcher {
<T extends ApplicationEvent> ApplicationEventRegistration registerListener(Class<T> eventType, ApplicationEventListener<T> eventListener);
ApplicationEventRegistration registerListener(ApplicationEventListener<? extends ApplicationEvent> eventListener);
ApplicationEventRegistration registerListener(Object instance, Method method, Class<? extends ApplicationEvent> acceptedType);
void publishEvent(ApplicationEvent event);
}