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 2014/11/14 22:32:42 UTC
svn commit: r1639791 - in /sling/trunk/testing/mocks/osgi-mock/src:
main/java/org/apache/sling/testing/mock/osgi/
main/java/org/apache/sling/testing/mock/osgi/context/
test/java/org/apache/sling/testing/mock/osgi/
test/java/org/apache/sling/testing/moc...
Author: sseifert
Date: Fri Nov 14 21:32:42 2014
New Revision: 1639791
URL: http://svn.apache.org/r1639791
Log:
SLING-4165 OSGi Mock: Fail-fast when calling methods requiring SCR metadata and this is not present
Added:
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java (with props)
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java (with props)
Modified:
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java
sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImpl.java
sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java
sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImplTest.java
Added: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java?rev=1639791&view=auto
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java (added)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java Fri Nov 14 21:32:42 2014
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.testing.mock.osgi;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+/**
+ * Map util methods.
+ */
+final class MapUtil {
+
+ public static Dictionary<String, Object> toDictionary(Map<String, Object> map) {
+ if (map == null) {
+ return null;
+ }
+ return new Hashtable<String, Object>(map);
+ }
+
+ public static Map<String, Object> toMap(Dictionary<String, Object> dictionary) {
+ if (dictionary == null) {
+ return null;
+ }
+ Map<String,Object> map = new HashMap<String, Object>();
+ Enumeration<String> keys = dictionary.keys();
+ while (keys.hasMoreElements()) {
+ String key = keys.nextElement();
+ map.put(key, dictionary.get(key));
+ }
+ return map;
+ }
+
+}
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Fri Nov 14 21:32:42 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MapUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java Fri Nov 14 21:32:42 2014
@@ -36,12 +36,12 @@ class MockComponentContext implements Co
private final Dictionary<String, Object> properties;
public MockComponentContext(final MockBundleContext mockBundleContext) {
- this(mockBundleContext, new Hashtable<String, Object>());
+ this(mockBundleContext, null);
}
public MockComponentContext(final MockBundleContext mockBundleContext, final Dictionary<String, Object> properties) {
this.bundleContext = mockBundleContext;
- this.properties = properties;
+ this.properties = properties != null ? properties : new Hashtable<String, Object>();
}
@Override
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java Fri Nov 14 21:32:42 2014
@@ -19,9 +19,6 @@
package org.apache.sling.testing.mock.osgi;
import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
import java.util.Map;
import org.osgi.framework.BundleContext;
@@ -75,7 +72,7 @@ public final class MockOsgi {
* @return Mocked {@link ComponentContext} instance
*/
public static ComponentContext newComponentContext(Map<String, Object> properties) {
- return newComponentContext(toDictionary(properties));
+ return newComponentContext(MapUtil.toDictionary(properties));
}
/**
@@ -94,7 +91,7 @@ public final class MockOsgi {
* @return Mocked {@link ComponentContext} instance
*/
public static ComponentContext newComponentContext(BundleContext bundleContext, Map<String, Object> properties) {
- return newComponentContext(bundleContext, toDictionary(properties));
+ return newComponentContext(bundleContext, MapUtil.toDictionary(properties));
}
/**
@@ -147,7 +144,7 @@ public final class MockOsgi {
* @return true if activation method was called. False if it failed.
*/
public static boolean activate(Object target, Map<String, Object> properties) {
- return activate(target, toDictionary(properties));
+ return activate(target, MapUtil.toDictionary(properties));
}
/**
@@ -171,7 +168,7 @@ public final class MockOsgi {
* @return true if activation method was called. False if it failed.
*/
public static boolean activate(Object target, BundleContext bundleContext, Map<String, Object> properties) {
- return activate(target, bundleContext, toDictionary(properties));
+ return activate(target, bundleContext, MapUtil.toDictionary(properties));
}
/**
@@ -202,7 +199,7 @@ public final class MockOsgi {
* @return true if deactivation method was called. False if it failed.
*/
public static boolean deactivate(Object target, Map<String, Object> properties) {
- return deactivate(target, toDictionary(properties));
+ return deactivate(target, MapUtil.toDictionary(properties));
}
/**
@@ -225,7 +222,7 @@ public final class MockOsgi {
* @return true if activation method was called. False if it failed.
*/
public static boolean deactivate(Object target, BundleContext bundleContext, Map<String, Object> properties) {
- return deactivate(target, bundleContext, toDictionary(properties));
+ return deactivate(target, bundleContext, MapUtil.toDictionary(properties));
}
/**
@@ -236,7 +233,7 @@ public final class MockOsgi {
* @return true if modified method was called. False if it failed.
*/
public static boolean modified(Object target, BundleContext bundleContext, Dictionary<String, Object> properties) {
- return modified(target, bundleContext, toMap(properties));
+ return modified(target, bundleContext, MapUtil.toMap(properties));
}
/**
@@ -250,18 +247,4 @@ public final class MockOsgi {
return ReflectionServiceUtil.modified(target, bundleContext, properties);
}
- static Dictionary<String, Object> toDictionary(Map<String, Object> map) {
- return new Hashtable<String, Object>(map);
- }
-
- static Map<String, Object> toMap(Dictionary<String, Object> dictionary) {
- Map<String,Object> map = new HashMap<String, Object>();
- Enumeration<String> keys = dictionary.keys();
- while (keys.hasMoreElements()) {
- String key = keys.nextElement();
- map.put(key, dictionary.get(key));
- }
- return map;
- }
-
}
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java Fri Nov 14 21:32:42 2014
@@ -44,12 +44,11 @@ class MockServiceRegistration implements
private Dictionary<String, Object> properties;
private final ServiceReference serviceReference;
- @SuppressWarnings("unchecked")
public MockServiceRegistration(final Bundle bundle, final String[] clazzes, final Object service,
final Dictionary<String, Object> properties) {
this.clazzes = new HashSet<String>(ImmutableList.copyOf(clazzes));
this.service = service;
- this.properties = properties != null ? properties : new Hashtable();
+ this.properties = properties != null ? properties : new Hashtable<String,Object>();
this.properties.put(Constants.SERVICE_ID, ++serviceCounter);
this.serviceReference = new MockServiceReference(bundle, this);
readOsgiMetadata();
@@ -91,6 +90,9 @@ class MockServiceRegistration implements
private void readOsgiMetadata() {
Class<?> serviceClass = service.getClass();
Document doc = OsgiMetadataUtil.getMetadata(serviceClass);
+ if (doc == null) {
+ return;
+ }
// add service interfaces from OSGi metadata
clazzes.addAll(OsgiMetadataUtil.getServiceInterfaces(serviceClass, doc));
Added: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java?rev=1639791&view=auto
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java (added)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java Fri Nov 14 21:32:42 2014
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.testing.mock.osgi;
+
+/**
+ * Is thrown when a OSGi mock method required SCR metadata and this is not found in the classpath.
+ */
+public final class NoScrMetadataException extends RuntimeException {
+ private static final long serialVersionUID = 1L;
+
+ public NoScrMetadataException(Class<?> type) {
+ super("No OSGi SCR metadata found in classpath at " + OsgiMetadataUtil.getMetadataPath(type));
+ }
+
+}
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Fri Nov 14 21:32:42 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/NoScrMetadataException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java Fri Nov 14 21:32:42 2014
@@ -89,6 +89,10 @@ final class OsgiMetadataUtil {
return NAMESPACES.keySet().iterator();
}
};
+
+ public static String getMetadataPath(Class clazz) {
+ return "/OSGI-INF/" + StringUtils.substringBefore(clazz.getName(), "$") + ".xml";
+ }
/**
* Try to read OSGI-metadata from /OSGI-INF and read all implemented
@@ -97,7 +101,7 @@ final class OsgiMetadataUtil {
* @return Metadata document or null
*/
public static Document getMetadata(Class clazz) {
- String metadataPath = "/OSGI-INF/" + StringUtils.substringBefore(clazz.getName(), "$") + ".xml";
+ String metadataPath = getMetadataPath(clazz);
InputStream metadataStream = clazz.getResourceAsStream(metadataPath);
if (metadataStream == null) {
log.debug("No OSGi metadata found at {}", metadataPath);
@@ -124,16 +128,14 @@ final class OsgiMetadataUtil {
public static Set<String> getServiceInterfaces(Class clazz, Document metadata) {
Set<String> serviceInterfaces = new HashSet<String>();
- if (metadata != null) {
- String query = "/components/component[@name='" + clazz.getName() + "']/service/provide[@interface!='']";
- NodeList nodes = queryNodes(metadata, query);
- if (nodes != null) {
- for (int i = 0; i < nodes.getLength(); i++) {
- Node node = nodes.item(i);
- String serviceInterface = getAttributeValue(node, "interface");
- if (StringUtils.isNotBlank(serviceInterface)) {
- serviceInterfaces.add(serviceInterface);
- }
+ String query = "/components/component[@name='" + clazz.getName() + "']/service/provide[@interface!='']";
+ NodeList nodes = queryNodes(metadata, query);
+ if (nodes != null) {
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node node = nodes.item(i);
+ String serviceInterface = getAttributeValue(node, "interface");
+ if (StringUtils.isNotBlank(serviceInterface)) {
+ serviceInterfaces.add(serviceInterface);
}
}
}
@@ -142,20 +144,18 @@ final class OsgiMetadataUtil {
public static Map<String, Object> getProperties(Class clazz, Document metadata) {
Map<String, Object> props = new HashMap<String, Object>();
- if (metadata != null) {
- String query = "/components/component[@name='" + clazz.getName() + "']/property[@name!='' and @value!='']";
- NodeList nodes = queryNodes(metadata, query);
- if (nodes != null) {
- for (int i = 0; i < nodes.getLength(); i++) {
- Node node = nodes.item(i);
- String name = getAttributeValue(node, "name");
- String value = getAttributeValue(node, "value");
- String type = getAttributeValue(node, "type");
- if (StringUtils.equals("Integer", type)) {
- props.put(name, Integer.parseInt(value));
- } else {
- props.put(name, value);
- }
+ String query = "/components/component[@name='" + clazz.getName() + "']/property[@name!='' and @value!='']";
+ NodeList nodes = queryNodes(metadata, query);
+ if (nodes != null) {
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node node = nodes.item(i);
+ String name = getAttributeValue(node, "name");
+ String value = getAttributeValue(node, "value");
+ String type = getAttributeValue(node, "type");
+ if (StringUtils.equals("Integer", type)) {
+ props.put(name, Integer.parseInt(value));
+ } else {
+ props.put(name, value);
}
}
}
@@ -164,14 +164,12 @@ final class OsgiMetadataUtil {
public static List<Reference> getReferences(Class clazz, Document metadata) {
List<Reference> references = new ArrayList<Reference>();
- if (metadata != null) {
- String query = "/components/component[@name='" + clazz.getName() + "']/reference[@name!='']";
- NodeList nodes = queryNodes(metadata, query);
- if (nodes != null) {
- for (int i = 0; i < nodes.getLength(); i++) {
- Node node = nodes.item(i);
- references.add(new Reference(node));
- }
+ String query = "/components/component[@name='" + clazz.getName() + "']/reference[@name!='']";
+ NodeList nodes = queryNodes(metadata, query);
+ if (nodes != null) {
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node node = nodes.item(i);
+ references.add(new Reference(node));
}
}
return references;
@@ -190,12 +188,10 @@ final class OsgiMetadataUtil {
}
private static String getLifecycleMethodName(Class clazz, Document metadata, String methodName) {
- if (metadata != null) {
- String query = "/components/component[@name='" + clazz.getName() + "']";
- Node node = queryNode(metadata, query);
- if (node != null) {
- return getAttributeValue(node, methodName);
- }
+ String query = "/components/component[@name='" + clazz.getName() + "']";
+ Node node = queryNode(metadata, query);
+ if (node != null) {
+ return getAttributeValue(node, methodName);
}
return null;
}
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java Fri Nov 14 21:32:42 2014
@@ -55,11 +55,15 @@ final class ReflectionServiceUtil {
* @param componentContext Component context
* @return true if activation/deactivation method was called. False if it failed.
*/
+ @SuppressWarnings("unchecked")
public static boolean activateDeactivate(Object target, ComponentContext componentContext, boolean activate) {
Class<?> targetClass = target.getClass();
// get method name for activation/deactivation from osgi metadata
Document metadata = OsgiMetadataUtil.getMetadata(targetClass);
+ if (metadata==null) {
+ throw new NoScrMetadataException(targetClass);
+ }
String methodName;
if (activate) {
methodName = OsgiMetadataUtil.getActivateMethodName(targetClass, metadata);
@@ -89,7 +93,7 @@ final class ReflectionServiceUtil {
// 3. map
method = getMethod(targetClass, methodName, new Class<?>[] { Map.class });
if (method != null) {
- invokeMethod(target, method, new Object[] { componentContext.getProperties() });
+ invokeMethod(target, method, new Object[] { MapUtil.toMap(componentContext.getProperties()) });
return true;
}
@@ -125,7 +129,7 @@ final class ReflectionServiceUtil {
args[i] = componentContext.getBundleContext();
}
else if (method.getParameterTypes()[i] == Map.class) {
- args[i] = componentContext.getProperties();
+ args[i] = MapUtil.toMap(componentContext.getProperties());
}
else if (method.getParameterTypes()[i] == int.class || method.getParameterTypes()[i] == Integer.class) {
args[i] = 0;
@@ -157,6 +161,9 @@ final class ReflectionServiceUtil {
// get method name for activation/deactivation from osgi metadata
Document metadata = OsgiMetadataUtil.getMetadata(targetClass);
+ if (metadata==null) {
+ throw new NoScrMetadataException(targetClass);
+ }
String methodName = OsgiMetadataUtil.getModifiedMethodName(targetClass, metadata);
// try to find matching modified method and execute it
@@ -257,7 +264,12 @@ final class ReflectionServiceUtil {
// collect all declared reference annotations on class and field level
Class<?> targetClass = target.getClass();
- List<Reference> references = getReferences(targetClass);
+
+ Document metadata = OsgiMetadataUtil.getMetadata(targetClass);
+ if (metadata==null) {
+ throw new NoScrMetadataException(targetClass);
+ }
+ List<Reference> references = OsgiMetadataUtil.getReferences(targetClass, metadata);
// try to inject services
boolean allInjected = true;
@@ -268,11 +280,6 @@ final class ReflectionServiceUtil {
return allInjected;
}
- private static List<Reference> getReferences(Class clazz) {
- Document metadata = OsgiMetadataUtil.getMetadata(clazz);
- return OsgiMetadataUtil.getReferences(clazz, metadata);
- }
-
private static boolean injectServiceReference(Reference reference, Object target, BundleContext bundleContext) {
Class<?> targetClass = target.getClass();
Modified: sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImpl.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImpl.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/context/OsgiContextImpl.java Fri Nov 14 21:32:42 2014
@@ -32,8 +32,6 @@ import org.osgi.service.component.Compon
import aQute.bnd.annotation.ConsumerType;
-import com.google.common.collect.ImmutableMap;
-
/**
* Defines OSGi context objects and helper methods. Should not be used directly
* but via the {@link org.apache.sling.testing.mock.osgi.junit.OsgiContext} JUnit rule.
@@ -108,8 +106,7 @@ public class OsgiContextImpl {
if (properties != null) {
serviceProperties = new Hashtable<String, Object>(properties);
}
- bundleContext().registerService(serviceClass != null ? serviceClass.getName() : null, service,
- serviceProperties);
+ bundleContext().registerService(serviceClass != null ? serviceClass.getName() : null, service, serviceProperties);
return service;
}
@@ -121,7 +118,7 @@ public class OsgiContextImpl {
* @return Registered service instance
*/
public final <T> T registerInjectActivateService(final T service) {
- return registerInjectActivateService(service, ImmutableMap.<String, Object> of());
+ return registerInjectActivateService(service, null);
}
/**
@@ -135,7 +132,7 @@ public class OsgiContextImpl {
public final <T> T registerInjectActivateService(final T service, final Map<String, Object> properties) {
MockOsgi.injectServices(service, bundleContext());
MockOsgi.activate(service, bundleContext(), properties);
- registerService(null, service, null);
+ registerService(null, service, properties);
return service;
}
Modified: sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java?rev=1639791&r1=1639790&r2=1639791&view=diff
==============================================================================
--- sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java (original)
+++ sling/trunk/testing/mocks/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java Fri Nov 14 21:32:42 2014
@@ -123,6 +123,26 @@ public class ReflectionServiceUtilTest {
assertSame(service1, service4.getReference1());
}
+ @Test(expected=NoScrMetadataException.class)
+ public void testInjectServicesNoMetadata() {
+ MockOsgi.injectServices(new Object(), MockOsgi.newBundleContext());
+ }
+
+ @Test(expected=NoScrMetadataException.class)
+ public void testActivateNoMetadata() {
+ MockOsgi.activate(new Object());
+ }
+
+ @Test(expected=NoScrMetadataException.class)
+ public void testDeactivateNoMetadata() {
+ MockOsgi.deactivate(new Object());
+ }
+
+ @Test(expected=NoScrMetadataException.class)
+ public void testModifiedNoMetadata() {
+ MockOsgi.modified(new Object(), MockOsgi.newBundleContext(), ImmutableMap.<String,Object>of());
+ }
+
public interface ServiceInterface1 {
// no methods
}
@@ -173,7 +193,7 @@ public class ReflectionServiceUtilTest {
@Activate
private void activate(ComponentContext ctx) {
this.componentContext = ctx;
- this.config = MockOsgi.toMap(ctx.getProperties());
+ this.config = MapUtil.toMap(ctx.getProperties());
}
@Deactivate
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=1639791&r1=1639790&r2=1639791&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 Fri Nov 14 21:32:42 2014
@@ -27,6 +27,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.apache.sling.testing.mock.osgi.NoScrMetadataException;
+import org.apache.sling.testing.mock.osgi.ReflectionServiceUtilTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -90,6 +92,11 @@ public class OsgiContextImplTest {
@Test
public void testRegisterInjectActivate() {
+ context.registerInjectActivateService(new ReflectionServiceUtilTest.Service3());
+ }
+
+ @Test(expected=NoScrMetadataException.class)
+ public void testRegisterInjectActivateInvalid() {
context.registerInjectActivateService(new Object());
}