Author: sseifert Date: Thu Oct 12 14:49:29 2017 New Revision: 1811972 URL: http://svn.apache.org/viewvc?rev=1811972&view=rev Log: SLING-7193 MockServiceReference.compareTo needs to implement lowest-first ranking
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java?rev=1811972&r1=1811971&r2=1811972&view=diff ============================================================================== --- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java (original) +++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java Thu Oct 12 14:49:29 2017 @@ -22,6 +22,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Collection; +import java.util.Comparator; import java.util.Dictionary; import java.util.List; import java.util.Map; @@ -283,7 +284,13 @@ class MockBundleContext implements Bundl @SuppressWarnings("unchecked") @Override public ServiceReference[] getServiceReferences(final String clazz, final String filter) throws InvalidSyntaxException { - Set<ServiceReference> result = new TreeSet<ServiceReference>(); + Set<ServiceReference> result = new TreeSet<ServiceReference>(new Comparator<ServiceReference>() { + @Override + public int compare(ServiceReference o1, ServiceReference o2) { + // reverse sort order to get highest ranking first + return o2.compareTo(o1); + } + }); for (MockServiceRegistration serviceRegistration : this.registeredServices) { if (serviceRegistration.matches(clazz, filter)) { result.add(serviceRegistration.getReference()); Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java?rev=1811972&r1=1811971&r2=1811972&view=diff ============================================================================== --- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java (original) +++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java Thu Oct 12 14:49:29 2017 @@ -45,7 +45,8 @@ class MockServiceReference<T> implements private Comparable<Object> buildComparable() { Map<String,Object> props = MapUtil.toMap(serviceRegistration.getProperties()); - return ServiceUtil.getComparableForServiceRanking(props, Order.DESCENDING); + // use ascending order as defined in ServiceReference#compareTo() + return ServiceUtil.getComparableForServiceRanking(props, Order.ASCENDING); } @Override Modified: sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java?rev=1811972&r1=1811971&r2=1811972&view=diff ============================================================================== --- sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java (original) +++ sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java Thu Oct 12 14:49:29 2017 @@ -34,7 +34,9 @@ import org.osgi.framework.InvalidSyntaxE import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; -/** Test the service-ranking based sorting of mock service references */ +/** + * Test the service-ranking based sorting of mock service references + */ public class MockServiceReferencesSortTest { private BundleContext bundleContext; @@ -57,7 +59,7 @@ public class MockServiceReferencesSortTe registerStringServiceWithRanking("D", 1); registerStringServiceWithRanking("E", 2); - assertEquals("BCAED", getSortedServicesString()); + assertEquals("DEACB", getSortedServicesString()); assertEquals("B", bundleContext.getService(bundleContext.getServiceReference(String.class))); } @@ -69,7 +71,7 @@ public class MockServiceReferencesSortTe registerStringServiceWithoutRanking("D"); registerStringServiceWithoutRanking("E"); - assertEquals("ABCDE", getSortedServicesString()); + assertEquals("EDCBA", getSortedServicesString()); assertEquals("A", bundleContext.getService(bundleContext.getServiceReference(String.class))); } @@ -81,7 +83,7 @@ public class MockServiceReferencesSortTe registerStringServiceWithRanking("D", 10); registerStringServiceWithoutRanking("E"); - assertEquals("DBACE", getSortedServicesString()); + assertEquals("ECABD", getSortedServicesString()); assertEquals("D", bundleContext.getService(bundleContext.getServiceReference(String.class))); } @@ -104,7 +106,7 @@ public class MockServiceReferencesSortTe try { refs = bundleContext.getServiceReferences(String.class.getName(), null); } - catch(InvalidSyntaxException ise) { + catch (InvalidSyntaxException ise) { fail("Unexpected InvalidSyntaxException"); } assertNotNull("Expecting our service references", refs); @@ -119,4 +121,4 @@ public class MockServiceReferencesSortTe return sb.toString(); } -} \ No newline at end of file +}