Modified the resolver to sort candidates when resolving require-bundle
dependencies. (FELIX-775)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@704956 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java b/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
index 1116c83..1179a9a 100755
--- a/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
+++ b/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
@@ -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
+}