/** * Listens ContextClosedEvent and Closes all async http connections */ @Bean ApplicationListener<?> applicationListener() { return new SmartApplicationListener() { @Override public int getOrder() { return 0; } @Override public boolean supportsEventType(Class<? extends ApplicationEvent> eventType) { return ContextClosedEvent.class.isAssignableFrom(eventType); } @Override public boolean supportsSourceType(Class<?> sourceType) { return true; } @Override public void onApplicationEvent(ApplicationEvent event) { Closeables.close(proxyInstance); } }; }
/** * {@inheritDoc} * * <p> * The {@link org.kuali.rice.coreservice.api.parameter.Parameter} properties need to come from the * {@link ConfigContext} instead of the {@link org.kuali.common.util.spring.env.EnvironmentService} for the scenario * where nobody has wired in a bootstrap PSC in order to help manage the resetting of the database via RunOnce. * </p> */ @Override @Bean public SmartApplicationListener applicationEventListener() { Properties properties = ConfigContext.getCurrentContextConfig().getProperties(); String applicationId = properties.getProperty(CoreConstants.Config.APPLICATION_ID); String namespace = properties.getProperty(NAMESPACE_KEY, NAMESPACE); String component = properties.getProperty(COMPONENT_KEY, COMPONENT); String name = properties.getProperty(NAME_KEY, NAME); String description = properties.getProperty(DESCRIPTION_KEY, DESCRIPTION); boolean runOnMissingParameter = Boolean.parseBoolean(properties.getProperty(RUN_ON_MISSING_PARAMETER_KEY, RUN_ON_MISSING_PARAMETER.toString())); int order = Integer.parseInt(properties.getProperty(ORDER_KEY, String.valueOf(Ordered.LOWEST_PRECEDENCE))); RunOnce runOnce = ParameterServiceRunOnce.builder(applicationId, namespace, component, name) .description(description).runOnMissingParameter(runOnMissingParameter).build(); Executable springExecutable = SpringExecUtils.getSpringExecutable(service, propertySource, IngestXmlExecConfig.class, Lists.newArrayList("master")); Executable executable = RunOnceExecutable.builder(springExecutable, runOnce).build(); return ExecutableApplicationEventListener.builder(executable, ContextRefreshedEvent.class).order(order).build(); }
/** * Create an instance wrapping the local user registry. */ public MultiServerUserRegistry(SimpUserRegistry localRegistry) { Assert.notNull(localRegistry, "'localRegistry' is required."); this.localRegistry = localRegistry; this.listener = (this.localRegistry instanceof SmartApplicationListener ? (SmartApplicationListener) this.localRegistry : new NoOpSmartApplicationListener()); this.id = generateId(); }
/** * {@inheritDoc} */ @Override @Bean public SmartApplicationListener applicationEventListener() { Executable executable = config.ingestXmlExecutable(); Integer order = env.getInteger(ORDER_KEY, Integer.valueOf(Ordered.LOWEST_PRECEDENCE)); return ExecutableApplicationEventListener.builder(executable, ContextRefreshedEvent.class).order(order.intValue()).build(); }
protected boolean supportsEvent(ApplicationListener<?> listener, Class<? extends ApplicationEvent> eventType, Class<?> sourceType) { SmartApplicationListener smartListener = (listener instanceof SmartApplicationListener ? (SmartApplicationListener) listener : new SmartApplicationListenerAdapter(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)); }