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);
}