You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2015/04/14 12:19:40 UTC
karaf git commit: [KARAF-2952] Show feature state in feature:list
Repository: karaf
Updated Branches:
refs/heads/master 733730bf8 -> 8c901d311
[KARAF-2952] Show feature state in feature:list
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/8c901d31
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/8c901d31
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/8c901d31
Branch: refs/heads/master
Commit: 8c901d3114db4e50b37946fd77efe6ec2edcaee8
Parents: 733730b
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Apr 14 12:19:17 2015 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Apr 14 12:19:17 2015 +0200
----------------------------------------------------------------------
.../karaf/features/command/ListFeaturesCommand.java | 4 ++--
.../features/command/ListFeaturesCommandTest.java | 4 +++-
.../main/java/org/apache/karaf/features/Feature.java | 3 ---
.../java/org/apache/karaf/features/FeatureState.java | 1 +
.../org/apache/karaf/features/FeaturesService.java | 2 ++
.../features/internal/region/SubsystemResolver.java | 9 +++++++++
.../internal/service/FeaturesServiceImpl.java | 14 ++++++++++++++
.../apache/karaf/features/internal/service/State.java | 2 ++
8 files changed, 33 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
index 79a2447..fac8003 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
@@ -55,7 +55,7 @@ public class ListFeaturesCommand extends FeaturesCommandSupport {
table.column("Name");
table.column("Version");
table.column("Required");
- table.column("Installed");
+ table.column("State");
table.column("Repository");
table.column("Description").maxSize(50);
table.emptyTableText(onlyInstalled ? "No features installed" : "No features available");
@@ -83,7 +83,7 @@ public class ListFeaturesCommand extends FeaturesCommandSupport {
f.getName(),
f.getVersion(),
featuresService.isRequired(f) ? "x" : "",
- featuresService.isInstalled(f) ? "x" : "",
+ featuresService.getState(f.getId()),
r.getName(),
f.getDescription());
if (isInstalledViaDeployDir(r.getName())) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/command/src/test/java/org/apache/karaf/features/command/ListFeaturesCommandTest.java
----------------------------------------------------------------------
diff --git a/features/command/src/test/java/org/apache/karaf/features/command/ListFeaturesCommandTest.java b/features/command/src/test/java/org/apache/karaf/features/command/ListFeaturesCommandTest.java
index f3bb619..18ca254 100644
--- a/features/command/src/test/java/org/apache/karaf/features/command/ListFeaturesCommandTest.java
+++ b/features/command/src/test/java/org/apache/karaf/features/command/ListFeaturesCommandTest.java
@@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeatureState;
import org.apache.karaf.features.FeaturesService;
import org.apache.karaf.features.Repository;
import org.easymock.EasyMock;
@@ -69,10 +70,11 @@ public class ListFeaturesCommandTest {
EasyMock.expect(repo.getFeatures()).andReturn(new Feature[] { feature });
EasyMock.expect(feature.isHidden()).andReturn(true).anyTimes();
EasyMock.expect(feature.getName()).andReturn("feature");
+ EasyMock.expect(feature.getId()).andReturn("feature/1.0.0");
+ EasyMock.expect(service.getState(EasyMock.eq("feature/1.0.0"))).andReturn(FeatureState.Started);
EasyMock.expect(feature.getDescription()).andReturn("description");
EasyMock.expect(feature.getVersion()).andReturn("1.0.0");
EasyMock.expect(service.isRequired(feature)).andReturn(true);
- EasyMock.expect(service.isInstalled(feature)).andReturn(true);
EasyMock.expect(repo.getName()).andReturn("repository").anyTimes();
EasyMock.replay(service, repo, feature);
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/Feature.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/Feature.java b/features/core/src/main/java/org/apache/karaf/features/Feature.java
index 523c9ff..d2c9415 100644
--- a/features/core/src/main/java/org/apache/karaf/features/Feature.java
+++ b/features/core/src/main/java/org/apache/karaf/features/Feature.java
@@ -17,9 +17,6 @@
package org.apache.karaf.features;
import java.util.List;
-import java.util.Map;
-
-import org.apache.karaf.features.internal.model.Config;
/**
* A feature is a list of bundles associated identified by its name.
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/FeatureState.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/FeatureState.java b/features/core/src/main/java/org/apache/karaf/features/FeatureState.java
index d08e2f4..f1cf90a 100644
--- a/features/core/src/main/java/org/apache/karaf/features/FeatureState.java
+++ b/features/core/src/main/java/org/apache/karaf/features/FeatureState.java
@@ -17,6 +17,7 @@
package org.apache.karaf.features;
public enum FeatureState {
+ Uninstalled,
Installed,
Resolved,
Started
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
index 7352268..b9bc831 100644
--- a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
+++ b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
@@ -144,4 +144,6 @@ public interface FeaturesService {
void unregisterListener(FeaturesListener listener);
+ FeatureState getState(String featureId);
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java
index 78b1833..0402c12 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java
@@ -280,6 +280,10 @@ public class SubsystemResolver {
return bundlesPerRegions;
}
+ /**
+ *
+ * @return map of bundles and the region they are deployed in
+ */
public Map<Resource, String> getBundles() {
if (bundles == null) {
String filter = String.format("(&(%s=*)(|(%s=%s)(%s=%s)))",
@@ -308,6 +312,11 @@ public class SubsystemResolver {
return features;
}
+ /**
+ *
+ * @param resourceFilter
+ * @return map from resource to region name
+ */
private Map<Resource, String> getResourceMapping(SimpleFilter resourceFilter) {
Map<String, String> flats = getFlatSubsystemsMap();
Map<Resource, List<Wire>> wiring = getWiring();
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
index 77cda90..f7a897b 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
@@ -695,6 +695,20 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
return installed != null && installed.contains(id);
}
}
+
+ @Override
+ public FeatureState getState(String featureId) {
+ String id = normalize(featureId);
+ synchronized (lock) {
+ Set<String> installed = state.installedFeatures.get(ROOT_REGION);
+ if (!installed.contains(id)) {
+ return FeatureState.Uninstalled;
+ } else {
+ String stateSt = state.stateFeatures.get(ROOT_REGION).get(id);
+ return FeatureState.valueOf(stateSt);
+ }
+ }
+ }
@Override
public boolean isRequired(Feature f) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/8c901d31/features/core/src/main/java/org/apache/karaf/features/internal/service/State.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/State.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/State.java
index a059b0b..701d522 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/State.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/State.java
@@ -30,6 +30,8 @@ public class State {
public final Set<String> repositories = new TreeSet<>();
public final Map<String, Set<String>> requirements = new HashMap<>();
public final Map<String, Set<String>> installedFeatures = new HashMap<>();
+
+ // State of features by region and feature id (name/version)
public final Map<String, Map<String, String>> stateFeatures = new HashMap<>();
public final Map<String, Set<Long>> managedBundles = new HashMap<>();
public final Map<Long, Long> bundleChecksums = new HashMap<>();