Author: sseifert
Date: Thu Jan 28 17:36:08 2016
New Revision: 1727411
URL: http://svn.apache.org/viewvc?rev=1727411&view=rev
Log:
SLING-5462 switch to comparable implementation from commons.osgi and change
wrong assumptions in unit test
Modified:
sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
Modified:
sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java
URL:
http://svn.apache.org/viewvc/sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java?rev=1727411&r1=1727410&r2=1727411&view=diff
==============================================================================
---
sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java
(original)
+++
sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java
Thu Jan 28 17:36:08 2016
@@ -20,7 +20,9 @@ package org.apache.sling.testing.mock.os
import java.util.Collections;
import java.util.Dictionary;
+import java.util.Map;
+import org.apache.sling.commons.osgi.ServiceUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@@ -32,10 +34,17 @@ class MockServiceReference implements Se
private final Bundle bundle;
private final MockServiceRegistration serviceRegistration;
+ private volatile Comparable<Object> comparable;
public MockServiceReference(final Bundle bundle, final
MockServiceRegistration serviceRegistration) {
this.bundle = bundle;
this.serviceRegistration = serviceRegistration;
+ this.comparable = buildComparable();
+ }
+
+ private Comparable<Object> buildComparable() {
+ Map<String,Object> props =
MapUtil.toMap(serviceRegistration.getProperties());
+ return ServiceUtil.getComparableForServiceRanking(props);
}
@Override
@@ -50,6 +59,7 @@ class MockServiceReference implements Se
*/
public void setProperty(final String key, final Object value) {
this.serviceRegistration.getProperties().put(key, value);
+ this.comparable = buildComparable();
}
@Override
@@ -65,7 +75,7 @@ class MockServiceReference implements Se
@Override
public int hashCode() {
- return ((Long) getServiceId()).hashCode();
+ return comparable.hashCode();
}
@Override
@@ -73,7 +83,7 @@ class MockServiceReference implements Se
if (!(obj instanceof MockServiceReference)) {
return false;
}
- return ((Long) getServiceId()).equals(((MockServiceReference)
obj).getServiceId());
+ return comparable.equals(((MockServiceReference)obj).comparable);
}
@Override
@@ -81,17 +91,7 @@ class MockServiceReference implements Se
if (!(obj instanceof MockServiceReference)) {
return 0;
}
- // sort by ascending by service ranking, and secondary ascending by
service id
- Integer serviceRanking = getServiceRanking();
- Integer otherServiceRanking =
((MockServiceReference)obj).getServiceRanking();
- int serviceRankingCompare =
serviceRanking.compareTo(otherServiceRanking);
- if (serviceRankingCompare == 0) {
- Long serviceId = getServiceId();
- Long otherServiceId = ((MockServiceReference)obj).getServiceId();
- return serviceId.compareTo(otherServiceId);
- } else {
- return serviceRankingCompare;
- }
+ return comparable.compareTo(((MockServiceReference)obj).comparable);
}
long getServiceId() {
Modified:
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
URL:
http://svn.apache.org/viewvc/sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java?rev=1727411&r1=1727410&r2=1727411&view=diff
==============================================================================
---
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
(original)
+++
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
Thu Jan 28 17:36:08 2016
@@ -72,16 +72,16 @@ public class MockBundleContextTest {
@Test
public void testServiceRegistration() throws InvalidSyntaxException {
// prepare test services
- String clazz1 = String.class.getName();
- Object service1 = new Object();
- Dictionary properties1 = getServiceProperties(null);
- ServiceRegistration reg1 = bundleContext.registerService(clazz1,
service1, properties1);
-
String[] clazzes2 = new String[] { String.class.getName(),
Integer.class.getName() };
Object service2 = new Object();
Dictionary properties2 = getServiceProperties(null);
ServiceRegistration reg2 = bundleContext.registerService(clazzes2,
service2, properties2);
+ String clazz1 = String.class.getName();
+ Object service1 = new Object();
+ Dictionary properties1 = getServiceProperties(null);
+ ServiceRegistration reg1 = bundleContext.registerService(clazz1,
service1, properties1);
+
String clazz3 = Integer.class.getName();
Object service3 = new Object();
Dictionary properties3 = getServiceProperties(-100L);
Modified:
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
URL:
http://svn.apache.org/viewvc/sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java?rev=1727411&r1=1727410&r2=1727411&view=diff
==============================================================================
---
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
(original)
+++
sling/branches/testing/mocks/osgi-mock-1.x/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
Thu Jan 28 17:36:08 2016
@@ -88,9 +88,10 @@ public class OsgiContextImplTest {
Set<String> myService2 = new HashSet<String>();
context.registerService(Set.class, myService2);
+ // expected: descending order because ordering descending by service id
Set[] serviceResults = context.getServices(Set.class, null);
- assertSame(myService1, serviceResults[0]);
- assertSame(myService2, serviceResults[1]);
+ assertSame(myService1, serviceResults[1]);
+ assertSame(myService2, serviceResults[0]);
}
@Test