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/06/18 10:32:10 UTC

karaf git commit: [KARAF-3520] implement ignoreServiceReqs using isEffective in SubsystemResolveContext

Repository: karaf
Updated Branches:
  refs/heads/master 2466994ec -> 29ad88986


[KARAF-3520] implement ignoreServiceReqs using isEffective in SubsystemResolveContext


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

Branch: refs/heads/master
Commit: 29ad8898689e041ef2ed08303ff1abc1c64e2c18
Parents: 2466994
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Thu Jun 18 10:31:57 2015 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Thu Jun 18 10:31:57 2015 +0200

----------------------------------------------------------------------
 .../karaf/features/internal/osgi/Activator.java  |  4 ++--
 .../internal/region/SubsystemResolveContext.java |  9 ++++++++-
 .../internal/resolver/ResourceBuilder.java       | 19 -------------------
 3 files changed, 10 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/29ad8898/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java
index cf18497..954ebce 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java
@@ -34,10 +34,10 @@ import org.apache.karaf.features.FeaturesListener;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.internal.management.FeaturesServiceMBeanImpl;
 import org.apache.karaf.features.internal.region.DigraphHelper;
+import org.apache.karaf.features.internal.region.SubsystemResolveContext;
 import org.apache.karaf.features.internal.repository.AggregateRepository;
 import org.apache.karaf.features.internal.repository.JsonRepository;
 import org.apache.karaf.features.internal.repository.XmlRepository;
-import org.apache.karaf.features.internal.resolver.ResourceBuilder;
 import org.apache.karaf.features.internal.service.BootFeaturesInstaller;
 import org.apache.karaf.features.internal.service.EventAdminListener;
 import org.apache.karaf.features.internal.service.FeatureFinder;
@@ -180,7 +180,7 @@ public class Activator extends BaseActivator {
         int scheduleMaxRun = getInt("scheduleMaxRun", FeaturesService.DEFAULT_SCHEDULE_MAX_RUN);
         String blacklisted = getString("blacklisted", new File(System.getProperty("karaf.etc"), "blacklisted.properties").toURI().toString());
         boolean ignoreServiceReqs = getBoolean("ignoreServiceReqs", true);
-        ResourceBuilder.setIgnoreServiceReqs(ignoreServiceReqs);
+        SubsystemResolveContext.setIgnoreServiceReqs(ignoreServiceReqs);
         StateStorage stateStorage = new StateStorage() {
             @Override
             protected InputStream getInputStream() throws IOException {

http://git-wip-us.apache.org/repos/asf/karaf/blob/29ad8898/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 de990f4..c25d9f4 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.RegionDigraph;
 import org.eclipse.equinox.region.RegionFilter;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.namespace.service.ServiceNamespace;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Requirement;
 import org.osgi.resource.Resource;
@@ -68,6 +69,7 @@ public class SubsystemResolveContext extends ResolveContext {
     private final Repository repository;
     private final Repository globalRepository;
     private final Downloader downloader;
+    private static boolean ignoreServiceReqs = true; 
 
     public SubsystemResolveContext(Subsystem root, RegionDigraph digraph, Repository globalRepository, Downloader downloader) throws BundleException {
         this.root = root;
@@ -86,6 +88,10 @@ public class SubsystemResolveContext extends ResolveContext {
         //  prefer that one over any capabilities from other resources
         findMandatory(root);
     }
+    
+    public static void setIgnoreServiceReqs(boolean ignoreServiceReqs) {
+        SubsystemResolveContext.ignoreServiceReqs = ignoreServiceReqs;
+    }
 
     public Repository getRepository() {
         return repository;
@@ -205,7 +211,8 @@ public class SubsystemResolveContext extends ResolveContext {
 
     @Override
     public boolean isEffective(Requirement requirement) {
-        return true;
+        boolean isServiceReq = ServiceNamespace.SERVICE_NAMESPACE.equals(requirement.getNamespace());
+        return !ignoreServiceReqs || !isServiceReq;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/karaf/blob/29ad8898/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
index 707c594..ec3b0e3 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
@@ -56,15 +56,10 @@ public final class ResourceBuilder {
     private static final int DELIMITER = 2;
     private static final int STARTQUOTE = 4;
     private static final int ENDQUOTE = 8;
-    private static boolean ignoreServiceReqs = true;
 
     private ResourceBuilder() {
     }
     
-    public static void setIgnoreServiceReqs(boolean ignoreServiceReqs) {
-        ResourceBuilder.ignoreServiceReqs = ignoreServiceReqs;
-    }
-
     public static ResourceImpl build(String uri, Map<String, String> headerMap) throws BundleException {
         return build(new ResourceImpl(), uri, headerMap);
     }
@@ -221,10 +216,6 @@ public final class ResourceBuilder {
             requireReqs.addAll(reqs);
         }
         
-        if (ignoreServiceReqs) {
-            requireReqs = filterServiceReqs(requireReqs);
-        }
-
         // Combine all capabilities.
         resource.addCapabilities(exportCaps);
         resource.addCapabilities(provideCaps);
@@ -239,16 +230,6 @@ public final class ResourceBuilder {
         return resource;
     }
 
-    private static List<Requirement> filterServiceReqs(List<Requirement> requireReqs) {
-        ArrayList<Requirement> filtered = new ArrayList<Requirement>();
-        for (Requirement req : requireReqs) {
-            if (!ServiceNamespace.SERVICE_NAMESPACE.equals(req.getNamespace())) {
-                filtered.add(req);
-            }
-        }
-        return filtered;
-    }
-
     public static List<Requirement> parseRequirement(Resource resource, String requirement) throws BundleException {
         List<ParsedHeaderClause> requireClauses = parseStandardHeader(requirement);
         requireClauses = normalizeRequireCapabilityClauses(requireClauses);