Reintroduce deprecated methods used by SLC.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 15 Apr 2017 12:34:52 +0000 (14:34 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 15 Apr 2017 12:34:52 +0000 (14:34 +0200)
org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java

index 34457e669f1bf6387fc0cb5dbf8c4f4bf7404fe3..f8bee95deea112bce179c26fecfb71a07196e389 100644 (file)
@@ -82,7 +82,8 @@ public class OsgiBoot implements OsgiBootConstants {
        // .booleanValue();
 
        /** Default is 10s */
-       // private long defaultTimeout = 10000l;
+       @Deprecated
+       private long defaultTimeout = 10000l;
 
        private final BundleContext bundleContext;
        private final String localCache;
@@ -329,111 +330,102 @@ public class OsgiBoot implements OsgiBootConstants {
         * @return whether all bundles are now in active state
         * @deprecated
         */
-       // @Deprecated
-       // public boolean startBundles(List<String> bundlesToStart) {
-       // if (bundlesToStart.size() == 0)
-       // return true;
-       //
-       // // used to monitor ACTIVE states
-       // List<Bundle> startedBundles = new ArrayList<Bundle>();
-       // // used to log the bundles not found
-       // List<String> notFoundBundles = new ArrayList<String>(bundlesToStart);
-       //
-       // Bundle[] bundles = bundleContext.getBundles();
-       // long startBegin = System.currentTimeMillis();
-       // for (int i = 0; i < bundles.length; i++) {
-       // Bundle bundle = bundles[i];
-       // String symbolicName = bundle.getSymbolicName();
-       // if (bundlesToStart.contains(symbolicName))
-       // try {
-       // try {
-       // bundle.start();
-       // if (OsgiBootUtils.debug)
-       // debug("Bundle " + symbolicName + " started");
-       // } catch (Exception e) {
-       // OsgiBootUtils.warn("Start of bundle " + symbolicName + " failed because
-       // of " + e
-       // + ", maybe bundle is not yet resolved," + " waiting and trying again.");
-       // waitForBundleResolvedOrActive(startBegin, bundle);
-       // bundle.start();
-       // startedBundles.add(bundle);
-       // }
-       // notFoundBundles.remove(symbolicName);
-       // } catch (Exception e) {
-       // OsgiBootUtils.warn("Bundle " + symbolicName + " cannot be started: " +
-       // e.getMessage());
-       // if (OsgiBootUtils.debug)
-       // e.printStackTrace();
-       // // was found even if start failed
-       // notFoundBundles.remove(symbolicName);
-       // }
-       // }
-       //
-       // for (int i = 0; i < notFoundBundles.size(); i++)
-       // OsgiBootUtils.warn("Bundle '" + notFoundBundles.get(i) + "' not started
-       // because it was not found.");
-       //
-       // // monitors that all bundles are started
-       // long beginMonitor = System.currentTimeMillis();
-       // boolean allStarted = !(startedBundles.size() > 0);
-       // List<String> notStarted = new ArrayList<String>();
-       // while (!allStarted && (System.currentTimeMillis() - beginMonitor) <
-       // defaultTimeout) {
-       // notStarted = new ArrayList<String>();
-       // allStarted = true;
-       // for (int i = 0; i < startedBundles.size(); i++) {
-       // Bundle bundle = (Bundle) startedBundles.get(i);
-       // // TODO check behaviour of lazs bundles
-       // if (bundle.getState() != Bundle.ACTIVE) {
-       // allStarted = false;
-       // notStarted.add(bundle.getSymbolicName());
-       // }
-       // }
-       // try {
-       // Thread.sleep(100);
-       // } catch (InterruptedException e) {
-       // // silent
-       // }
-       // }
-       // long duration = System.currentTimeMillis() - beginMonitor;
-       //
-       // if (!allStarted)
-       // for (int i = 0; i < notStarted.size(); i++)
-       // OsgiBootUtils.warn("Bundle '" + notStarted.get(i) + "' not ACTIVE after "
-       // + (duration / 1000) + "s");
-       //
-       // return allStarted;
-       // }
+       @Deprecated
+       public boolean startBundles(List<String> bundlesToStart) {
+               if (bundlesToStart.size() == 0)
+                       return true;
+
+               // used to monitor ACTIVE states
+               List<Bundle> startedBundles = new ArrayList<Bundle>();
+               // used to log the bundles not found
+               List<String> notFoundBundles = new ArrayList<String>(bundlesToStart);
+
+               Bundle[] bundles = bundleContext.getBundles();
+               long startBegin = System.currentTimeMillis();
+               for (int i = 0; i < bundles.length; i++) {
+                       Bundle bundle = bundles[i];
+                       String symbolicName = bundle.getSymbolicName();
+                       if (bundlesToStart.contains(symbolicName))
+                               try {
+                                       try {
+                                               bundle.start();
+                                               if (OsgiBootUtils.debug)
+                                                       debug("Bundle " + symbolicName + " started");
+                                       } catch (Exception e) {
+                                               OsgiBootUtils.warn("Start of bundle " + symbolicName + " failed because of " + e
+                                                               + ", maybe bundle is not yet resolved," + " waiting and trying again.");
+                                               waitForBundleResolvedOrActive(startBegin, bundle);
+                                               bundle.start();
+                                               startedBundles.add(bundle);
+                                       }
+                                       notFoundBundles.remove(symbolicName);
+                               } catch (Exception e) {
+                                       OsgiBootUtils.warn("Bundle " + symbolicName + " cannot be started: " + e.getMessage());
+                                       if (OsgiBootUtils.debug)
+                                               e.printStackTrace();
+                                       // was found even if start failed
+                                       notFoundBundles.remove(symbolicName);
+                               }
+               }
+
+               for (int i = 0; i < notFoundBundles.size(); i++)
+                       OsgiBootUtils.warn("Bundle '" + notFoundBundles.get(i) + "' not started because it was not found.");
+
+               // monitors that all bundles are started
+               long beginMonitor = System.currentTimeMillis();
+               boolean allStarted = !(startedBundles.size() > 0);
+               List<String> notStarted = new ArrayList<String>();
+               while (!allStarted && (System.currentTimeMillis() - beginMonitor) < defaultTimeout) {
+                       notStarted = new ArrayList<String>();
+                       allStarted = true;
+                       for (int i = 0; i < startedBundles.size(); i++) {
+                               Bundle bundle = (Bundle) startedBundles.get(i);
+                               // TODO check behaviour of lazs bundles
+                               if (bundle.getState() != Bundle.ACTIVE) {
+                                       allStarted = false;
+                                       notStarted.add(bundle.getSymbolicName());
+                               }
+                       }
+                       try {
+                               Thread.sleep(100);
+                       } catch (InterruptedException e) {
+                               // silent
+                       }
+               }
+               long duration = System.currentTimeMillis() - beginMonitor;
+
+               if (!allStarted)
+                       for (int i = 0; i < notStarted.size(); i++)
+                               OsgiBootUtils.warn("Bundle '" + notStarted.get(i) + "' not ACTIVE after " + (duration / 1000) + "s");
+
+               return allStarted;
+       }
 
        /** Waits for a bundle to become active or resolved */
-       // private void waitForBundleResolvedOrActive(long startBegin, Bundle
-       // bundle) throws Exception {
-       // int originalState = bundle.getState();
-       // if ((originalState == Bundle.RESOLVED) || (originalState ==
-       // Bundle.ACTIVE))
-       // return;
-       //
-       // String originalStateStr = OsgiBootUtils.stateAsString(originalState);
-       //
-       // int currentState = bundle.getState();
-       // while (!(currentState == Bundle.RESOLVED || currentState ==
-       // Bundle.ACTIVE)) {
-       // long now = System.currentTimeMillis();
-       // if ((now - startBegin) > defaultTimeout * 10)
-       // throw new Exception("Bundle " + bundle.getSymbolicName() + " was not
-       // RESOLVED or ACTIVE after "
-       // + (now - startBegin) + "ms (originalState=" + originalStateStr + ",
-       // currentState="
-       // + OsgiBootUtils.stateAsString(currentState) + ")");
-       //
-       // try {
-       // Thread.sleep(100l);
-       // } catch (InterruptedException e) {
-       // // silent
-       // }
-       // currentState = bundle.getState();
-       // }
-       // }
+       @Deprecated
+       private void waitForBundleResolvedOrActive(long startBegin, Bundle bundle) throws Exception {
+               int originalState = bundle.getState();
+               if ((originalState == Bundle.RESOLVED) || (originalState == Bundle.ACTIVE))
+                       return;
+
+               String originalStateStr = OsgiBootUtils.stateAsString(originalState);
+
+               int currentState = bundle.getState();
+               while (!(currentState == Bundle.RESOLVED || currentState == Bundle.ACTIVE)) {
+                       long now = System.currentTimeMillis();
+                       if ((now - startBegin) > defaultTimeout * 10)
+                               throw new Exception("Bundle " + bundle.getSymbolicName() + " was not RESOLVED or ACTIVE after "
+                                               + (now - startBegin) + "ms (originalState=" + originalStateStr + ", currentState="
+                                               + OsgiBootUtils.stateAsString(currentState) + ")");
+
+                       try {
+                               Thread.sleep(100l);
+                       } catch (InterruptedException e) {
+                               // silent
+                       }
+                       currentState = bundle.getState();
+               }
+       }
 
        /*
         * BUNDLE PATTERNS INSTALLATION