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.6.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit b90bd444040f2862d11b9aceba817de198b42435 Author: Stefan Seifert <[email protected]> AuthorDate: Fri Oct 2 20:52:05 2015 +0000 SLING-5088 refactor resource resolver initialization git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1706488 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/AbstractMockResourceResolverFactory.java | 1 + .../mock/sling/MockJcrResourceResolverAdapter.java | 2 +- .../mock/sling/MockJcrResourceResolverFactory.java | 2 +- ...Repository.java => MockJcrSlingRepository.java} | 4 +- .../sling/MockNoneResourceResolverFactory.java | 1 + .../apache/sling/testing/mock/sling/MockSling.java | 32 +-------- .../sling/ResourceResolverFactoryInitializer.java | 77 ++++++++++++++++++++++ ...ryTest.java => MockJcrSlingRepositoryTest.java} | 4 +- 8 files changed, 86 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java index 1a6915d..7b47918 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java @@ -40,6 +40,7 @@ import org.osgi.service.event.EventAdmin; * Mock {@link ResourceResolverFactory} implementation. * Uses real Sling ResourceResolverFactory in simulated OSGi environment. */ +@Deprecated abstract class AbstractMockResourceResolverFactory implements ResourceResolverFactory { protected final BundleContext bundleContext; diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java index 87705b6..8eafd59 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java @@ -38,7 +38,7 @@ class MockJcrResourceResolverAdapter implements ResourceResolverTypeAdapter { @Override public SlingRepository newSlingRepository() { Repository repository = MockJcr.newRepository(); - return new MockSlingRepository(repository); + return new MockJcrSlingRepository(repository); } } 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 bc1a83d..0890cd0 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 @@ -39,6 +39,7 @@ import org.osgi.framework.BundleContext; * Uses real Sling ResourceResolverFactory in simulated OSGi environment * with a mocked JCR repository implementation underneath. */ +@Deprecated class MockJcrResourceResolverFactory extends AbstractMockResourceResolverFactory { private final SlingRepository slingRepository; @@ -48,7 +49,6 @@ class MockJcrResourceResolverFactory extends AbstractMockResourceResolverFactory this.slingRepository = repository; } - @SuppressWarnings("deprecation") protected ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException { // setup mocked JCR environment if (bundleContext.getServiceReference(SlingRepository.class.getName()) == null) { diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockSlingRepository.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java similarity index 96% rename from src/main/java/org/apache/sling/testing/mock/sling/MockSlingRepository.java rename to src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java index eec41f5..c5e0f58 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockSlingRepository.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java @@ -32,11 +32,11 @@ import org.apache.sling.testing.mock.jcr.MockJcr; /** * Mock {@link SlingRepository} implementation. */ -class MockSlingRepository implements SlingRepository { +class MockJcrSlingRepository implements SlingRepository { private final Repository delegate; - public MockSlingRepository(final Repository delegate) { + public MockJcrSlingRepository(final Repository delegate) { this.delegate = delegate; } diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java index 2ee1ac6..e18b097 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java @@ -25,6 +25,7 @@ import org.osgi.framework.BundleContext; * Uses real Sling ResourceResolverFactory in simulated OSGi environment. * Resource Resolver factory has no ResourceProvider registered; you have to registere one yourself to do anything useful with it. */ +@Deprecated class MockNoneResourceResolverFactory extends AbstractMockResourceResolverFactory { public MockNoneResourceResolverFactory(BundleContext bundleContext) { diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java b/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java index d32126a..db85756 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java @@ -18,9 +18,6 @@ */ package org.apache.sling.testing.mock.sling; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.adapter.SlingAdaptable; @@ -76,38 +73,11 @@ public final class MockSling { ResourceResolverFactory factory = adapter.newResourceResolverFactory(); if (factory == null) { SlingRepository repository = adapter.newSlingRepository(); - if (repository == null) { - factory = new MockNoneResourceResolverFactory(bundleContext); - } - else { - registerJcrNodeTypes(repository, type); - factory = new MockJcrResourceResolverFactory(repository, bundleContext); - } + factory = ResourceResolverFactoryInitializer.setUp(repository, bundleContext, type.getNodeTypeMode()); } return factory; } - /** - * Registers all JCR node types found in classpath. - * @param slingRepository Sling repository - */ - @SuppressWarnings("deprecation") - private static void registerJcrNodeTypes(final SlingRepository slingRepository, final ResourceResolverType type) { - Session session = null; - try { - session = slingRepository.loginAdministrative(null); - NodeTypeDefinitionScanner.get().register(session, type.getNodeTypeMode()); - } - catch (RepositoryException ex) { - throw new RuntimeException("Error registering JCR nodetypes: " + ex.getMessage(), ex); - } - finally { - if (session != null) { - session.logout(); - } - } - } - private static ResourceResolverTypeAdapter getResourceResolverTypeAdapter(final ResourceResolverType type) { try { Class clazz = Class.forName(type.getResourceResolverTypeAdapterClass()); 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 new file mode 100644 index 0000000..99af56a --- /dev/null +++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java @@ -0,0 +1,77 @@ +/* + * 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 javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.jcr.api.SlingRepository; +import org.osgi.framework.BundleContext; + +/** + * Initializes Sling Resource Resolver factories with JCR-resource mapping. + */ +class ResourceResolverFactoryInitializer { + + private ResourceResolverFactoryInitializer() { + // static methods only + } + + /** + * Setup resource resolver factory. + * @param slingRepository Sling repository. If null resource resolver factory is setup without any resource provider. + * @param bundleContext Bundle context + */ + public static ResourceResolverFactory setUp(SlingRepository slingRepository, + BundleContext bundleContext, NodeTypeMode nodeTypeMode) { + ResourceResolverFactory factory; + if (slingRepository == null) { + factory = new MockNoneResourceResolverFactory(bundleContext); + } + else { + registerJcrNodeTypes(slingRepository, nodeTypeMode); + factory = new MockJcrResourceResolverFactory(slingRepository, bundleContext); + } + return factory; + } + + /** + * Registers all JCR node types found in classpath. + * @param slingRepository Sling repository + */ + @SuppressWarnings("deprecation") + private static void registerJcrNodeTypes(final SlingRepository slingRepository, + final NodeTypeMode nodeTypeMode) { + Session session = null; + try { + session = slingRepository.loginAdministrative(null); + NodeTypeDefinitionScanner.get().register(session, nodeTypeMode); + } + catch (RepositoryException ex) { + throw new RuntimeException("Error registering JCR nodetypes: " + ex.getMessage(), ex); + } + finally { + if (session != null) { + session.logout(); + } + } + } + +} diff --git a/src/test/java/org/apache/sling/testing/mock/sling/MockSlingRepositoryTest.java b/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java similarity index 93% rename from src/test/java/org/apache/sling/testing/mock/sling/MockSlingRepositoryTest.java rename to src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java index 82e7555..9d425a9 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/MockSlingRepositoryTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java @@ -28,13 +28,13 @@ import org.apache.sling.testing.mock.jcr.MockJcr; import org.junit.Before; import org.junit.Test; -public class MockSlingRepositoryTest { +public class MockJcrSlingRepositoryTest { private SlingRepository repository; @Before public void setUp() { - this.repository = new MockSlingRepository(MockJcr.newRepository()); + this.repository = new MockJcrSlingRepository(MockJcr.newRepository()); } @SuppressWarnings("deprecation") -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
