Check if we are able to permutate before doing it. (FELIX-2037)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@919203 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 db865fe..d15827d 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
@@ -1213,14 +1213,16 @@
// Permutate the candidate map.
for (int reqIdx = 0; reqIdx < currentBlame.m_reqs.size(); reqIdx++)
{
- Map<Requirement, Set<Capability>> copy = copyCandidateMap(candidateMap);
- Set<Capability> candidates = copy.get(currentBlame.m_reqs.get(reqIdx));
- Iterator it = candidates.iterator();
- it.next();
- it.remove();
- // TODO: PROTO3 RESOLVER - We could check before doing the candidate map copy.
- if (candidates.size() > 0)
+ // Verify whether we have more than one candidate to create
+ // a permutation.
+ Set<Capability> candidates = candidateMap.get(currentBlame.m_reqs.get(reqIdx));
+ if (candidates.size() > 1)
{
+ Map<Requirement, Set<Capability>> copy = copyCandidateMap(candidateMap);
+ candidates = copy.get(currentBlame.m_reqs.get(reqIdx));
+ Iterator it = candidates.iterator();
+ it.next();
+ it.remove();
m_candidatePermutations.add(copy);
}
}