You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2012/05/25 20:13:41 UTC

svn commit: r1342752 - /felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java

Author: rickhall
Date: Fri May 25 18:13:41 2012
New Revision: 1342752

URL: http://svn.apache.org/viewvc?rev=1342752&view=rev
Log:
Port improved FELIX-3465 patch from resolver to framework.

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java?rev=1342752&r1=1342751&r2=1342752&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java Fri May 25 18:13:41 2012
@@ -510,9 +510,17 @@ public class ResolverImpl implements Res
         cycle.add(revision);
 
         // Make sure package space hasn't already been calculated.
-        if (revisionPkgMap.containsKey(revision))
+        Packages revisionPkgs = revisionPkgMap.get(revision);
+        if (revisionPkgs != null)
         {
-            return;
+            if (revisionPkgs.m_isCalculated)
+            {
+                return;
+            }
+            else
+            {
+                revisionPkgs.m_isCalculated = true;
+            }
         }
 
         // Create parallel arrays for requirement and proposed candidate
@@ -602,7 +610,7 @@ public class ResolverImpl implements Res
 
         // First, add all exported packages to the target revision's package space.
         calculateExportedPackages(revision, allCandidates, revisionPkgMap);
-        Packages revisionPkgs = revisionPkgMap.get(revision);
+        revisionPkgs = revisionPkgMap.get(revision);
 
         // Second, add all imported packages to the target revision's package space.
         for (int i = 0; i < reqs.size(); i++)
@@ -1766,6 +1774,7 @@ public class ResolverImpl implements Res
         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(BundleRevision revision)
         {