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/10/16 18:11:33 UTC

svn commit: r1632375 - in /sling/trunk/testing/mocks/sling-mock/src: main/java/org/apache/sling/testing/mock/sling/context/ test/java/org/apache/sling/testing/mock/sling/context/

Author: sseifert
Date: Thu Oct 16 16:11:32 2014
New Revision: 1632375

URL: http://svn.apache.org/r1632375
Log:
SLING-4042 do not forget to register ResourceResolverFactory in OSGi context as well

Modified:
    sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
    sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
    sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java

Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java Thu Oct 16 16:11:32 2014
@@ -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 ContextResourceResolverFacto
         // 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
     }
 

Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java Thu Oct 16 16:11:32 2014
@@ -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
      */

Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java Thu Oct 16 16:11:32 2014
@@ -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 {