You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:21:56 UTC

[sling-org-apache-sling-testing-sling-mock] 06/19: SLING-4394 Sling Mock with JCR-based Resource Resolver: Support default search paths

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.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git

commit c49b0e1eadbbb99c935be0d46bae441f18dd9421
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Feb 4 13:29:42 2015 +0000

    SLING-4394 Sling Mock with JCR-based Resource Resolver: Support default search paths
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1657210 13f79535-47bb-0310-9956-ffa450edef68
---
 .../mock/sling/MockJcrResourceResolverFactory.java | 32 +++++++++++-----------
 .../AbstractSlingCrudResourceResolverTest.java     | 17 ++++++++++++
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
index f4fc1f1..2fb8248 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
@@ -34,6 +34,7 @@ import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
 import org.apache.sling.resourceresolver.impl.ResourceResolverImpl;
 import org.apache.sling.resourceresolver.impl.helper.ResourceResolverContext;
 import org.apache.sling.testing.mock.osgi.MockOsgi;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
@@ -42,7 +43,7 @@ import com.google.common.collect.ImmutableMap;
 
 /**
  * Mock {@link ResourceResolver} implementation. Simulates OSGi environment and
- * intatiates real Sling ResourceResolver and JCR implementation, but with a
+ * initiates real Sling ResourceResolver and JCR implementation, but with a
  * mocked JCR repository implementation underneath.
  */
 class MockJcrResourceResolverFactory implements ResourceResolverFactory {
@@ -55,22 +56,23 @@ class MockJcrResourceResolverFactory implements ResourceResolverFactory {
 
     private ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException {
         // setup mock OSGi environment
-        Dictionary<String, Object> resourceProviderFactoryProps = new Hashtable<String, Object>();
-        resourceProviderFactoryProps.put(Constants.SERVICE_VENDOR, "sling-mock");
-        resourceProviderFactoryProps.put(Constants.SERVICE_DESCRIPTION, "sling-mock");
-        resourceProviderFactoryProps.put("resource.resolver.manglenamespaces", true);
-        ComponentContext componentContext = MockOsgi.newComponentContext(resourceProviderFactoryProps);
+        BundleContext bundleContext = MockOsgi.newBundleContext();
+        
+        Dictionary<String, Object> resourceProviderFactoryFactoryProps = new Hashtable<String, Object>();
+        resourceProviderFactoryFactoryProps.put(Constants.SERVICE_VENDOR, "sling-mock");
+        resourceProviderFactoryFactoryProps.put(Constants.SERVICE_DESCRIPTION, "sling-mock");
+        resourceProviderFactoryFactoryProps.put("resource.resolver.manglenamespaces", true);
+        resourceProviderFactoryFactoryProps.put("resource.resolver.searchpath", new String[] { "/apps", "/libs" });
+        ComponentContext resourceProviderComponentContext = MockOsgi.newComponentContext(bundleContext, resourceProviderFactoryFactoryProps);
 
         // setup mocked JCR environment
-        componentContext.getBundleContext()
-                .registerService(SlingRepository.class.getName(), this.slingRepository, null);
+        bundleContext.registerService(SlingRepository.class.getName(), this.slingRepository, null);
 
         // setup real sling JCR resource provider implementation for use in
         // mocked context
         JcrResourceProviderFactory jcrResourceProviderFactory = new JcrResourceProviderFactory();
-        MockOsgi.injectServices(jcrResourceProviderFactory, componentContext.getBundleContext());
-        MockOsgi.activate(jcrResourceProviderFactory, componentContext.getBundleContext(),
-                ImmutableMap.<String, Object> of());
+        MockOsgi.injectServices(jcrResourceProviderFactory, bundleContext);
+        MockOsgi.activate(jcrResourceProviderFactory, bundleContext, ImmutableMap.<String, Object> of());
         
         ResourceProvider resourceProvider;
         if (isAdmin) {
@@ -82,17 +84,15 @@ class MockJcrResourceResolverFactory implements ResourceResolverFactory {
         
         Dictionary<Object, Object> resourceProviderProps = new Hashtable<Object, Object>();
         resourceProviderProps.put(ResourceProvider.ROOTS, new String[] { "/" });
-        componentContext.getBundleContext().registerService(ResourceProvider.class.getName(), resourceProvider,
-                resourceProviderProps);
-        ServiceReference resourceProviderServiceReference = componentContext.getBundleContext().getServiceReference(
-                ResourceProvider.class.getName());
+        bundleContext.registerService(ResourceProvider.class.getName(), resourceProvider, resourceProviderProps);
+        ServiceReference resourceProviderServiceReference = bundleContext.getServiceReference(ResourceProvider.class.getName());
 
         // setup real sling resource resolver implementation for use in mocked
         // context
         MockResourceResolverFactoryActivator activator = new MockResourceResolverFactoryActivator();
         activator.bindResourceProvider(resourceProvider,
                 getServiceReferenceProperties(resourceProviderServiceReference));
-        activator.activate(componentContext);
+        activator.activate(resourceProviderComponentContext);
         CommonResourceResolverFactoryImpl commonFactoryImpl = new CommonResourceResolverFactoryImpl(activator);
         ResourceResolverContext context = new ResourceResolverContext(true, authenticationInfo, new ResourceAccessSecurityTracker());
         ResourceResolverImpl resourceResolver = new ResourceResolverImpl(commonFactoryImpl, context);
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java
index 599d990..572cf6c 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java
@@ -40,6 +40,7 @@ import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.testing.mock.sling.MockSling;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
+import org.apache.sling.testing.mock.sling.builder.ContentBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -236,4 +237,20 @@ public abstract class AbstractSlingCrudResourceResolverTest {
         assertEquals("/", rootResource.getPath());
     }
 
+    @Test
+    public void testSearchPath() {
+        ContentBuilder builder = new ContentBuilder(this.resourceResolver);
+        builder.resource("/libs/any/path");
+
+        Resource resource = this.resourceResolver.getResource("any/path");
+        assertNotNull(resource);
+        assertEquals("/libs/any/path", resource.getPath());
+
+        builder.resource("/apps/any/path");
+
+        resource = this.resourceResolver.getResource("any/path");
+        assertNotNull(resource);
+        assertEquals("/apps/any/path", resource.getPath());
+    }
+
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.