You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2015/07/13 17:17:35 UTC

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

Author: gnodet
Date: Mon Jul 13 15:17:34 2015
New Revision: 1690709

URL: http://svn.apache.org/r1690709
Log:
[FELIX-4942] Avoid one additional call in the stack for each recurtion

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=1690709&r1=1690708&r2=1690709&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:17:34 2015
@@ -397,7 +397,7 @@ public class ResolverImpl implements Res
 
             ResolutionError rethrow = checkPackageSpaceConsistency(
                     session, entry.getValue(),
-                    allCandidates, resourcePkgMap, resultCache);
+                    allCandidates, false, resourcePkgMap, resultCache);
             if (rethrow != null)
             {
                 Resource faultyResource = entry.getKey();
@@ -527,9 +527,9 @@ public class ResolverImpl implements Res
 //dumpResourcePkgMap(resourcePkgMap);
 //System.out.println("+++ PACKAGE SPACES END +++");
 
-                        rethrow = checkDynamicPackageSpaceConsistency(session,
+                        rethrow = checkPackageSpaceConsistency(session,
                                 allCandidates.getWrappedHost(host),
-                                allCandidates, resourcePkgMap, new HashMap<Resource, Object>(64));
+                                allCandidates, true, resourcePkgMap, new HashMap<Resource, Object>(64));
                     }
                     while ((rethrow != null)
                         && ((usesPermutations.size() > 0) || (importPermutations.size() > 0)));
@@ -1150,24 +1150,14 @@ public class ResolverImpl implements Res
         ResolveSession session,
         Resource resource,
         Candidates allCandidates,
+        boolean dynamic,
         Map<Resource, Packages> resourcePkgMap,
         Map<Resource, Object> resultCache)
     {
-        if (session.getContext().getWirings().containsKey(resource))
+        if (!dynamic && session.getContext().getWirings().containsKey(resource))
         {
             return null;
         }
-        return checkDynamicPackageSpaceConsistency(
-            session, resource, allCandidates, resourcePkgMap, resultCache);
-    }
-
-    private ResolutionError checkDynamicPackageSpaceConsistency(
-        ResolveSession session,
-        Resource resource,
-        Candidates allCandidates,
-        Map<Resource, Packages> resourcePkgMap,
-        Map<Resource, Object> resultCache)
-    {
         Object cache = resultCache.get(resource);
         if (cache != null)
         {
@@ -1437,7 +1427,7 @@ public class ResolverImpl implements Res
                 {
                     rethrow = checkPackageSpaceConsistency(
                             session, cap.getResource(),
-                            allCandidates, resourcePkgMap, resultCache);
+                            allCandidates, false, resourcePkgMap, resultCache);
                     if (rethrow != null)
                     {
                         // If the lower level check didn't create any permutations,