[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) {
