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-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 43eb3508bbf6ca3fa5919e39173ceacf1da14c7e Author: Stefan Seifert <[email protected]> AuthorDate: Thu Oct 16 16:11:32 2014 +0000 SLING-4042 do not forget to register ResourceResolverFactory in OSGi context as well git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1632375 13f79535-47bb-0310-9956-ffa450edef68 --- .../context/ContextResourceResolverFactory.java | 29 ++++++++++++---------- .../mock/sling/context/SlingContextImpl.java | 24 ++++++++++++++---- .../mock/sling/context/SlingContextImplTest.java | 7 ++++++ 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java index a8596ae..2891fc6 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java @@ -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 ContextResourceResolverFactory { // 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 } 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 d72434d..907f804 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 @@ -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 */ diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java index eed2ec6..d667002 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java @@ -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 { -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
