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 2008/10/15 18:48:48 UTC

svn commit: r704956 - /felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java

Author: rickhall
Date: Wed Oct 15 09:48:48 2008
New Revision: 704956

URL: http://svn.apache.org/viewvc?rev=704956&view=rev
Log:
Modified the resolver to sort candidates when resolving require-bundle
dependencies. (FELIX-775)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java?rev=704956&r1=704955&r2=704956&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java Wed Oct 15 09:48:48 2008
@@ -901,8 +901,8 @@
         synchronized (m_factory)
         {
             PackageSource[] candidates = m_emptySources;
-            if (req.getNamespace().equals(ICapability.PACKAGE_NAMESPACE) &&
-                    (((Requirement) req).getPackageName() != null))
+            if (req.getNamespace().equals(ICapability.PACKAGE_NAMESPACE)
+                && (((Requirement) req).getPackageName() != null))
             {
                 String pkgName = ((Requirement) req).getPackageName();
                 IModule[] modules = (IModule[]) m_resolvedPkgIndexMap.get(pkgName);
@@ -3126,11 +3126,23 @@
         {
             PackageSource ps = (PackageSource) o;
 
+            Version thisVersion = null;
+            Version version = null;
             if (m_capability.getNamespace().equals(ICapability.PACKAGE_NAMESPACE))
             {
-                Version thisVersion = ((Capability) m_capability).getPackageVersion();
-                Version version = ((Capability) ps.m_capability).getPackageVersion();
+                thisVersion = ((Capability) m_capability).getPackageVersion();
+                version = ((Capability) ps.m_capability).getPackageVersion();
+            }
+            else if (m_capability.getNamespace().equals(ICapability.MODULE_NAMESPACE))
+            {
+                thisVersion = (Version)
+                    m_capability.getProperties().get(Constants.BUNDLE_VERSION_ATTRIBUTE);
+                version = (Version)
+                    ps.m_capability.getProperties().get(Constants.BUNDLE_VERSION_ATTRIBUTE);
+            }
 
+            if ((thisVersion != null) && (version != null))
+            {
                 // Sort in reverse version order.
                 int cmp = thisVersion.compareTo(version);
                 if (cmp < 0)
@@ -3550,4 +3562,4 @@
 
         return sb.toString();
     }
-}
\ No newline at end of file
+}