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