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