You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/04/30 17:39:21 UTC

svn commit: r1332248 - in /karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell: InstallBundleCommand.java ListBundleCommand.java

Author: jbonofre
Date: Mon Apr 30 15:39:21 2012
New Revision: 1332248

URL: http://svn.apache.org/viewvc?rev=1332248&view=rev
Log:
[KARAF-1420] Refactore cluster:bundle-* commands to look like bundle:* commands

Modified:
    karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java
    karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ListBundleCommand.java

Modified: karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java?rev=1332248&r1=1332247&r2=1332248&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java Mon Apr 30 15:39:21 2012
@@ -15,6 +15,7 @@ package org.apache.karaf.cellar.bundle.s
 
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
 import org.apache.karaf.cellar.bundle.BundleState;
 import org.apache.karaf.cellar.bundle.Constants;
 import org.apache.karaf.cellar.bundle.RemoteBundleEvent;
@@ -26,6 +27,7 @@ import org.apache.karaf.cellar.core.shel
 import org.osgi.framework.BundleEvent;
 
 import java.net.URL;
+import java.util.List;
 import java.util.Map;
 import java.util.jar.JarInputStream;
 import java.util.jar.Manifest;
@@ -33,11 +35,14 @@ import java.util.jar.Manifest;
 @Command(scope = "cluster", name = "bundle-install", description = "Install a bundle assigned to a cluster group.")
 public class InstallBundleCommand extends CellarCommandSupport {
 
-    @Argument(index = 0, name = "group", description = "The cluster group name.", required = true, multiValued = false)
+    @Argument(index = 0, name = "group", description = "The cluster group name", required = true, multiValued = false)
     String groupName;
-    
-    @Argument(index = 1, name = "location", description = "The bundle location.", required = true, multiValued = false)
-    String location;
+
+    @Argument(index = 1, name = "urls", description = "Bundle URLs separated by whitespace", required = true, multiValued = true)
+    List<String> urls;
+
+    @Option(name = "-s", aliases = {"--start"}, description = "Start the bundle after installation", required = false, multiValued = false)
+    boolean start;
 
     private EventProducer eventProducer;
 
@@ -56,24 +61,30 @@ public class InstallBundleCommand extend
             return null;
         }
 
-        // get the name and version in the location MANIFEST
-        JarInputStream jarInputStream = new JarInputStream(new URL(location).openStream());
-        Manifest manifest = jarInputStream.getManifest();
-        String name = manifest.getMainAttributes().getValue("Bundle-SymbolicName");
-        String version = manifest.getMainAttributes().getValue("Bundle-Version");
-        jarInputStream.close();
-
-        // populate the cluster map
-        Map<String, BundleState> bundles = clusterManager.getMap(Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
-        BundleState state = new BundleState();
-        state.setLocation(location);
-        state.setStatus(BundleEvent.INSTALLED);
-        bundles.put(name + "/" + version, state);
-        
-        // broadcast the cluster event
-        RemoteBundleEvent event = new RemoteBundleEvent(name, version, location, BundleEvent.INSTALLED);
-        event.setSourceGroup(group);
-        eventProducer.produce(event);
+        for (String url : urls) {
+            // get the name and version in the location MANIFEST
+            JarInputStream jarInputStream = new JarInputStream(new URL(url).openStream());
+            Manifest manifest = jarInputStream.getManifest();
+            String name = manifest.getMainAttributes().getValue("Bundle-SymbolicName");
+            String version = manifest.getMainAttributes().getValue("Bundle-Version");
+            jarInputStream.close();
+
+            // populate the cluster map
+            Map<String, BundleState> bundles = clusterManager.getMap(Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
+            BundleState state = new BundleState();
+            state.setLocation(url);
+            if (start) {
+                state.setStatus(BundleEvent.STARTED);
+            } else {
+                state.setStatus(BundleEvent.INSTALLED);
+            }
+            bundles.put(name + "/" + version, state);
+
+            // broadcast the cluster event
+            RemoteBundleEvent event = new RemoteBundleEvent(name, version, url, BundleEvent.INSTALLED);
+            event.setSourceGroup(group);
+            eventProducer.produce(event);
+        }
 
         return null;
     }

Modified: karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ListBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ListBundleCommand.java?rev=1332248&r1=1332247&r2=1332248&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ListBundleCommand.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ListBundleCommand.java Mon Apr 30 15:39:21 2012
@@ -15,6 +15,7 @@ package org.apache.karaf.cellar.bundle.s
 
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
 import org.apache.karaf.cellar.bundle.BundleState;
 import org.apache.karaf.cellar.bundle.Constants;
 import org.apache.karaf.cellar.core.Configurations;
@@ -27,11 +28,15 @@ import java.util.Map;
 @Command(scope = "cluster", name = "bundle-list", description = "List the bundles assigned to a cluster group.")
 public class ListBundleCommand extends CellarCommandSupport {
 
-    protected static final String OUTPUT_FORMAT = "%-50s %-20s %-15s %-20s";
+    protected static final String HEADER_FORMAT = " %-11s  %s";
+    protected static final String OUTPUT_FORMAT = "[%-11s] %s";
 
     @Argument(index = 0, name = "group", description = "The cluster group name.", required = true, multiValued = false)
     String groupName;
 
+    @Option(name = "-l", aliases = {}, description = "Show the locations", required = false, multiValued = false)
+    boolean showLoc;
+
     @Override
     protected Object doExecute() throws Exception {
         // check if the group exists
@@ -47,7 +52,7 @@ public class ListBundleCommand extends C
             Map<String, BundleState> bundles = clusterManager.getMap(Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
             if (bundles != null && !bundles.isEmpty()) {
                 System.out.println(String.format("Bundles for cluster group " + groupName));
-                System.out.println(String.format(OUTPUT_FORMAT, "Name", "Version", "Status", "Location"));
+                System.out.println(String.format(HEADER_FORMAT, "State", "Name"));
                 for (String bundle : bundles.keySet()) {
                     String[] tokens = bundle.split("/");
                     String name = tokens[0];
@@ -80,10 +85,14 @@ public class ListBundleCommand extends C
                             status = "";
                             break;
                     }
-                    System.out.println(String.format(OUTPUT_FORMAT, name, version, status, state.getLocation()));
+                    if (showLoc) {
+                        System.out.println(String.format(OUTPUT_FORMAT, status, state.getLocation()));
+                    } else {
+                        System.out.println(String.format(OUTPUT_FORMAT, status, name + " (" + version + ")"));
+                    }
                 }
             } else {
-                System.err.println("No bundles found for cluster group: " + groupName);
+                System.err.println("No bundles found for cluster group " + groupName);
             }
         } finally {
             Thread.currentThread().setContextClassLoader(originalClassLoader);