Fix FELIX-3465 patch which was too aggressive in short circuiting
package space calculation as witnessed by the regression reported
by FELIX-3521.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1342750 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 556bf36..b5d0e7e 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -525,9 +525,17 @@
cycle.add(resource);
// Make sure package space hasn't already been calculated.
- if (resourcePkgMap.containsKey(resource))
+ Packages resourcePkgs = resourcePkgMap.get(resource);
+ if (resourcePkgs != null)
{
- return;
+ if (resourcePkgs.m_isCalculated)
+ {
+ return;
+ }
+ else
+ {
+ resourcePkgs.m_isCalculated = true;
+ }
}
// Create parallel arrays for requirement and proposed candidate
@@ -618,7 +626,7 @@
// First, add all exported packages to the target resource's package space.
calculateExportedPackages(rc, resource, allCandidates, resourcePkgMap);
- Packages resourcePkgs = resourcePkgMap.get(resource);
+ resourcePkgs = resourcePkgMap.get(resource);
// Second, add all imported packages to the target resource's package space.
for (int i = 0; i < reqs.size(); i++)
@@ -1865,6 +1873,7 @@
public final Map<String, List<Blame>> m_importedPkgs = new HashMap();
public final Map<String, List<Blame>> m_requiredPkgs = new HashMap();
public final Map<String, List<Blame>> m_usedPkgs = new HashMap();
+ public boolean m_isCalculated = false;
public Packages(Resource resource)
{