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/10/20 14:41:32 UTC

[sling-org-apache-sling-jcr-repository-it-resource-versioning] 03/13: SLING-848; Updated API version to 2.9.0. Use MockJcrResourceResolverFactory implementation from the Sling Mock in versioning IT

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-repository-it-resource-versioning.git

commit 891e303e0c77053f370949badd55c38a31f655e9
Author: tomekr <to...@unknown>
AuthorDate: Tue Feb 24 09:33:51 2015 +0000

    SLING-848; Updated API version to 2.9.0. Use MockJcrResourceResolverFactory implementation from the Sling Mock in versioning IT
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1661870 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |   2 +-
 .../jcr/resource/it/ResourceVersioningTest.java    |   7 +-
 .../mock/sling/MockJcrResourceResolverFactory.java | 135 ---------------------
 .../testing/mock/sling/MockResolverProvider.java   |  23 ++++
 4 files changed, 26 insertions(+), 141 deletions(-)

diff --git a/pom.xml b/pom.xml
index c3ebe71..44429e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,7 +72,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.8.1-SNAPSHOT</version>
+            <version>2.9.0</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/src/test/java/org/apache/sling/jcr/resource/it/ResourceVersioningTest.java b/src/test/java/org/apache/sling/jcr/resource/it/ResourceVersioningTest.java
index 0c45c1c..2589fcc 100644
--- a/src/test/java/org/apache/sling/jcr/resource/it/ResourceVersioningTest.java
+++ b/src/test/java/org/apache/sling/jcr/resource/it/ResourceVersioningTest.java
@@ -35,9 +35,7 @@ import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.commons.testing.jcr.RepositoryProvider;
-import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.testing.mock.sling.MockJcrResourceResolverFactory;
+import org.apache.sling.testing.mock.sling.MockResolverProvider;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -54,8 +52,7 @@ public class ResourceVersioningTest {
 
     @Before
     public void setUp() throws Exception {
-        SlingRepository repository = RepositoryProvider.instance().getRepository();
-        resolver = new MockJcrResourceResolverFactory(repository).getAdministrativeResourceResolver(null);
+        resolver = MockResolverProvider.getResourceResolver();
         session = resolver.adaptTo(Session.class);
         versionManager = session.getWorkspace().getVersionManager();
         registerNamespace("sling", "http://sling.apache.org/jcr/sling/1.0");
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java b/src/test/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
deleted file mode 100644
index 96b0732..0000000
--- a/src/test/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sling.testing.mock.sling;
-
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.ResourceProvider;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory;
-import org.apache.sling.jcr.resource.internal.helper.jcr.PathMapper;
-import org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl;
-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;
-
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Mock {@link ResourceResolver} implementation. Simulates OSGi environment and
- * initiates real Sling ResourceResolver and JCR implementation, but with a
- * mocked JCR repository implementation underneath.
- */
-public class MockJcrResourceResolverFactory implements ResourceResolverFactory {
-
-    private final SlingRepository slingRepository;
-
-    public MockJcrResourceResolverFactory(final SlingRepository repository) {
-        this.slingRepository = repository;
-    }
-
-    private ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException {
-        // setup mock OSGi environment
-        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
-        bundleContext.registerService(SlingRepository.class.getName(), this.slingRepository, null);
-        bundleContext.registerService(PathMapper.class.getName(), new PathMapper(), null);
-
-        // setup real sling JCR resource provider implementation for use in
-        // mocked context
-        JcrResourceProviderFactory jcrResourceProviderFactory = new JcrResourceProviderFactory();
-        MockOsgi.injectServices(jcrResourceProviderFactory, bundleContext);
-        MockOsgi.activate(jcrResourceProviderFactory, bundleContext, ImmutableMap.<String, Object> of());
-
-        ResourceProvider resourceProvider;
-        if (isAdmin) {
-            resourceProvider = jcrResourceProviderFactory.getAdministrativeResourceProvider(authenticationInfo);
-        }
-        else {
-            resourceProvider = jcrResourceProviderFactory.getResourceProvider(authenticationInfo);
-        }
-
-        Dictionary<Object, Object> resourceProviderProps = new Hashtable<Object, Object>();
-        resourceProviderProps.put(ResourceProvider.ROOTS, new String[] { "/" });
-        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(resourceProviderComponentContext);
-        CommonResourceResolverFactoryImpl commonFactoryImpl = new CommonResourceResolverFactoryImpl(activator);
-        ResourceResolverContext context = new ResourceResolverContext(true, authenticationInfo, new ResourceAccessSecurityTracker());
-        ResourceResolverImpl resourceResolver = new ResourceResolverImpl(commonFactoryImpl, context);
-        return resourceResolver;
-    }
-
-    private Map<String, Object> getServiceReferenceProperties(final ServiceReference serviceReference) {
-        Map<String, Object> props = new HashMap<String, Object>();
-        String[] keys = serviceReference.getPropertyKeys();
-        for (String key : keys) {
-            props.put(key, serviceReference.getProperty(key));
-        }
-        return props;
-    }
-
-    @Override
-    public ResourceResolver getResourceResolver(final Map<String, Object> authenticationInfo) throws LoginException {
-        return getResourceResolverInternal(authenticationInfo, false);
-    }
-
-    @Override
-    public ResourceResolver getAdministrativeResourceResolver(final Map<String, Object> authenticationInfo)
-            throws LoginException {
-        return getResourceResolverInternal(authenticationInfo, true);
-    }
-
-    // part of Sling API 2.7
-    public ResourceResolver getServiceResourceResolver(final Map<String, Object> authenticationInfo)
-            throws LoginException {
-        return getResourceResolverInternal(authenticationInfo, true);
-    }
-
-    // part of Sling API 2.8
-    public ResourceResolver getThreadResourceResolver() {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/MockResolverProvider.java b/src/test/java/org/apache/sling/testing/mock/sling/MockResolverProvider.java
new file mode 100644
index 0000000..00a2bbd
--- /dev/null
+++ b/src/test/java/org/apache/sling/testing/mock/sling/MockResolverProvider.java
@@ -0,0 +1,23 @@
+package org.apache.sling.testing.mock.sling;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.testing.jcr.RepositoryProvider;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.jcr.resource.internal.helper.jcr.PathMapper;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
+import org.osgi.framework.BundleContext;
+
+public class MockResolverProvider {
+    private MockResolverProvider() {
+    }
+    
+    public static ResourceResolver getResourceResolver() throws RepositoryException, LoginException {
+        final SlingRepository repository = RepositoryProvider.instance().getRepository();
+        final BundleContext bundleContext = MockOsgi.newBundleContext();
+        bundleContext.registerService(PathMapper.class.getName(), new PathMapper(), null);
+        return new MockJcrResourceResolverFactory(repository, bundleContext).getAdministrativeResourceResolver(null);
+    }
+}

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