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