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-2.2.10 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 2c484d7b21be3983bd61ed83953aa1e9b1f35eab Author: Stefan Seifert <[email protected]> AuthorDate: Sat Apr 29 07:25:35 2017 +0000 SLING-6812 sling-mock: Lazy initialization of ResourceResolverFactory git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1793172 13f79535-47bb-0310-9956-ffa450edef68 --- .../mock/sling/ResourceResolverFactoryInitializer.java | 1 + .../sling/testing/mock/sling/context/SlingContextImpl.java | 12 +++++++++--- .../mock/sling/context/NoResourceResolverTypeTest.java | 13 +++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java index 65d8dc1..0b42c49 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java @@ -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); 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 dc5e986..20557eb 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 @@ -118,7 +118,6 @@ public class SlingContextImpl extends OsgiContextImpl { MockOsgi.setConfigForPid(bundleContext(), RESOURCERESOLVERFACTORYACTIVATOR_PID, this.resourceResolverFactoryActivatorProps); } - this.resourceResolverFactory = newResourceResolverFactory(); registerDefaultServices(); } @@ -129,6 +128,13 @@ public class SlingContextImpl extends OsgiContextImpl { 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 OsgiContextImpl { 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 OsgiContextImpl { 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); } diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java index bf861f3..5af4d3e 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java @@ -22,18 +22,31 @@ import static org.junit.Assert.assertTrue; 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); } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
