diff --git a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
index 4fa2d0b..4a3ee90 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -29,9 +29,11 @@
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.StringTokenizer;
+
 import org.osgi.framework.namespace.BundleNamespace;
 import org.osgi.framework.namespace.ExecutionEnvironmentNamespace;
 import org.osgi.framework.namespace.HostNamespace;
+import org.osgi.framework.namespace.IdentityNamespace;
 import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Namespace;
@@ -1725,11 +1727,28 @@
                         if (!cand.getNamespace().startsWith("osgi.wiring.")
                             || !resource.equals(cand.getResource()))
                         {
+                            // If we don't already have wires for the candidate,
+                            // then recursively populate them.
                             if (!rc.getWirings().containsKey(cand.getResource()))
                             {
-                                populateWireMap(rc, cand.getResource(),
+                                // Need to special case the candidate for identity
+                                // capabilities since it may be from a fragment and
+                                // we don't want to populate wires for the fragment,
+                                // but rather the host to which it is attached.
+                                Resource targetCand = cand.getResource();
+                                if (IdentityNamespace.IDENTITY_NAMESPACE.equals(cand.getNamespace())
+                                    && Util.isFragment(targetCand))
+                                {
+                                    targetCand = allCandidates.getCandidates(
+                                        targetCand.getRequirements(HostNamespace.HOST_NAMESPACE).get(0))
+                                            .iterator().next().getResource();
+                                    targetCand = allCandidates.getWrappedHost(targetCand);
+                                }
+
+                                populateWireMap(rc, targetCand,
                                     resourcePkgMap, wireMap, allCandidates);
                             }
+
                             Wire wire = new WireImpl(
                                 unwrappedResource,
                                 getDeclaredRequirement(req),
diff --git a/resolver/src/main/java/org/apache/felix/resolver/test/IdentityCapability.java b/resolver/src/main/java/org/apache/felix/resolver/test/IdentityCapability.java
index 033efdb..adcd858 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/test/IdentityCapability.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/test/IdentityCapability.java
@@ -20,6 +20,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+
 import org.osgi.framework.namespace.IdentityNamespace;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Resource;
@@ -30,12 +31,13 @@
     private final Map<String, String> m_dirs;
     private final Map<String, Object> m_attrs;
 
-    public IdentityCapability(Resource resource, String name)
+    public IdentityCapability(Resource resource, String name, String type)
     {
         m_resource = resource;
         m_dirs = new HashMap<String, String>();
         m_attrs = new HashMap<String, Object>();
         m_attrs.put(IdentityNamespace.IDENTITY_NAMESPACE, name);
+        m_attrs.put(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE, type);
     }
 
     public String getNamespace()
diff --git a/resolver/src/main/java/org/apache/felix/resolver/test/Main.java b/resolver/src/main/java/org/apache/felix/resolver/test/Main.java
index a5a975e..524d077 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/test/Main.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/test/Main.java
@@ -24,9 +24,12 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.felix.resolver.Logger;
 import org.apache.felix.resolver.ResolverImpl;
 import org.osgi.framework.namespace.BundleNamespace;
+import org.osgi.framework.namespace.HostNamespace;
+import org.osgi.framework.namespace.IdentityNamespace;
 import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Namespace;
@@ -45,11 +48,14 @@
 
         Map<Resource, Wiring> wirings = new HashMap<Resource, Wiring>();
         Map<Requirement, List<Capability>> candMap = new HashMap<Requirement, List<Capability>>();
+        List<Resource> mandatory;
+        ResolveContextImpl rci;
+        Map<Resource, List<Wire>> wireMap;
 
         System.out.println("\nSCENARIO 1\n");
-        List<Resource> mandatory = populateScenario1(wirings, candMap);
-        ResolveContextImpl rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.EMPTY_LIST);
-        Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
+        mandatory = populateScenario1(wirings, candMap);
+        rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.EMPTY_LIST);
+        wireMap = resolver.resolve(rci);
         System.out.println("RESULT " + wireMap);
 
         System.out.println("\nSCENARIO 2\n");
@@ -98,6 +104,11 @@
         wireMap = resolver.resolve(rci);
         System.out.println("RESULT " + wireMap);
 
+        System.out.println("\nSCENARIO 7\n");
+        mandatory = populateScenario7(wirings, candMap);
+        rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.EMPTY_LIST);
+        wireMap = resolver.resolve(rci);
+        System.out.println("RESULT " + wireMap);
     }
 
     private static List<Resource> populateScenario1(
@@ -399,4 +410,47 @@
         resources.add(a2);
         return resources;
     }
