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/17 16:35:57 UTC

karaf git commit: [KARAF-3520] Adding switch ignoreServiceReqs

Repository: karaf
Updated Branches:
  refs/heads/master 2ef4efd6a -> 03be1aef9


[KARAF-3520] Adding switch ignoreServiceReqs


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

Branch: refs/heads/master
Commit: 03be1aef98124fa084b59d3a8c4ab573e64be881
Parents: 2ef4efd
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Jun 17 16:35:27 2015 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Jun 17 16:35:38 2015 +0200

----------------------------------------------------------------------
 .../karaf/features/internal/osgi/Activator.java |  3 +++
 .../internal/resolver/ResourceBuilder.java      | 20 +++++++++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/03be1aef/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 bfa7ddb..cf18497 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
@@ -37,6 +37,7 @@ import org.apache.karaf.features.internal.region.DigraphHelper;
 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;
@@ -178,6 +179,8 @@ public class Activator extends BaseActivator {
         long scheduleDelay = getLong("scheduleDelay", FeaturesService.DEFAULT_SCHEDULE_DELAY);
         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);
         StateStorage stateStorage = new StateStorage() {
             @Override
             protected InputStream getInputStream() throws IOException {

http://git-wip-us.apache.org/repos/asf/karaf/blob/03be1aef/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 0dbf4e2..707c594 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,10 +56,14 @@ 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);
@@ -216,6 +220,10 @@ public final class ResourceBuilder {
             List<Requirement> reqs = convertImportService(importServices, resource);
             requireReqs.addAll(reqs);
         }
+        
+        if (ignoreServiceReqs) {
+            requireReqs = filterServiceReqs(requireReqs);
+        }
 
         // Combine all capabilities.
         resource.addCapabilities(exportCaps);
@@ -231,6 +239,16 @@ 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);