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