Fix a bug in previous commit plus minor optimization. (FELIX-2973)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1133036 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 070ee85..d949df7 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
@@ -84,7 +84,7 @@
                     allCandidates.prepare(getResolvedSingletons(state));
 
                     // Record the initial candidate permutation.
-                     m_usesPermutations.add(allCandidates);
+                    m_usesPermutations.add(allCandidates);
 
                     ResolveException rethrow = null;
 
@@ -692,7 +692,7 @@
             Map<String, List<Blame>> packages = (requires)
                 ? currentPkgs.m_requiredPkgs
                 : currentPkgs.m_importedPkgs;
-            List<Blame> blames = currentPkgs.m_requiredPkgs.get(pkgName);
+            List<Blame> blames = packages.get(pkgName);
             if (blames == null)
             {
                 blames = new ArrayList<Blame>();
@@ -1155,41 +1155,45 @@
         // For resolved revisions look at the wires, for resolving
         // revisions look in the candidate map to determine which
         // exports are substitutable.
-        if (revision.getWiring() != null)
+        if (!exports.isEmpty())
         {
-            for (BundleWire wire : revision.getWiring().getRequiredWires(null))
+            if (revision.getWiring() != null)
             {
-                if (wire.getRequirement().getNamespace().equals(
-                    BundleCapabilityImpl.PACKAGE_NAMESPACE))
+                for (BundleWire wire : revision.getWiring().getRequiredWires(null))
                 {
-                    String pkgName = (String) wire.getCapability()
-                        .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
-                    exports.remove(pkgName);
-                }
-            }
-        }
-        else
-        {
-            for (BundleRequirement req : revision.getDeclaredRequirements(null))
-            {
-                if (req.getNamespace().equals(BundleCapabilityImpl.PACKAGE_NAMESPACE))
-                {
-                    Set<BundleCapability> cands =
-                        allCandidates.getCandidates((BundleRequirementImpl) req);
-                    if ((cands != null) && !cands.isEmpty())
+                    if (wire.getRequirement().getNamespace().equals(
+                        BundleCapabilityImpl.PACKAGE_NAMESPACE))
                     {
-                        String pkgName = (String) cands.iterator().next()
+                        String pkgName = (String) wire.getCapability()
                             .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
                         exports.remove(pkgName);
                     }
                 }
             }
-        }
-        // Add all non-substituted exports to the revisions's package space.
-        for (Entry<String, BundleCapability> entry : exports.entrySet())
-        {
-            packages.m_exportedPkgs.put(
-                entry.getKey(), new Blame(entry.getValue(), null));
+            else
+            {
+                for (BundleRequirement req : revision.getDeclaredRequirements(null))
+                {
+                    if (req.getNamespace().equals(BundleCapabilityImpl.PACKAGE_NAMESPACE))
+                    {
+                        Set<BundleCapability> cands =
+                            allCandidates.getCandidates((BundleRequirementImpl) req);
+                        if ((cands != null) && !cands.isEmpty())
+                        {
+                            String pkgName = (String) cands.iterator().next()
+                                .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
+                            exports.remove(pkgName);
+                        }
+                    }
+                }
+            }
+
+            // Add all non-substituted exports to the revisions's package space.
+            for (Entry<String, BundleCapability> entry : exports.entrySet())
+            {
+                packages.m_exportedPkgs.put(
+                    entry.getKey(), new Blame(entry.getValue(), null));
+            }
         }
 
         revisionPkgMap.put(revision, packages);