You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/01/28 18:16:41 UTC
svn commit: r1727409 - in /sling/trunk/testing/mocks/osgi-mock/src:
main/java/org/apache/sling/testing/mock/osgi/
test/java/org/apache/sling/testing/mock/osgi/
test/java/org/apache/sling/testing/mock/osgi/context/
Author: sseifert
Date: Thu Jan 28 17:16:40 2016
New Revision: 1727409
URL: http://svn.apache.org/viewvc?rev=1727409&view=rev
Log:
SLING-5462 switch to comparable implementation from commons.osgi and change wrong assumptions in unit test
Modified:
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/MockBundleContextTest.java
sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
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=1727409&r1=1727408&r2=1727409&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 Jan 28 17:16:40 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,12 +34,19 @@ class MockServiceReference<T> implements
private final Bundle bundle;
private final MockServiceRegistration<T> serviceRegistration;
+ private volatile Comparable<Object> comparable;
public MockServiceReference(final Bundle bundle, final MockServiceRegistration<T> 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
public Bundle getBundle() {
return this.bundle;
@@ -50,6 +59,7 @@ class MockServiceReference<T> implements
*/
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<T> implements
@Override
public int hashCode() {
- return ((Long) getServiceId()).hashCode();
+ return comparable.hashCode();
}
@Override
@@ -73,7 +83,7 @@ class MockServiceReference<T> implements
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<T> implements
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/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java?rev=1727409&r1=1727408&r2=1727409&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java Thu Jan 28 17:16:40 2016
@@ -73,16 +73,16 @@ public class MockBundleContextTest {
@Test
public void testServiceRegistration() throws InvalidSyntaxException {
// prepare test services
- String clazz1 = String.class.getName();
- Object service1 = new Object();
- Dictionary<String, Object> 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<String, Object> properties2 = getServiceProperties(null);
ServiceRegistration reg2 = bundleContext.registerService(clazzes2, service2, properties2);
+ String clazz1 = String.class.getName();
+ Object service1 = new Object();
+ Dictionary<String, Object> properties1 = getServiceProperties(null);
+ ServiceRegistration reg1 = bundleContext.registerService(clazz1, service1, properties1);
+
String clazz3 = Integer.class.getName();
Object service3 = new Object();
Dictionary<String, Object> properties3 = getServiceProperties(-100L);
Modified: sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java?rev=1727409&r1=1727408&r2=1727409&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java Thu Jan 28 17:16:40 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