[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/4e0909e5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/4e0909e5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/4e0909e5

Branch: refs/heads/master
Commit: 4e0909e5f7b71a5387b69cc644ac974ad061581a
Parents: 20013f8
Author: Christian Schneider <[email protected]>
Authored: Wed Jun 17 16:35:27 2015 +0200
Committer: Christian Schneider <[email protected]>
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/4e0909e5/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/4e0909e5/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);

Reply via email to