Need to wrap requirments and capabilities in wire when they come from
fragments. (FELIX-2858)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1080242 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java b/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
index 453b080..e061ad9 100644
--- a/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
@@ -479,8 +479,24 @@
// Use wires to get actual requirements and satisfying capabilities.
for (Wire wire : module.getWires())
{
- reqs.add(wire.getRequirement());
- caps.add(wire.getCapability());
+ // Wrap the requirement as a hosted requirement
+ // if it comes from a fragment, since we will need
+ // to know the host.
+ Requirement r = wire.getRequirement();
+ if (!r.getModule().equals(wire.getImporter()))
+ {
+ r = new WrappedRequirement(wire.getImporter(), r);
+ }
+ // Wrap the capability as a hosted capability
+ // if it comes from a fragment, since we will need
+ // to know the host.
+ Capability c = wire.getCapability();
+ if (!c.getModule().equals(wire.getExporter()))
+ {
+ c = new WrappedCapability(wire.getExporter(), c);
+ }
+ reqs.add(r);
+ caps.add(c);
}
// Since the module is resolved, it could be dynamically importing,
diff --git a/framework/src/main/java/org/apache/felix/framework/resolver/WrappedModule.java b/framework/src/main/java/org/apache/felix/framework/resolver/WrappedModule.java
index 59c9b7b..5daacaa 100644
--- a/framework/src/main/java/org/apache/felix/framework/resolver/WrappedModule.java
+++ b/framework/src/main/java/org/apache/felix/framework/resolver/WrappedModule.java
@@ -137,6 +137,11 @@
return m_cachedRequirements;
}
+ public String toString()
+ {
+ return m_module.getId();
+ }
+
public Map getHeaders()
{
throw new UnsupportedOperationException("Not supported yet.");