Allow to refresh a comma separated list of bundles
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 11 Dec 2008 16:24:01 +0000 (16:24 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 11 Dec 2008 16:24:01 +0000 (16:24 +0000)
ASSIGNED - bug 73: Detached getRequest crash
https://www.spartadn.com/bugzilla/show_bug.cgi?id=73

git-svn-id: https://svn.argeo.org/slc/trunk@2005 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/admin/OpenSession.java

index 11966a97563af5371c5f156e68d92b80d611440f..2b89a7223d3df080468d0cf504e7337d82c2d5ec 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;
@@ -28,15 +31,23 @@ 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();
@@ -46,10 +57,7 @@ public class OpenSession implements DetachedAdminCommand {
                                        throw new DetachedException("Could not refresh bundle "
                                                        + bundle.getSymbolicName(), e);
                                }
-                       } else {
-                               log.warn("Did not find bundle to refresh " + refreshedBundles);
                        }
-
                }
 
                return session;