[FELIX-4942] Improve mergeCandidatePackage

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1690714 13f79535-47bb-0310-9956-ffa450edef68
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 59ace68..e36fe77 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -873,7 +873,8 @@
         if (candCap.getNamespace().equals(PackageNamespace.PACKAGE_NAMESPACE))
         {
             mergeCandidatePackage(
-                current, false, currentReq, candCap, resourcePkgMap);
+                resourcePkgMap.get(current).m_importedPkgs,
+                currentReq, candCap);
         }
         else if (candCap.getNamespace().equals(BundleNamespace.BUNDLE_NAMESPACE))
         {
@@ -898,11 +899,9 @@
                 for (Entry<String, Blame> entry : candPkgs.m_exportedPkgs.fast())
                 {
                     mergeCandidatePackage(
-                        current,
-                        true,
+                        resourcePkgMap.get(current).m_requiredPkgs,
                         currentReq,
-                        entry.getValue().m_cap,
-                        resourcePkgMap);
+                        entry.getValue().m_cap);
                 }
             }
 
@@ -959,10 +958,9 @@
         cycles.remove(current);
     }
 
-    private void mergeCandidatePackage(
-        Resource current, boolean requires,
-        Requirement currentReq, Capability candCap,
-        Map<Resource, Packages> resourcePkgMap)
+    private static void mergeCandidatePackage(
+        OpenHashMap<String, List<Blame>> packages,
+        Requirement currentReq, Capability candCap)
     {
         if (candCap.getNamespace().equals(PackageNamespace.PACKAGE_NAMESPACE))
         {
@@ -971,14 +969,8 @@
 
             String pkgName = (String) candCap.getAttributes().get(PackageNamespace.PACKAGE_NAMESPACE);
 
-            List<Requirement> blameReqs = new ArrayList<Requirement>();
-            blameReqs.add(currentReq);
+            List<Requirement> blameReqs = Collections.singletonList(currentReq);
 
-            Packages currentPkgs = resourcePkgMap.get(current);
-
-            OpenHashMap<String, List<Blame>> packages = (requires)
-                ? currentPkgs.m_requiredPkgs
-                : currentPkgs.m_importedPkgs;
             List<Blame> blames = packages.getOrCompute(pkgName);
             blames.add(new Blame(candCap, blameReqs));