Refactor CMS life cycle.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsShutdown.java
diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsShutdown.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsShutdown.java
deleted file mode 100644 (file)
index eb7657e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.argeo.cms.internal.kernel;
-
-import org.argeo.api.cms.CmsLog;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.launch.Framework;
-
-/** Shutdowns the OSGi framework */
-class CmsShutdown extends Thread {
-       public final int EXIT_OK = 0;
-       public final int EXIT_ERROR = 1;
-       public final int EXIT_TIMEOUT = 2;
-       public final int EXIT_UNKNOWN = 3;
-
-       private final CmsLog log = CmsLog.getLog(CmsShutdown.class);
-       // private final BundleContext bc =
-       // FrameworkUtil.getBundle(CmsShutdown.class).getBundleContext();
-       private final Framework framework;
-
-       /** Shutdown timeout in ms */
-       private long timeout = 10 * 60 * 1000;
-
-       public CmsShutdown() {
-               super("CMS Shutdown Hook");
-               framework = FrameworkUtil.getBundle(CmsShutdown.class) != null
-                               ? (Framework) FrameworkUtil.getBundle(CmsShutdown.class).getBundleContext().getBundle(0)
-                               : null;
-       }
-
-       @Override
-       public void run() {
-               if (framework != null && framework.getState() != Bundle.ACTIVE) {
-                       return;
-               }
-
-               if (log.isDebugEnabled())
-                       log.debug("Shutting down OSGi framework...");
-               try {
-                       if (framework != null) {
-                               // shutdown framework
-                               framework.stop();
-                               // wait for shutdown
-                               FrameworkEvent shutdownEvent = framework.waitForStop(timeout);
-                               int stoppedType = shutdownEvent.getType();
-                               Runtime runtime = Runtime.getRuntime();
-                               if (stoppedType == FrameworkEvent.STOPPED) {
-                                       // close VM
-                                       // System.exit(EXIT_OK);
-                               } else if (stoppedType == FrameworkEvent.ERROR) {
-                                       log.error("The OSGi framework stopped with an error");
-                                       runtime.halt(EXIT_ERROR);
-                               } else if (stoppedType == FrameworkEvent.WAIT_TIMEDOUT) {
-                                       log.error("The OSGi framework hasn't stopped after " + timeout + "ms."
-                                                       + " Forcibly terminating the JVM...");
-                                       runtime.halt(EXIT_TIMEOUT);
-                               } else {
-                                       log.error("Unknown state of OSGi framework after " + timeout + "ms."
-                                                       + " Forcibly terminating the JVM... (" + shutdownEvent + ")");
-                                       runtime.halt(EXIT_UNKNOWN);
-                               }
-                       }
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       log.error("Unexpected exception " + e + " in shutdown hook. " + " Forcibly terminating the JVM...");
-                       Runtime.getRuntime().halt(EXIT_UNKNOWN);
-               }
-       }
-
-}