+
+    private static List<Resource> populateScenario7(
+            Map<Resource, Wiring> wirings, Map<Requirement, List<Capability>> candMap)
+    {
+        wirings.clear();
+        candMap.clear();
+
+        ResourceImpl a1 = new ResourceImpl("A");
+        GenericCapability a1_hostCap = new GenericCapability(a1, HostNamespace.HOST_NAMESPACE);
+        a1_hostCap.addAttribute(HostNamespace.HOST_NAMESPACE, "A");
+        a1.addCapability(a1_hostCap);
+
+        ResourceImpl f1 = new ResourceImpl("F1", IdentityNamespace.TYPE_FRAGMENT);
+        GenericRequirement f1_hostReq = new GenericRequirement(f1, HostNamespace.HOST_NAMESPACE);
+        f1_hostReq.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(" + HostNamespace.HOST_NAMESPACE + "=A)");
+        f1.addRequirement(f1_hostReq);
+
+        ResourceImpl f2 = new ResourceImpl("F2", IdentityNamespace.TYPE_FRAGMENT);
+        GenericRequirement f2_hostReq = new GenericRequirement(f2, HostNamespace.HOST_NAMESPACE);
+        f2_hostReq.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(" + HostNamespace.HOST_NAMESPACE + "=A)");
+        f2.addRequirement(f2_hostReq);
+
+        ResourceImpl b1 = new ResourceImpl("B");
+        GenericRequirement b1_identityReq = new GenericRequirement(f2, IdentityNamespace.IDENTITY_NAMESPACE);
+        b1_identityReq.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(" + IdentityNamespace.IDENTITY_NAMESPACE + "=F2)");
+        b1.addRequirement(b1_identityReq);
+
+        candMap.put(
+            f1.getRequirements(null).get(0),
+            a1.getCapabilities(HostNamespace.HOST_NAMESPACE));
+        candMap.put(
+            f2.getRequirements(null).get(0),
+            a1.getCapabilities(HostNamespace.HOST_NAMESPACE));
+        candMap.put(
+            b1.getRequirements(null).get(0),
+            f2.getCapabilities(IdentityNamespace.IDENTITY_NAMESPACE));
+        List<Resource> resources = new ArrayList<Resource>();
+        resources.add(a1);
+        resources.add(f1);
+        resources.add(f2);
+        resources.add(b1);
+        return resources;
+    }
 }
\ No newline at end of file
diff --git a/resolver/src/main/java/org/apache/felix/resolver/test/ResourceImpl.java b/resolver/src/main/java/org/apache/felix/resolver/test/ResourceImpl.java
index 7971f97..dabc141 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/test/ResourceImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/test/ResourceImpl.java
@@ -30,10 +30,13 @@
     private final List<Capability> m_caps;
     private final List<Requirement> m_reqs;
 
-    public ResourceImpl(String name)
+    public ResourceImpl(String name) {
+        this(name, IdentityNamespace.TYPE_BUNDLE);
+    }
+    public ResourceImpl(String name, String type)
     {
         m_caps = new ArrayList<Capability>();
-        m_caps.add(0, new IdentityCapability(this, name));
+        m_caps.add(0, new IdentityCapability(this, name, type));
         m_reqs = new ArrayList<Requirement>();
     }
 
