Author: sseifert
Date: Sat Apr 29 07:25:35 2017
New Revision: 1793172

URL: http://svn.apache.org/viewvc?rev=1793172&view=rev
Log:
SLING-6812 sling-mock: Lazy initialization of ResourceResolverFactory

Modified:
    
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.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/NoResourceResolverTypeTest.java

Modified: 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java?rev=1793172&r1=1793171&r2=1793172&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
 (original)
+++ 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
 Sat Apr 29 07:25:35 2017
@@ -124,6 +124,7 @@ class ResourceResolverFactoryInitializer
         Dictionary<String, Object> config = new Hashtable<String, Object>();
         // do not required a specific resource provider (otherwise "NONE" will 
not work)
         config.put("resource.resolver.required.providers", "");
+        config.put("resource.resolver.required.providernames", "");
         ResourceResolverFactoryActivator activator = new 
ResourceResolverFactoryActivator();
         MockOsgi.injectServices(activator, bundleContext);
         MockOsgi.activate(activator, bundleContext, config);

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=1793172&r1=1793171&r2=1793172&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
 Sat Apr 29 07:25:35 2017
@@ -118,7 +118,6 @@ public class SlingContextImpl extends Os
             MockOsgi.setConfigForPid(bundleContext(), 
RESOURCERESOLVERFACTORYACTIVATOR_PID, 
this.resourceResolverFactoryActivatorProps);
         }
         
-        this.resourceResolverFactory = newResourceResolverFactory();
         registerDefaultServices();
     }
     
@@ -129,6 +128,13 @@ public class SlingContextImpl extends Os
     protected ResourceResolverFactory newResourceResolverFactory() {
         return ContextResourceResolverFactory.get(this.resourceResolverType, 
bundleContext());
     }
+    
+    private ResourceResolverFactory resourceResolverFactory() {
+        if (this.resourceResolverFactory == null) {
+            this.resourceResolverFactory = newResourceResolverFactory();
+        }
+        return this.resourceResolverFactory;
+    }
 
     /**
      * Default services that should be available for every unit test
@@ -212,7 +218,7 @@ public class SlingContextImpl extends Os
     public final ResourceResolverType resourceResolverType() {
         return this.resourceResolverType;
     }
-
+    
     /**
      * Returns the singleton resource resolver bound to this context.
      * It is automatically closed after the test.
@@ -221,7 +227,7 @@ public class SlingContextImpl extends Os
     public final ResourceResolver resourceResolver() {
         if (this.resourceResolver == null) {
             try {
-                this.resourceResolver = 
this.resourceResolverFactory.getAdministrativeResourceResolver(null);
+                this.resourceResolver = 
this.resourceResolverFactory().getAdministrativeResourceResolver(null);
             } catch (LoginException ex) {
                 throw new RuntimeException("Creating resource resolver 
failed.", ex);
             }

Modified: 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java?rev=1793172&r1=1793171&r2=1793172&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
 (original)
+++ 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
 Sat Apr 29 07:25:35 2017
@@ -22,18 +22,31 @@ import static org.junit.Assert.assertTru
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.SyntheticResource;
+import org.apache.sling.spi.resource.provider.ResourceProvider;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
 
+@RunWith(MockitoJUnitRunner.class)
 public class NoResourceResolverTypeTest {
 
     @Rule
     public SlingContext context = new SlingContext(ResourceResolverType.NONE);
     
+    @Mock
+    private ResourceProvider<?> resourceProvider;
+    
     @Test
     public void testRoot() {
+        // resgister dummy resource provider because otherwise 
ResourceResolverFactory get's not activated
+        // with lates sling resource resolver implementation
+        context.registerService(ResourceProvider.class, resourceProvider,
+                ResourceProvider.PROPERTY_ROOT, "/");
+        
         Resource root = context.resourceResolver().getResource("/");
         assertTrue(root instanceof SyntheticResource);
     }


Reply via email to