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/10/29 21:25:40 UTC
svn commit: r1403481 - in /karaf/cellar/branches/cellar-2.2.x: features/
features/src/main/java/org/apache/karaf/cellar/features/shell/
management/src/main/java/org/apache/karaf/cellar/management/internal/
Author: jbonofre
Date: Mon Oct 29 20:25:39 2012
New Revision: 1403481
URL: http://svn.apache.org/viewvc?rev=1403481&view=rev
Log:
[KARAF-1982] Cellar features handler now updates the bundles distributed map
Modified:
karaf/cellar/branches/cellar-2.2.x/features/pom.xml
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/FeatureCommandSupport.java
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
Modified: karaf/cellar/branches/cellar-2.2.x/features/pom.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/pom.xml?rev=1403481&r1=1403480&r2=1403481&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/features/pom.xml (original)
+++ karaf/cellar/branches/cellar-2.2.x/features/pom.xml Mon Oct 29 20:25:39 2012
@@ -37,6 +37,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<osgi.import>
org.apache.karaf.cellar.core*;version="${project.version}",
+ org.apache.karaf.cellar.bundle*;version="${project.version}",
org.apache.felix.service.command,
org.apache.felix.gogo.commands,
org.apache.karaf.shell.console;version="[2.2,3)",
@@ -58,6 +59,10 @@
<groupId>org.apache.karaf.cellar</groupId>
<artifactId>org.apache.karaf.cellar.core</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.karaf.cellar</groupId>
+ <artifactId>org.apache.karaf.cellar.bundle</artifactId>
+ </dependency>
<!-- Configuration Admin -->
<dependency>
Modified: karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/FeatureCommandSupport.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/FeatureCommandSupport.java?rev=1403481&r1=1403480&r2=1403481&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/FeatureCommandSupport.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/FeatureCommandSupport.java Mon Oct 29 20:25:39 2012
@@ -13,6 +13,7 @@
*/
package org.apache.karaf.cellar.features.shell;
+import org.apache.karaf.cellar.bundle.BundleState;
import org.apache.karaf.cellar.core.CellarSupport;
import org.apache.karaf.cellar.core.Configurations;
import org.apache.karaf.cellar.core.Group;
@@ -20,12 +21,15 @@ import org.apache.karaf.cellar.core.even
import org.apache.karaf.cellar.core.shell.CellarCommandSupport;
import org.apache.karaf.cellar.features.Constants;
import org.apache.karaf.cellar.features.FeatureInfo;
+import org.apache.karaf.features.BundleInfo;
import org.apache.karaf.features.Feature;
import org.apache.karaf.features.FeaturesService;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
import java.util.Map;
/**
@@ -57,7 +61,7 @@ public abstract class FeatureCommandSupp
if (group == null || group.getNodes().isEmpty()) {
FeatureInfo info = new FeatureInfo(feature, version);
Map<FeatureInfo, Boolean> features = clusterManager.getMap(Constants.FEATURES + Configurations.SEPARATOR + groupName);
- //1st check the existing configuration
+ // check the existing configuration
if (version == null || (version.trim().length() < 1)) {
for (FeatureInfo f : features.keySet()) {
if (f.getName().equals(feature)) {
@@ -67,7 +71,7 @@ public abstract class FeatureCommandSupp
}
}
- //2nd check the Features Service.
+ // check the Features Service.
try {
for (Feature f : featuresService.listFeatures()) {
if (f.getName().equals(feature)) {
@@ -81,6 +85,19 @@ public abstract class FeatureCommandSupp
if (info.getVersion() != null && (info.getVersion().trim().length() > 0)) {
features.put(info, status);
+ try {
+ // update the distributed bundles map
+ List<BundleInfo> bundles = featuresService.getFeature(info.getName(), info.getVersion()).getBundles();
+ Map<String, BundleState> bundlesMap = clusterManager.getMap(org.apache.karaf.cellar.bundle.Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
+ for (BundleInfo bundle : bundles) {
+ BundleState state = new BundleState();
+ state.setLocation(bundle.getLocation());
+ state.setStatus(BundleEvent.STARTED);
+ bundlesMap.put(bundle.toString(), state);
+ }
+ } catch (Exception e) {
+ LOGGER.warn("Can't update the distributed bundles map", e);
+ }
result = Boolean.TRUE;
}
}
Modified: karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java?rev=1403481&r1=1403480&r2=1403481&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java Mon Oct 29 20:25:39 2012
@@ -13,6 +13,7 @@
*/
package org.apache.karaf.cellar.management.internal;
+import org.apache.karaf.cellar.bundle.BundleState;
import org.apache.karaf.cellar.core.*;
import org.apache.karaf.cellar.core.control.SwitchStatus;
import org.apache.karaf.cellar.core.event.EventProducer;
@@ -23,6 +24,7 @@ import org.apache.karaf.cellar.features.
import org.apache.karaf.cellar.features.RemoteRepositoryEvent;
import org.apache.karaf.cellar.management.CellarFeaturesMBean;
import org.apache.karaf.features.*;
+import org.osgi.framework.BundleEvent;
import org.osgi.service.cm.ConfigurationAdmin;
import javax.management.NotCompliantMBeanException;
@@ -141,6 +143,20 @@ public class CellarFeaturesMBeanImpl ext
// update the distributed map
distributedFeatures.put(feature, true);
+ // update the bundle distributed map
+ try {
+ // update the distributed bundles map
+ List<BundleInfo> bundles = featuresService.getFeature(feature.getName(), version).getBundles();
+ Map<String, BundleState> bundlesMap = clusterManager.getMap(org.apache.karaf.cellar.bundle.Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
+ for (BundleInfo bundle : bundles) {
+ BundleState state = new BundleState();
+ state.setLocation(bundle.getLocation());
+ state.setStatus(BundleEvent.STARTED);
+ bundlesMap.put(bundle.toString(), state);
+ }
+ } catch (Exception e) {
+ // ignore
+ }
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}