You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:21:29 UTC
[sling-org-apache-sling-testing-sling-mock] 20/26: SLING-4162
Introduce "OsgiContext" junit rule for OSGi and OsgiContextImpl
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit cb5f2377fd889cc8fbe3e3970ee7c4d75904bf0a
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Fri Nov 14 09:55:05 2014 +0000
SLING-4162 Introduce "OsgiContext" junit rule for OSGi and OsgiContextImpl
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1639589 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
.../mock/sling/context/SlingContextImpl.java | 122 ++-------------------
.../testing/mock/sling/context/package-info.java | 2 +-
.../testing/mock/sling/junit/SlingContext.java | 6 +-
.../testing/mock/sling/junit/package-info.java | 2 +-
.../mock/sling/context/SlingContextImplTest.java | 44 --------
.../testing/mock/sling/junit/SlingContextTest.java | 10 --
7 files changed, 14 insertions(+), 174 deletions(-)
diff --git a/pom.xml b/pom.xml
index 66a28ce..c3621a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.osgi-mock</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 229b1e1..976c4e0 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -18,9 +18,6 @@
*/
package org.apache.sling.testing.mock.sling.context;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.Map;
import java.util.Set;
import javax.jcr.RepositoryException;
@@ -47,7 +44,7 @@ import org.apache.sling.models.impl.injectors.ValueMapInjector;
import org.apache.sling.models.spi.ImplementationPicker;
import org.apache.sling.models.spi.Injector;
import org.apache.sling.settings.SlingSettingsService;
-import org.apache.sling.testing.mock.osgi.MockOsgi;
+import org.apache.sling.testing.mock.osgi.context.OsgiContextImpl;
import org.apache.sling.testing.mock.sling.MockSling;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.apache.sling.testing.mock.sling.builder.ContentBuilder;
@@ -58,11 +55,10 @@ import org.apache.sling.testing.mock.sling.services.MockSlingSettingService;
import org.apache.sling.testing.mock.sling.servlet.MockRequestPathInfo;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse;
-import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.component.ComponentContext;
-import com.google.common.collect.ImmutableMap;
+import aQute.bnd.annotation.ConsumerType;
+
import com.google.common.collect.ImmutableSet;
/**
@@ -70,7 +66,8 @@ import com.google.common.collect.ImmutableSet;
* directly but via the {@link org.apache.sling.testing.mock.sling.junit.SlingContext} JUnit
* rule.
*/
-public class SlingContextImpl {
+@ConsumerType
+public class SlingContextImpl extends OsgiContextImpl {
// default to publish instance run mode
static final Set<String> DEFAULT_RUN_MODES = ImmutableSet.<String> builder().add("publish").build();
@@ -78,7 +75,6 @@ public class SlingContextImpl {
protected ResourceResolverFactory resourceResolverFactory;
protected MockModelAdapterFactory modelAdapterFactory;
protected ResourceResolverType resourceResolverType;
- protected ComponentContext componentContext;
protected ResourceResolver resourceResolver;
protected MockSlingHttpServletRequest request;
protected MockSlingHttpServletResponse response;
@@ -97,6 +93,7 @@ public class SlingContextImpl {
* Setup actions before test method execution
*/
protected void setUp() {
+ super.setUp();
MockSling.setAdapterManagerBundleContext(bundleContext());
this.resourceResolverFactory = newResourceResolverFactory();
registerDefaultServices();
@@ -171,6 +168,8 @@ public class SlingContextImpl {
this.contentBuilder = null;
MockSling.clearAdapterManagerBundleContext();
+
+ super.tearDown();
}
/**
@@ -181,23 +180,6 @@ public class SlingContextImpl {
}
/**
- * @return OSGi component context
- */
- public final ComponentContext componentContext() {
- if (this.componentContext == null) {
- this.componentContext = MockOsgi.newComponentContext();
- }
- return this.componentContext;
- }
-
- /**
- * @return OSGi Bundle context
- */
- public final BundleContext bundleContext() {
- return componentContext().getBundleContext();
- }
-
- /**
* @return Resource resolver
*/
public final ResourceResolver resourceResolver() {
@@ -277,94 +259,6 @@ public class SlingContextImpl {
}
/**
- * Registers a service in the mocked OSGi environment.
- * @param <T> Service type
- * @param service Service instance
- * @return Registered service instance
- */
- public final <T> T registerService(final T service) {
- return registerService(null, service, null);
- }
-
- /**
- * Registers a service in the mocked OSGi environment.
- * @param <T> Service type
- * @param serviceClass Service class
- * @param service Service instance
- * @return Registered service instance
- */
- public final <T> T registerService(final Class<T> serviceClass, final T service) {
- return registerService(serviceClass, service, null);
- }
-
- /**
- * Registers a service in the mocked OSGi environment.
- * @param <T> Service type
- * @param serviceClass Service class
- * @param service Service instance
- * @param properties Service properties (optional)
- * @return Registered service instance
- */
- public final <T> T registerService(final Class<T> serviceClass, final T service, final Map<String, Object> properties) {
- Dictionary<String, Object> serviceProperties = null;
- if (properties != null) {
- serviceProperties = new Hashtable<String, Object>(properties);
- }
- bundleContext().registerService(serviceClass != null ? serviceClass.getName() : null, service,
- serviceProperties);
- return service;
- }
-
- /**
- * Injects dependencies, activates and registers a service in the mocked
- * OSGi environment.
- * @param <T> Service type
- * @param service Service instance
- * @return Registered service instance
- */
- public final <T> T registerInjectActivateService(final T service) {
- return registerInjectActivateService(service, ImmutableMap.<String, Object> of());
- }
-
- /**
- * Injects dependencies, activates and registers a service in the mocked
- * OSGi environment.
- * @param <T> Service type
- * @param service Service instance
- * @param properties Service properties (optional)
- * @return Registered service instance
- */
- 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);
- return service;
- }
-
- /**
- * Lookup a single service
- * @param <ServiceType> Service type
- * @param serviceType The type (interface) of the service.
- * @return The service instance, or null if the service is not available.
- */
- public final <ServiceType> ServiceType getService(final Class<ServiceType> serviceType) {
- return slingScriptHelper().getService(serviceType);
- }
-
- /**
- * Lookup one or several services
- * @param <ServiceType> Service type
- * @param serviceType The type (interface) of the service.
- * @param filter An optional filter (LDAP-like, see OSGi spec)
- * @return The services object or null.
- * @throws org.apache.sling.api.scripting.InvalidServiceFilterSyntaxException If the <code>filter</code>
- * string is not a valid OSGi service filter string.
- */
- public final <ServiceType> ServiceType[] getServices(final Class<ServiceType> serviceType, final String filter) {
- return slingScriptHelper().getServices(serviceType, filter);
- }
-
- /**
* @return Current resource
*/
public final Resource currentResource() {
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
index ca62fc4..cd3a4a5 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
@@ -19,5 +19,5 @@
/**
* Sling context implementation for unit tests.
*/
-@aQute.bnd.annotation.Version("1.0")
+@aQute.bnd.annotation.Version("2.0")
package org.apache.sling.testing.mock.sling.context;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
index 56413d3..5e0b48c 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
@@ -33,7 +33,6 @@ public final class SlingContext extends SlingContextImpl implements TestRule {
private final SlingContextCallback setUpCallback;
private final SlingContextCallback tearDownCallback;
- private final ResourceResolverType resourceResolverType;
private final TestRule delegate;
/**
@@ -103,10 +102,11 @@ public final class SlingContext extends SlingContextImpl implements TestRule {
this.setUpCallback = setUpCallback;
this.tearDownCallback = tearDownCallback;
- this.resourceResolverType = resourceResolverType;
- // user default rule that directly executes each test method once
+ // set resource resolver type in parent context
setResourceResolverType(this.resourceResolverType);
+
+ // wrap {@link ExternalResource} rule executes each test method once
this.delegate = new ExternalResource() {
@Override
protected void before() {
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
index 4700e5a..09b2c65 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
@@ -19,5 +19,5 @@
/**
* Rule for providing easy access to Sling context in JUnit tests.
*/
-@aQute.bnd.annotation.Version("1.0")
+@aQute.bnd.annotation.Version("2.0")
package org.apache.sling.testing.mock.sling.junit;
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
index 2c7aed5..817c502 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
@@ -24,9 +24,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
@@ -47,7 +44,6 @@ import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.osgi.framework.ServiceReference;
public class SlingContextImplTest {
@@ -89,41 +85,6 @@ public class SlingContextImplTest {
}
@Test
- public void testRegisterService() {
- Set<String> myService = new HashSet<String>();
- context.registerService(Set.class, myService);
-
- Set<?> serviceResult = context.getService(Set.class);
- assertSame(myService, serviceResult);
- }
-
- @Test
- public void testRegisterServiceWithProperties() {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put("prop1", "value1");
-
- Set<String> myService = new HashSet<String>();
- context.registerService(Set.class, myService, props);
-
- ServiceReference serviceReference = context.bundleContext().getServiceReference(Set.class.getName());
- Object serviceResult = context.bundleContext().getService(serviceReference);
- assertSame(myService, serviceResult);
- assertEquals("value1", serviceReference.getProperty("prop1"));
- }
-
- @Test
- public void testRegisterMultipleServices() {
- Set<String> myService1 = new HashSet<String>();
- context.registerService(Set.class, myService1);
- Set<String> myService2 = new HashSet<String>();
- context.registerService(Set.class, myService2);
-
- Set[] serviceResults = context.getServices(Set.class, null);
- assertSame(myService1, serviceResults[0]);
- assertSame(myService2, serviceResults[1]);
- }
-
- @Test
public void testSetCurrentResource() {
context.currentResource("/content/sample/en/jcr:content/par/colctrl");
assertEquals("/content/sample/en/jcr:content/par/colctrl", context.currentResource().getPath());
@@ -178,11 +139,6 @@ public class SlingContextImplTest {
}
@Test
- public void testRegisterInjectActivate() {
- context.registerInjectActivateService(new Object());
- }
-
- @Test
public void testRunModes() {
SlingSettingsService slingSettings = context.getService(SlingSettingsService.class);
assertEquals(SlingContextImpl.DEFAULT_RUN_MODES, slingSettings.getRunModes());
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
index 24c72dd..8af0b55 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
@@ -20,14 +20,12 @@ package org.apache.sling.testing.mock.sling.junit;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import java.io.IOException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -55,12 +53,4 @@ public class SlingContextTest {
assertNotNull(context.request());
}
- @After
- public void tearDown() {
- // reset required because mockito gets puzzled with the parameterized
- // JUnit rule
- // TODO: better solution?
- reset(contextSetup);
- }
-
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.