Repository: karaf
Updated Branches:
  refs/heads/karaf-2.x f369535c1 -> b9275299c


KARAF-3448 - Deal with feature version when checking conditions


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b9275299
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b9275299
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b9275299

Branch: refs/heads/karaf-2.x
Commit: b9275299cb968c4a70bd844715d677fbcc31d4db
Parents: f369535
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Thu Jan 21 14:37:14 2016 +0100
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Thu Jan 21 14:37:14 2016 +0100

----------------------------------------------------------------------
 .../features/internal/FeaturesServiceImpl.java    | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b9275299/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
index 65f48fe..82be09f 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
@@ -1776,12 +1776,26 @@ public class FeaturesServiceImpl implements 
FeaturesService {
     private boolean dependenciesSatisfied(List<Feature> dependencies, 
Set<Feature> installed) throws Exception {
        boolean satisfied = true;
        for (Feature dep : dependencies) {
-           Feature f = getFeature(dep.getName(), dep.getVersion());
-           if (f != null && !installed.contains(f)) {
+           if (!featureInstalled(dep.getName(), dep.getVersion(), installed)) {
                satisfied = false;
            }
        }
        return satisfied;
     }
 
+    private boolean featureInstalled(String name, String version, Set<Feature> 
installed) {
+        for (Feature install : installed) {
+            if (version.equals(FeatureImpl.DEFAULT_VERSION)) {
+                if (name.equals(install.getName())) {
+                    return true;
+                }
+            } else {
+                if (name.equals(install.getName()) && 
version.equals(install.getVersion())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
 }

Reply via email to