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>.