Author: gnodet
Date: Mon Jul 13 15:18:00 2015
New Revision: 1690713
URL: http://svn.apache.org/r1690713
Log:
[FELIX-4942] Small improvements to mergeUses
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=1690713&r1=1690712&r2=1690713&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:00 2015
@@ -805,7 +805,6 @@ public class ResolverImpl implements Res
blameReqs,
cap,
resourcePkgMap,
- allCandidates,
usesCycleMap);
}
}
@@ -828,7 +827,6 @@ public class ResolverImpl implements Res
blameReqs,
null,
resourcePkgMap,
- allCandidates,
usesCycleMap);
}
}
@@ -849,7 +847,6 @@ public class ResolverImpl implements Res
blameReqs,
null,
resourcePkgMap,
- allCandidates,
usesCycleMap);
}
}
@@ -989,11 +986,10 @@ public class ResolverImpl implements Res
}
}
- private void mergeUses(
+ private static void mergeUses(
ResolveSession session, Resource current, Packages currentPkgs,
Capability mergeCap, List<Requirement> blameReqs, Capability
matchingCap,
Map<Resource, Packages> resourcePkgMap,
- Candidates allCandidates,
Map<Capability, Set<Resource>> cycleMap)
{
// If there are no uses, then just return.
@@ -1028,7 +1024,7 @@ public class ResolverImpl implements Res
// else
{
String s =
candSourceCap.getDirectives().get(Namespace.CAPABILITY_USES_DIRECTIVE);
- if (s != null)
+ if (s != null && !s.isEmpty())
{
// Parse these uses directive.
uses = session.getUsesCache().get(s);
@@ -1040,19 +1036,18 @@ public class ResolverImpl implements Res
}
else
{
- uses = Collections.emptyList();
+ continue;
}
}
+ Packages candSourcePkgs =
resourcePkgMap.get(candSourceCap.getResource());
for (String usedPkgName : uses)
{
- Packages candSourcePkgs =
resourcePkgMap.get(candSourceCap.getResource());
List<Blame> candSourceBlames;
// Check to see if the used package is exported.
Blame candExportedBlame =
candSourcePkgs.m_exportedPkgs.get(usedPkgName);
if (candExportedBlame != null)
{
- candSourceBlames = new ArrayList<Blame>(1);
- candSourceBlames.add(candExportedBlame);
+ candSourceBlames =
Collections.singletonList(candExportedBlame);
}
else
{
@@ -1061,8 +1056,10 @@ public class ResolverImpl implements Res
candSourceBlames =
candSourcePkgs.m_requiredPkgs.get(usedPkgName);
// Lastly, if the used package is not required, check to
see if it
// is imported.
- candSourceBlames = (candSourceBlames != null)
- ? candSourceBlames :
candSourcePkgs.m_importedPkgs.get(usedPkgName);
+ if (candSourceBlames == null)
+ {
+ candSourceBlames =
candSourcePkgs.m_importedPkgs.get(usedPkgName);
+ }
}
// If the used package cannot be found, then just ignore it
@@ -1077,19 +1074,20 @@ public class ResolverImpl implements Res
{
if (blame.m_reqs != null)
{
- List<Requirement> blameReqs2 = new
ArrayList<Requirement>(blameReqs);
+ List<Requirement> blameReqs2 = new
ArrayList<Requirement>(blameReqs.size() + 1);
+ blameReqs2.addAll(blameReqs);
// Only add the last requirement in blame chain because
// that is the requirement wired to the blamed
capability
blameReqs2.add(blame.m_reqs.get(blame.m_reqs.size() -
1));
addUsedBlame(usedPkgBlames, blame.m_cap, blameReqs2,
matchingCap);
mergeUses(session, current, currentPkgs, blame.m_cap,
blameReqs2, matchingCap,
- resourcePkgMap, allCandidates, cycleMap);
+ resourcePkgMap, cycleMap);
}
else
{
addUsedBlame(usedPkgBlames, blame.m_cap, blameReqs,
matchingCap);
mergeUses(session, current, currentPkgs, blame.m_cap,
blameReqs, matchingCap,
- resourcePkgMap, allCandidates, cycleMap);
+ resourcePkgMap, cycleMap);
}
}
}