Author: gnodet
Date: Mon Jul 13 15:18:06 2015
New Revision: 1690714
URL: http://svn.apache.org/r1690714
Log:
[FELIX-4942] Improve mergeCandidatePackage
Modified:
felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
Modified:
felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
URL:
http://svn.apache.org/viewvc/felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java?rev=1690714&r1=1690713&r2=1690714&view=diff
==============================================================================
---
felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
(original)
+++
felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
Mon Jul 13 15:18:06 2015
@@ -873,7 +873,8 @@ public class ResolverImpl implements Res
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 @@ public class ResolverImpl implements Res
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 @@ public class ResolverImpl implements Res
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 @@ public class ResolverImpl implements Res
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));