aboutsummaryrefslogtreecommitdiff
path: root/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java')
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java170
1 files changed, 0 insertions, 170 deletions
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
deleted file mode 100644
index e884b5c6..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package at.asitplus.eidas.specific.connector;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.slf4j.Logger;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.event.ContextClosedEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
-
-import at.gv.egiz.components.spring.api.IDestroyableObject;
-import eu.eidas.auth.cache.IgniteInstanceInitializerSpecificCommunication;
-
-/**
- * SpringContext CloseHandler.
- *
- * @author tlenz
- *
- */
-
-public class SpringContextCloseHandler
- implements ApplicationListener<ContextClosedEvent>, ApplicationContextAware, BeanPostProcessor {
-
- private static final Logger log =
- org.slf4j.LoggerFactory.getLogger(SpringContextCloseHandler.class);
-
- private ApplicationContext context;
-
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.context.ApplicationListener#onApplicationEvent(org.
- * springframework.context. ApplicationEvent)
- */
- @Override
- @EventListener
- public void onApplicationEvent(final ContextClosedEvent arg0) {
- log.info("MS-specific eIDAS-Node shutdown process started ...");
-
- try {
- log.debug("CleanUp objects with implements the IDestroyable interface ... ");
- final Map<String, IDestroyableObject> objectsToDestroy =
- context.getBeansOfType(IDestroyableObject.class);
- internalIDestroyableObject(objectsToDestroy);
- log.info("Object cleanUp complete");
-
- log.debug("Stopping Spring Thread-Pools ... ");
- // shut-down task schedulers
- final Map<String, ThreadPoolTaskScheduler> schedulers =
- context.getBeansOfType(ThreadPoolTaskScheduler.class);
- internalThreadPoolTaskScheduler(schedulers);
-
- // shut-down task executors
- final Map<String, ThreadPoolTaskExecutor> executers =
- context.getBeansOfType(ThreadPoolTaskExecutor.class);
- internalThreadPoolTaskExecutor(executers);
- log.debug("Spring Thread-Pools stopped");
-
-
- //clean-up eIDAS node
- Map<String, IgniteInstanceInitializerSpecificCommunication> nodeIgnite =
- context.getBeansOfType(IgniteInstanceInitializerSpecificCommunication.class);
- log.info("Find #{} Apache Ignite instances from eIDAS Ref. impl.", nodeIgnite.size());
- for (Entry<String, IgniteInstanceInitializerSpecificCommunication> el : nodeIgnite.entrySet()) {
- if (el.getValue().getInstance() != null) {
- el.getValue().getInstance().close();
- el.getValue().destroyInstance();
- log.debug("Shutdown Apache-Ignite: {}", el.getKey());
-
- }
- }
-
- log.info("MS-specific eIDAS-Node shutdown process finished");
-
- } catch (final Exception e) {
- log.warn("MS-specific eIDAS-Node shutdown process has an error.", e);
-
- }
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.beans.factory.config.BeanPostProcessor#
- * postProcessAfterInitialization(java. lang.Object, java.lang.String)
- */
- @Override
- public Object postProcessAfterInitialization(final Object arg0, final String arg1)
- throws BeansException {
- if (arg0 instanceof ThreadPoolTaskScheduler) {
- ((ThreadPoolTaskScheduler) arg0).setWaitForTasksToCompleteOnShutdown(true);
- }
- if (arg0 instanceof ThreadPoolTaskExecutor) {
- ((ThreadPoolTaskExecutor) arg0).setWaitForTasksToCompleteOnShutdown(true);
- }
- return arg0;
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.beans.factory.config.BeanPostProcessor#
- * postProcessBeforeInitialization(java .lang.Object, java.lang.String)
- */
- @Override
- public Object postProcessBeforeInitialization(final Object arg0, final String arg1)
- throws BeansException {
- return arg0;
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.springframework.context.ApplicationContextAware#setApplicationContext(org
- * .springframework. context.ApplicationContext)
- */
- @Override
- public void setApplicationContext(final ApplicationContext arg0) throws BeansException {
- this.context = arg0;
-
- }
-
- private void internalThreadPoolTaskExecutor(final Map<String, ThreadPoolTaskExecutor> executers) {
- for (final ThreadPoolTaskExecutor executor : executers.values()) {
- executor.shutdown();
- log.debug("Executer {} with active {} work has killed", executor.getThreadNamePrefix(),
- executor.getActiveCount());
-
- }
-
- }
-
- // Not required at the moment
- private void internalThreadPoolTaskScheduler(
- final Map<String, ThreadPoolTaskScheduler> schedulers) {
- log.trace("Stopping #{} task-schedulers", schedulers.size());
-
- }
-
- private void internalIDestroyableObject(final Map<String, IDestroyableObject> objectsToDestroy) {
- if (objectsToDestroy != null) {
- final Iterator<Entry<String, IDestroyableObject>> interator =
- objectsToDestroy.entrySet().iterator();
- while (interator.hasNext()) {
- final Entry<String, IDestroyableObject> object = interator.next();
- try {
- object.getValue().fullyDestroy();
- log.debug("Object with ID: {} is destroyed", object.getKey());
-
- } catch (final Exception e) {
- log.warn("Destroing object with ID: {} FAILED!", object.getKey(), null, e);
-
- }
- }
- }
-
- }
-
-}