@Override protected Filter initDelegate(WebApplicationContext wac) throws ServletException { Filter filter = super.initDelegate(wac); if(!listenerRegistered) { ((AbstractApplicationContext) wac).getApplicationListeners().add(new GenericApplicationListenerAdapter(this)); listenerRegistered = true; } return filter; }
protected boolean supportsEvent(ApplicationListener<?> listener, ResolvableType eventType, Class<?> sourceType) { GenericApplicationListener smartListener = (listener instanceof GenericApplicationListener ? (GenericApplicationListener) listener : new GenericApplicationListenerAdapter(listener)); return (smartListener.supportsEventType(eventType) && smartListener.supportsSourceType(sourceType)); }
/** * Determine whether the given listener supports the given event. * <p> * The default implementation detects the {@link SmartApplicationListener} * interface. In case of a standard {@link ApplicationListener}, a * {@link GenericApplicationListenerAdapter} will be used to introspect the * generically declared type of the target listener. * * @param listener * the target listener to check * @param eventType * the event type to check against * @param sourceType * the source type to check against * @return whether the given listener should be included in the candidates * for the given event type */ protected boolean supportsEvent(ApplicationListener listener, Class<? extends ApplicationEvent> eventType, Class sourceType) { SmartApplicationListener smartListener = (listener instanceof SmartApplicationListener ? (SmartApplicationListener) listener : new GenericApplicationListenerAdapter(listener)); return (smartListener.supportsEventType(eventType) && smartListener.supportsSourceType(sourceType)); }