You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/02/04 14:29:42 UTC

svn commit: r1657210 - in /sling/trunk/testing/mocks/sling-mock/src: main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java

Author: sseifert
Date: Wed Feb  4 13:29:42 2015
New Revision: 1657210

URL: http://svn.apache.org/r1657210
Log:
SLING-4394 Sling Mock with JCR-based Resource Resolver: Support default search paths

Modified:
    sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
    sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java

Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java?rev=1657210&r1=1657209&r2=1657210&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java Wed Feb  4 13:29:42 2015
@@ -34,6 +34,7 @@ import org.apache.sling.resourceresolver
 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.Immutab
 
 /**
  * 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 imp
 
     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 imp
         
         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);

Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java?rev=1657210&r1=1657209&r2=1657210&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java Wed Feb  4 13:29:42 2015
@@ -40,6 +40,7 @@ import org.apache.sling.api.resource.Res
 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 AbstractSlingCrudR
         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());
+    }
+
 }