]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java
Completely refactor the way the execution server looks for steps
[gpl/argeo-slc.git] / runtime / org.argeo.slc.detached / src / main / java / org / argeo / slc / detached / admin / OpenSession.java
index 11966a97563af5371c5f156e68d92b80d611440f..f6522e4238ff9918a252b970906cc632b9d99629 100644 (file)
@@ -1,6 +1,9 @@
 package org.argeo.slc.detached.admin;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
+import java.util.StringTokenizer;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -10,13 +13,14 @@ import org.argeo.slc.detached.DetachedRequest;
 import org.argeo.slc.detached.DetachedSession;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
 
 public class OpenSession implements DetachedAdminCommand {
        private final static Log log = LogFactory.getLog(OpenSession.class);
 
        public DetachedSession execute(DetachedRequest request,
                        BundleContext bundleContext) {
+               MinimalBundlesManager bundlesManager = new MinimalBundlesManager(bundleContext);
+               
                DetachedSession session = new DetachedSession();
                session.setUuid(Long.toString(System.currentTimeMillis()));
 
@@ -28,28 +32,41 @@ 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 bundle = null;
+
+                       List bundlesToRefresh = new ArrayList();
                        for (int i = 0; i < bundles.length; i++) {
-                               if (bundles[i].getSymbolicName().equals(refreshedBundles)) {
-                                       bundle = bundles[i];
+                               if (refreshedBundleNames.contains(bundles[i].getSymbolicName())) {
+                                       bundlesToRefresh.add(bundles[i]);
                                }
                        }
 
-                       if (bundle != null) {
+                       for (int i = 0; i < bundlesToRefresh.size(); i++) {
+                               Bundle bundle = (Bundle) bundlesToRefresh.get(i);
                                try {
-                                       bundle.stop();
-                                       bundle.update();
-                                       bundle.start();
+                                       bundlesManager.upgradeSynchronous(bundle);
+//                                     bundle.stop();
+//                                     bundle.update();
+//                                     bundle.start();
                                        log.info("Refreshed bundle " + bundle.getSymbolicName());
-                               } catch (BundleException e) {
+                                       
+//                                     try {
+//                                             Thread.sleep(2000);
+//                                     } catch (InterruptedException e) {
+//                                             e.printStackTrace();
+//                                     }
+                                       
+                               } catch (Exception e) {
                                        throw new DetachedException("Could not refresh bundle "
                                                        + bundle.getSymbolicName(), e);
                                }
-                       } else {
-                               log.warn("Did not find bundle to refresh " + refreshedBundles);
                        }
-
                }
 
                return session;