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 2011/06/07 17:03:01 UTC

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

Author: rickhall
Date: Tue Jun  7 15:03:01 2011
New Revision: 1133036

URL: http://svn.apache.org/viewvc?rev=1133036&view=rev
Log:
Fix a bug in previous commit plus minor optimization. (FELIX-2973)

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=1133036&r1=1133035&r2=1133036&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 Tue Jun  7 15:03:01 2011
@@ -84,7 +84,7 @@ public class ResolverImpl implements Res
                     allCandidates.prepare(getResolvedSingletons(state));
 
                     // Record the initial candidate permutation.
-                     m_usesPermutations.add(allCandidates);
+                    m_usesPermutations.add(allCandidates);
 
                     ResolveException rethrow = null;
 
@@ -692,7 +692,7 @@ public class ResolverImpl implements Res
             Map<String, List<Blame>> packages = (requires)
                 ? currentPkgs.m_requiredPkgs
                 : currentPkgs.m_importedPkgs;
-            List<Blame> blames = currentPkgs.m_requiredPkgs.get(pkgName);
+            List<Blame> blames = packages.get(pkgName);
             if (blames == null)
             {
                 blames = new ArrayList<Blame>();
@@ -1155,41 +1155,45 @@ public class ResolverImpl implements Res
         // For resolved revisions look at the wires, for resolving
         // revisions look in the candidate map to determine which
         // exports are substitutable.
-        if (revision.getWiring() != null)
+        if (!exports.isEmpty())
         {
-            for (BundleWire wire : revision.getWiring().getRequiredWires(null))
+            if (revision.getWiring() != null)
             {
-                if (wire.getRequirement().getNamespace().equals(
-                    BundleCapabilityImpl.PACKAGE_NAMESPACE))
+                for (BundleWire wire : revision.getWiring().getRequiredWires(null))
                 {
-                    String pkgName = (String) wire.getCapability()
-                        .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
-                    exports.remove(pkgName);
+                    if (wire.getRequirement().getNamespace().equals(
+                        BundleCapabilityImpl.PACKAGE_NAMESPACE))
+                    {
+                        String pkgName = (String) wire.getCapability()
+                            .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
+                        exports.remove(pkgName);
+                    }
                 }
             }
-        }
-        else
-        {
-            for (BundleRequirement req : revision.getDeclaredRequirements(null))
+            else
             {
-                if (req.getNamespace().equals(BundleCapabilityImpl.PACKAGE_NAMESPACE))
+                for (BundleRequirement req : revision.getDeclaredRequirements(null))
                 {
-                    Set<BundleCapability> cands =
-                        allCandidates.getCandidates((BundleRequirementImpl) req);
-                    if ((cands != null) && !cands.isEmpty())
+                    if (req.getNamespace().equals(BundleCapabilityImpl.PACKAGE_NAMESPACE))
                     {
-                        String pkgName = (String) cands.iterator().next()
-                            .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
-                        exports.remove(pkgName);
+                        Set<BundleCapability> cands =
+                            allCandidates.getCandidates((BundleRequirementImpl) req);
+                        if ((cands != null) && !cands.isEmpty())
+                        {
+                            String pkgName = (String) cands.iterator().next()
+                                .getAttributes().get(BundleCapabilityImpl.PACKAGE_ATTR);
+                            exports.remove(pkgName);
+                        }
                     }
                 }
             }
-        }
-        // Add all non-substituted exports to the revisions's package space.
-        for (Entry<String, BundleCapability> entry : exports.entrySet())
-        {
-            packages.m_exportedPkgs.put(
-                entry.getKey(), new Blame(entry.getValue(), null));
+
+            // Add all non-substituted exports to the revisions's package space.
+            for (Entry<String, BundleCapability> entry : exports.entrySet())
+            {
+                packages.m_exportedPkgs.put(
+                    entry.getKey(), new Blame(entry.getValue(), null));
+            }
         }
 
         revisionPkgMap.put(revision, packages);