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 {


Reply via email to