X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fadmin%2FOpenSession.java;h=6c9ae5c7b7f890c526a4181598bfa1a913919adb;hb=a92115a4502597730f06e0ed1e7c326019f5b27f;hp=f6522e4238ff9918a252b970906cc632b9d99629;hpb=91defd68bfb8d5b253469fd54e627b861d71d031;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java index f6522e423..6c9ae5c7b 100644 --- a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java +++ b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java @@ -1,7 +1,7 @@ package org.argeo.slc.detached.admin; -import java.util.ArrayList; import java.util.List; +import java.util.ArrayList; import java.util.Properties; import java.util.StringTokenizer; @@ -19,7 +19,6 @@ public class OpenSession implements DetachedAdminCommand { public DetachedSession execute(DetachedRequest request, BundleContext bundleContext) { - MinimalBundlesManager bundlesManager = new MinimalBundlesManager(bundleContext); DetachedSession session = new DetachedSession(); session.setUuid(Long.toString(System.currentTimeMillis())); @@ -32,43 +31,36 @@ public class OpenSession implements DetachedAdminCommand { String refreshedBundles = props .getProperty("slc.detached.refreshedBundles"); if (refreshedBundles != null) { + List refreshedBundleNames = new ArrayList(); StringTokenizer st = new StringTokenizer(refreshedBundles, ","); while (st.hasMoreTokens()) { refreshedBundleNames.add(st.nextElement()); - } + } - Bundle[] bundles = bundleContext.getBundles(); + Bundle[] allBundles = bundleContext.getBundles(); + Bundle[] bundlesToRefresh = new Bundle[refreshedBundleNames.size()]; - List bundlesToRefresh = new ArrayList(); - for (int i = 0; i < bundles.length; i++) { - if (refreshedBundleNames.contains(bundles[i].getSymbolicName())) { - bundlesToRefresh.add(bundles[i]); - } + log.debug("Bundles to refresh for DetachedSession:"); + + for(int i = 0; i < bundlesToRefresh.length; ++i) { + bundlesToRefresh[i] = getBundleForName((String)refreshedBundleNames.get(i), allBundles); + if(log.isDebugEnabled()) + log.debug(" " + refreshedBundleNames.get(i)); } - for (int i = 0; i < bundlesToRefresh.size(); i++) { - Bundle bundle = (Bundle) bundlesToRefresh.get(i); - try { - bundlesManager.upgradeSynchronous(bundle); -// bundle.stop(); -// bundle.update(); -// bundle.start(); - log.info("Refreshed bundle " + bundle.getSymbolicName()); - -// try { -// Thread.sleep(2000); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } - - } catch (Exception e) { - throw new DetachedException("Could not refresh bundle " - + bundle.getSymbolicName(), e); - } - } + (new MinimalBundlesManager(bundleContext)).upgradeSynchronous(bundlesToRefresh); } return session; } + + private Bundle getBundleForName(String symbolicName, Bundle[] bundles) { + for (int i = 0; i < bundles.length; i++) { + if (symbolicName.equals(bundles[i].getSymbolicName())) { + return bundles[i]; + } + } + throw new DetachedException("No Bundle found for symbolic name " + symbolicName); + } }