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:15 UTC
[sling-org-apache-sling-testing-sling-mock] 06/26: SLING-4042 do
not forget to register ResourceResolverFactory in OSGi context as well
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 43eb3508bbf6ca3fa5919e39173ceacf1da14c7e
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Oct 16 16:11:32 2014 +0000
SLING-4042 do not forget to register ResourceResolverFactory in OSGi context as well
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1632375 13f79535-47bb-0310-9956-ffa450edef68
---
.../context/ContextResourceResolverFactory.java | 29 ++++++++++++----------
.../mock/sling/context/SlingContextImpl.java | 24 ++++++++++++++----
.../mock/sling/context/SlingContextImplTest.java | 7 ++++++
3 files changed, 42 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
index a8596ae..2891fc6 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
@@ -22,7 +22,9 @@ import javax.jcr.NamespaceRegistry;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.testing.mock.sling.MockSling;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
@@ -35,42 +37,43 @@ final class ContextResourceResolverFactory {
// static methods only
}
- public static ResourceResolver initializeResourceResolver(final ResourceResolverType resourceResolverType) {
+ public static ResourceResolverFactory get(final ResourceResolverType resourceResolverType) {
try {
- ResourceResolver resourceResolver = MockSling.newResourceResolver(resourceResolverType);
+ ResourceResolverFactory factory = MockSling.newResourceResolverFactory(resourceResolverType);
switch (resourceResolverType) {
case JCR_MOCK:
- initializeJcrMock(resourceResolver);
+ initializeJcrMock(factory);
break;
case JCR_JACKRABBIT:
- initializeJcrJackrabbit(resourceResolver);
+ initializeJcrJackrabbit(factory);
break;
case RESOURCERESOLVER_MOCK:
- initializeResourceResolverMock(resourceResolver);
+ initializeResourceResolverMock(factory);
break;
default:
throw new IllegalArgumentException("Invalid resource resolver type: " + resourceResolverType);
}
- return resourceResolver;
+ return factory;
} catch (Throwable ex) {
- throw new RuntimeException("Unable to initialize " + resourceResolverType + " resource resolver.", ex);
+ throw new RuntimeException("Unable to initialize " + resourceResolverType + " resource resolver factory.", ex);
}
}
- private static void initializeJcrMock(final ResourceResolver resourceResolver) throws RepositoryException {
+ private static void initializeJcrMock(ResourceResolverFactory factory) throws RepositoryException, LoginException {
// register default namespaces
- NamespaceRegistry namespaceRegistry = resourceResolver.adaptTo(Session.class).getWorkspace()
- .getNamespaceRegistry();
+ ResourceResolver resolver = factory.getResourceResolver(null);
+ Session session = resolver.adaptTo(Session.class);
+ NamespaceRegistry namespaceRegistry = session.getWorkspace().getNamespaceRegistry();
namespaceRegistry.registerNamespace("sling", "http://sling.apache.org/jcr/sling/1.0");
}
- private static void initializeJcrJackrabbit(final ResourceResolver resourceResolver) {
- // TODO: register sling node types
+ private static void initializeJcrJackrabbit(ResourceResolverFactory factory) {
+ // register sling node types?
}
- private static void initializeResourceResolverMock(final ResourceResolver resourceResolver) {
+ private static void initializeResourceResolverMock(ResourceResolverFactory factory) {
// nothing to do
}
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 d72434d..907f804 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
@@ -27,8 +27,10 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.sling.api.adapter.AdapterFactory;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.scripting.SlingBindings;
import org.apache.sling.api.scripting.SlingScriptHelper;
import org.apache.sling.commons.mime.MimeTypeService;
@@ -73,6 +75,7 @@ public class SlingContextImpl {
// default to publish instance run mode
static final Set<String> DEFAULT_RUN_MODES = ImmutableSet.<String> builder().add("publish").build();
+ protected ResourceResolverFactory resourceResolverFactory;
protected MockModelAdapterFactory modelAdapterFactory;
protected ResourceResolverType resourceResolverType;
protected ComponentContext componentContext;
@@ -95,14 +98,25 @@ public class SlingContextImpl {
*/
protected void setUp() {
MockSling.setAdapterManagerBundleContext(bundleContext());
+ this.resourceResolverFactory = newResourceResolverFactory();
registerDefaultServices();
}
+
+ /**
+ * Initialize mocked resource resolver factory.
+ */
+ protected ResourceResolverFactory newResourceResolverFactory() {
+ return ContextResourceResolverFactory.get(this.resourceResolverType);
+ }
/**
* Default services that should be available for every unit test
*/
protected void registerDefaultServices() {
+ // resource resolver factory
+ registerService(ResourceResolverFactory.class, this.resourceResolverFactory);
+
// adapter factories
modelAdapterFactory = new MockModelAdapterFactory(componentContext());
registerService(AdapterFactory.class, modelAdapterFactory);
@@ -187,15 +201,15 @@ public class SlingContextImpl {
*/
public final ResourceResolver resourceResolver() {
if (this.resourceResolver == null) {
- this.resourceResolver = createMockResourceResolver();
+ try {
+ this.resourceResolver = this.resourceResolverFactory.getResourceResolver(null);
+ } catch (LoginException ex) {
+ throw new RuntimeException("Creating resource resolver failed.", ex);
+ }
}
return this.resourceResolver;
}
- protected ResourceResolver createMockResourceResolver() {
- return ContextResourceResolverFactory.initializeResourceResolver(resourceResolverType());
- }
-
/**
* @return Sling request
*/
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 eed2ec6..d667002 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
@@ -34,6 +34,7 @@ import javax.inject.Inject;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.scripting.SlingBindings;
import org.apache.sling.commons.mime.MimeTypeService;
import org.apache.sling.models.annotations.Model;
@@ -192,6 +193,12 @@ public class SlingContextImplTest {
assertTrue(newRunModes.contains("mode1"));
assertTrue(newRunModes.contains("mode2"));
}
+
+ @Test
+ public void testResourceResolverFactory() {
+ ResourceResolverFactory factory = context.getService(ResourceResolverFactory.class);
+ assertNotNull(factory);
+ }
@Model(adaptables = SlingHttpServletRequest.class)
public interface RequestAttributeModel {
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.