[KARAF-3793] Another fix for optional features

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

Branch: refs/heads/master
Commit: 0ec4bbeadff42bc16fa38b13a456209905901950
Parents: c88f1c5
Author: Guillaume Nodet <[email protected]>
Authored: Tue Jun 23 11:41:40 2015 +0200
Committer: Guillaume Nodet <[email protected]>
Committed: Tue Jun 23 11:41:40 2015 +0200

----------------------------------------------------------------------
 .../features/standard/src/main/feature/feature.xml      |  1 -
 .../internal/region/SubsystemResolveContext.java        | 12 +++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/0ec4bbea/assemblies/features/standard/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/standard/src/main/feature/feature.xml 
b/assemblies/features/standard/src/main/feature/feature.xml
index f0aabf6..8628795 100644
--- a/assemblies/features/standard/src/main/feature/feature.xml
+++ b/assemblies/features/standard/src/main/feature/feature.xml
@@ -342,7 +342,6 @@
 
     <feature name="http" version="${project.version}" 
description="Implementation of the OSGI HTTP Service">
         <feature>pax-http</feature>
-        <feature>pax-http-jetty</feature>
         <bundle 
start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.core/${project.version}</bundle>
     </feature>
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/0ec4bbea/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolveContext.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolveContext.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolveContext.java
index 704db13..0a8405f 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolveContext.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolveContext.java
@@ -38,6 +38,7 @@ import org.eclipse.equinox.region.Region;
 import org.eclipse.equinox.region.RegionDigraph;
 import org.eclipse.equinox.region.RegionFilter;
 import org.osgi.framework.BundleException;
+import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.namespace.service.ServiceNamespace;
 import org.osgi.resource.Capability;
@@ -108,7 +109,7 @@ public class SubsystemResolveContext extends ResolveContext 
{
             for (Resource res : new ArrayList<>(mandatory)) {
                 // Check mandatory requirements of mandatory resources
                 for (Requirement req : res.getRequirements(null)) {
-                    if (isOptional(req)) {
+                    if (isOptional(req) || isDynamic(req)) {
                         continue;
                     }
                     List<Capability> caps = findProviders(req);
@@ -129,7 +130,7 @@ public class SubsystemResolveContext extends ResolveContext 
{
                                 mand.add(r);
                             } else {
                                 for (Requirement req2 : 
r.getRequirements(null)) {
-                                    if 
(!IDENTITY_NAMESPACE.equals(req2.getNamespace()) || !isOptional(req2)) {
+                                    if 
(!IDENTITY_NAMESPACE.equals(req2.getNamespace()) || isOptional(req2) || 
isDynamic(req2)) {
                                         continue;
                                     }
                                     List<Capability> caps2 = 
findProviders(req2);
@@ -155,7 +156,12 @@ public class SubsystemResolveContext extends 
ResolveContext {
 
     static boolean isOptional(Requirement req) {
         String resolution = 
req.getDirectives().get(REQUIREMENT_RESOLUTION_DIRECTIVE);
-        return RESOLUTION_OPTIONAL.equalsIgnoreCase(resolution);
+        return RESOLUTION_OPTIONAL.equals(resolution);
+    }
+
+    static boolean isDynamic(Requirement req) {
+        String resolution = 
req.getDirectives().get(REQUIREMENT_RESOLUTION_DIRECTIVE);
+        return PackageNamespace.RESOLUTION_DYNAMIC.equals(resolution);
     }
 
     void prepare(Subsystem subsystem) {

Reply via email to