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 2014/06/19 07:11:41 UTC
git commit: [KARAF-3051] Refactoring of the obr module to use Karaf
3.x syntax
Repository: karaf-cellar
Updated Branches:
refs/heads/master 010d7abff -> 5379aef34
[KARAF-3051] Refactoring of the obr module to use Karaf 3.x syntax
Project: http://git-wip-us.apache.org/repos/asf/karaf-cellar/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cellar/commit/5379aef3
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/5379aef3
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/5379aef3
Branch: refs/heads/master
Commit: 5379aef3499c01092a5fa9afc165af6341862322
Parents: 010d7ab
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Thu Jun 19 07:11:02 2014 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Thu Jun 19 07:11:02 2014 +0200
----------------------------------------------------------------------
obr/pom.xml | 9 ++++---
.../karaf/cellar/obr/ClusterObrBundleEvent.java | 16 ++++++++----
.../org/apache/karaf/cellar/obr/Constants.java | 2 --
.../karaf/cellar/obr/ObrBundleEventHandler.java | 15 +++++------
.../cellar/obr/management/CellarOBRMBean.java | 17 ++++++++++---
.../management/internal/CellarOBRMBeanImpl.java | 15 ++++++-----
.../cellar/obr/shell/ObrDeployCommand.java | 7 +++---
.../karaf/cellar/obr/shell/ObrListCommand.java | 26 +++++++++++---------
8 files changed, 66 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/pom.xml
----------------------------------------------------------------------
diff --git a/obr/pom.xml b/obr/pom.xml
index 132476d..23e5fde 100644
--- a/obr/pom.xml
+++ b/obr/pom.xml
@@ -62,14 +62,17 @@
</properties>
<dependencies>
-
- <!-- Cellar Core -->
+ <!-- Core dependencies -->
<dependency>
<groupId>org.apache.karaf.cellar</groupId>
<artifactId>org.apache.karaf.cellar.core</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.table</artifactId>
+ </dependency>
- <!-- OBR -->
+ <!-- OBR dependency -->
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.bundlerepository</artifactId>
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/ClusterObrBundleEvent.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/ClusterObrBundleEvent.java b/obr/src/main/java/org/apache/karaf/cellar/obr/ClusterObrBundleEvent.java
index 4222ed5..4d6d61d 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/ClusterObrBundleEvent.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/ClusterObrBundleEvent.java
@@ -21,20 +21,26 @@ import org.apache.karaf.cellar.core.event.Event;
public class ClusterObrBundleEvent extends Event {
private String bundleId;
- private int type;
+ private Boolean start;
+ private Boolean deployOptional;
- public ClusterObrBundleEvent(String bundleId, int type) {
+ public ClusterObrBundleEvent(String bundleId, boolean start, boolean deployOptional) {
super(bundleId);
this.bundleId = bundleId;
- this.type = type;
+ this.start = start;
+ this.deployOptional = deployOptional;
}
public String getBundleId() {
return this.bundleId;
}
- public int getType() {
- return this.type;
+ public boolean getStart() {
+ return this.start;
+ }
+
+ public boolean getDeployOptional() {
+ return this.deployOptional;
}
}
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/Constants.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/Constants.java b/obr/src/main/java/org/apache/karaf/cellar/obr/Constants.java
index 18cddff..9a170ff 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/Constants.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/Constants.java
@@ -27,6 +27,4 @@ public class Constants {
public static final int URL_ADD_EVENT_TYPE = 1;
public static final int URL_REMOVE_EVENT_TYPE = 0;
- public static final int BUNDLE_START_EVENT_TYPE = 1;
-
}
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java b/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
index 3e06b31..0d7f137 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
@@ -132,22 +132,23 @@ public class ObrBundleEventHandler extends ObrSupport implements EventHandler<Cl
}
String bundleId = event.getBundleId();
+ boolean deployOptional = event.getDeployOptional();
+ boolean start = event.getStart();
try {
if (isAllowed(event.getSourceGroup(), Constants.BUNDLES_CONFIG_CATEGORY, bundleId, EventType.INBOUND)) {
Resolver resolver = obrService.resolver();
String[] target = getTarget(bundleId);
Resource resource = selectNewestVersion(searchRepository(target[0], target[1]));
- if (resource != null) {
- resolver.add(resource);
- } else {
+ if (resource == null) {
LOGGER.warn("CELLAR OBR: bundle {} unknown", target[0]);
+ return;
}
+ resolver.add(resource);
+
if ((resolver.getAddedResources() != null) &&
(resolver.getAddedResources().length > 0)) {
- if (resolver.resolve()) {
- if (event.getType() == Constants.BUNDLE_START_EVENT_TYPE)
- resolver.deploy(Resolver.START);
- else resolver.deploy(0);
+ if (resolver.resolve(deployOptional ? 0 : Resolver.NO_OPTIONAL_RESOURCES)) {
+ resolver.deploy(start ? Resolver.START : 0);
}
} else {
Reason[] reqs = resolver.getUnsatisfiedRequirements();
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/management/CellarOBRMBean.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/management/CellarOBRMBean.java b/obr/src/main/java/org/apache/karaf/cellar/obr/management/CellarOBRMBean.java
index 915e99c..6e9cee0 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/management/CellarOBRMBean.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/management/CellarOBRMBean.java
@@ -28,7 +28,7 @@ public interface CellarOBRMBean {
* @return the list of OBR URLs.
* @throws Exception in case of retrieval failure.
*/
- List<String> listUrls(String groupName) throws Exception;
+ List<String> getUrls(String groupName) throws Exception;
/**
* List the OBR bundles in a cluster group.
@@ -37,7 +37,7 @@ public interface CellarOBRMBean {
* @return the list of OBR bundles.
* @throws Exception in case of retrieval failure.
*/
- TabularData listBundles(String groupName) throws Exception;
+ TabularData getBundles(String groupName) throws Exception;
/**
* Add an OBR URL in a cluster group.
@@ -64,6 +64,17 @@ public interface CellarOBRMBean {
* @param bundleId the bundle ID.
* @throws Exception in case of deploy failure.
*/
- void deploy(String groupName, String bundleId) throws Exception;
+ void deployBundle(String groupName, String bundleId) throws Exception;
+
+ /**
+ * Deploy an OBR bundle in a cluster group.
+ *
+ * @param groupName the cluster group name.
+ * @param bundleId the bundle ID.
+ * @param start true to start the bundle, false else.
+ * @param deployOptional true to set the deployment as optional, false else.
+ * @throws Exception
+ */
+ void deployBundle(String groupName, String bundleId, boolean start, boolean deployOptional) throws Exception;
}
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/management/internal/CellarOBRMBeanImpl.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/management/internal/CellarOBRMBeanImpl.java b/obr/src/main/java/org/apache/karaf/cellar/obr/management/internal/CellarOBRMBeanImpl.java
index 2a2ac69..f374ae0 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/management/internal/CellarOBRMBeanImpl.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/management/internal/CellarOBRMBeanImpl.java
@@ -50,7 +50,7 @@ public class CellarOBRMBeanImpl extends StandardMBean implements CellarOBRMBean
}
@Override
- public List<String> listUrls(String groupName) throws Exception {
+ public List<String> getUrls(String groupName) throws Exception {
// check if the group exists
Group group = groupManager.findGroupByName(groupName);
if (group == null) {
@@ -66,7 +66,7 @@ public class CellarOBRMBeanImpl extends StandardMBean implements CellarOBRMBean
}
@Override
- public TabularData listBundles(String groupName) throws Exception {
+ public TabularData getBundles(String groupName) throws Exception {
// check if the group exists
Group group = groupManager.findGroupByName(groupName);
if (group == null) {
@@ -186,7 +186,7 @@ public class CellarOBRMBeanImpl extends StandardMBean implements CellarOBRMBean
}
@Override
- public void deploy(String groupName, String bundleId) throws Exception {
+ public void deployBundle(String groupName, String bundleId, boolean start, boolean deployOptional) throws Exception {
// check if the group exists
Group group = groupManager.findGroupByName(groupName);
if (group == null) {
@@ -208,13 +208,16 @@ public class CellarOBRMBeanImpl extends StandardMBean implements CellarOBRMBean
}
// broadcast a cluster event
- int type = 0;
- ClusterObrBundleEvent event = new ClusterObrBundleEvent(bundleId, type);
- event.setForce(true);
+ ClusterObrBundleEvent event = new ClusterObrBundleEvent(bundleId, start, deployOptional);
event.setSourceGroup(group);
eventProducer.produce(event);
}
+ @Override
+ public void deployBundle(String groupName, String bundleId) throws Exception {
+ this.deployBundle(groupName, bundleId, false, false);
+ }
+
public ClusterManager getClusterManager() {
return clusterManager;
}
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrDeployCommand.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrDeployCommand.java b/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrDeployCommand.java
index 7c28539..7c39b66 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrDeployCommand.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrDeployCommand.java
@@ -35,6 +35,9 @@ public class ObrDeployCommand extends ObrCommandSupport {
@Option(name = "-s", aliases = { "--start" }, description = "Start the deployed bundles.", required = false, multiValued = false)
boolean start = false;
+ @Option(name = "-d", aliases = { "--deployOptional" }, description = "Deploy optional bundles", required = false, multiValued = false)
+ boolean deployOptional = false;
+
private EventProducer eventProducer;
@Override
@@ -59,9 +62,7 @@ public class ObrDeployCommand extends ObrCommandSupport {
}
// broadcast a cluster event
- int type = 0;
- if (start) type = Constants.BUNDLE_START_EVENT_TYPE;
- ClusterObrBundleEvent event = new ClusterObrBundleEvent(bundleId, type);
+ ClusterObrBundleEvent event = new ClusterObrBundleEvent(bundleId, start, deployOptional);
event.setSourceGroup(group);
eventProducer.produce(event);
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5379aef3/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrListCommand.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrListCommand.java b/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrListCommand.java
index 5cba73b..848ade1 100644
--- a/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrListCommand.java
+++ b/obr/src/main/java/org/apache/karaf/cellar/obr/shell/ObrListCommand.java
@@ -20,6 +20,8 @@ import org.apache.karaf.cellar.obr.Constants;
import org.apache.karaf.cellar.obr.ObrBundleInfo;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.table.ShellTable;
import java.util.Set;
@@ -29,6 +31,9 @@ public class ObrListCommand extends CellarCommandSupport {
@Argument(index = 0, name = "group", description = "The cluster group name", required = true, multiValued = false)
String groupName;
+ @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
+ boolean noFormat;
+
@Override
public Object doExecute() {
// check if the group exists
@@ -42,20 +47,17 @@ public class ObrListCommand extends CellarCommandSupport {
try {
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
Set<ObrBundleInfo> clusterBundles = clusterManager.getSet(Constants.BUNDLES_DISTRIBUTED_SET_NAME + Configurations.SEPARATOR + groupName);
- int maxPName = 4;
- int maxSName = 13;
- int maxVersion = 7;
- for (ObrBundleInfo bundle : clusterBundles) {
- maxPName = Math.max(maxPName, emptyIfNull(bundle.getPresentationName()).length());
- maxSName = Math.max(maxSName, emptyIfNull(bundle.getSymbolicName()).length());
- maxVersion = Math.max(maxVersion, emptyIfNull(bundle.getVersion()).length());
- }
- String formatHeader = " %-" + maxPName + "s %-" + maxSName + "s %-" + maxVersion + "s";
- String formatLine = "[%-" + maxPName + "s] [%-" + maxSName + "s] [%-" + maxVersion + "s]";
- System.out.println(String.format(formatHeader, "NAME", "SYMBOLIC NAME", "VERSION"));
+
+ ShellTable table = new ShellTable();
+ table.column("Name");
+ table.column("Symbolic Name");
+ table.column("Version");
+
for (ObrBundleInfo bundle : clusterBundles) {
- System.out.println(String.format(formatLine, emptyIfNull(bundle.getPresentationName()), emptyIfNull(bundle.getSymbolicName()), emptyIfNull(bundle.getVersion())));
+ table.addRow().addContent(emptyIfNull(bundle.getPresentationName()), emptyIfNull(bundle.getSymbolicName()), emptyIfNull(bundle.getVersion()));
}
+
+ table.print(System.out, !noFormat);
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}