From: Mathieu Baudier Date: Sat, 15 Apr 2017 12:34:52 +0000 (+0200) Subject: Reintroduce deprecated methods used by SLC. X-Git-Tag: argeo-commons-2.1.69~10 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=622519b67d2ee3e22d6b402ce08c44dd9c563142 Reintroduce deprecated methods used by SLC. --- diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java index 34457e669..f8bee95de 100644 --- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java +++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java @@ -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 bundlesToStart) { - // if (bundlesToStart.size() == 0) - // return true; - // - // // used to monitor ACTIVE states - // List startedBundles = new ArrayList(); - // // used to log the bundles not found - // List notFoundBundles = new ArrayList(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 notStarted = new ArrayList(); - // while (!allStarted && (System.currentTimeMillis() - beginMonitor) < - // defaultTimeout) { - // notStarted = new ArrayList(); - // 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 bundlesToStart) { + if (bundlesToStart.size() == 0) + return true; + + // used to monitor ACTIVE states + List startedBundles = new ArrayList(); + // used to log the bundles not found + List notFoundBundles = new ArrayList(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 notStarted = new ArrayList(); + while (!allStarted && (System.currentTimeMillis() - beginMonitor) < defaultTimeout) { + notStarted = new ArrayList(); + 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