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);