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/05/21 01:17:03 UTC
svn commit: r1680697 - in
/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling:
./ context/
Author: sseifert
Date: Wed May 20 23:17:03 2015
New Revision: 1680697
URL: http://svn.apache.org/r1680697
Log:
SLING-4729 Sling Mock: Add "NONE" resource resolver type
Added:
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java (with props)
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
- copied, changed from r1680650, sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java (with props)
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java (with props)
Removed:
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java
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/main/java/org/apache/sling/testing/mock/sling/MockSling.java
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java
Added: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java?rev=1680697&view=auto
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java (added)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java Wed May 20 23:17:03 2015
@@ -0,0 +1,120 @@
+/*
+ * 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.Hashtable;
+import java.util.Map;
+
+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.resourceresolver.impl.CommonResourceResolverFactoryImpl;
+import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
+import org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator;
+import org.apache.sling.resourceresolver.impl.ResourceResolverImpl;
+import org.apache.sling.resourceresolver.impl.helper.ResourceResolverContext;
+import org.apache.sling.serviceusermapping.ServiceUserMapper;
+import org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl;
+import org.apache.sling.testing.mock.osgi.MockEventAdmin;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.service.event.EventAdmin;
+
+/**
+ * Mock {@link ResourceResolverFactory} implementation.
+ * Uses real Sling ResourceResolverFactory in simulated OSGi environment.
+ */
+abstract class AbstractMockResourceResolverFactory implements ResourceResolverFactory {
+
+ protected final BundleContext bundleContext;
+
+ public AbstractMockResourceResolverFactory(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ protected ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException {
+ // setup real sling resource resolver implementation for use in mocked context
+ 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" });
+
+ ensureResourceResolverFactoryActivatorDependencies();
+ ResourceResolverFactoryActivator activator = new ResourceResolverFactoryActivator();
+ MockOsgi.injectServices(activator, bundleContext);
+ MockOsgi.activate(activator, resourceProviderFactoryFactoryProps);
+
+ CommonResourceResolverFactoryImpl commonFactoryImpl = new CommonResourceResolverFactoryImpl(activator);
+ ResourceResolverContext context = new ResourceResolverContext(true, authenticationInfo, new ResourceAccessSecurityTracker());
+ ResourceResolverImpl resourceResolver = new ResourceResolverImpl(commonFactoryImpl, context);
+ return resourceResolver;
+ }
+
+ /**
+ * Make sure all dependencies required by {@link ResourceResolverFactoryActivator} exist - if not register them.
+ */
+ private void ensureResourceResolverFactoryActivatorDependencies() {
+ if (bundleContext.getServiceReference(ServiceUserMapper.class.getName()) == null) {
+ ServiceUserMapper serviceUserMapper = new ServiceUserMapperImpl();
+ MockOsgi.injectServices(serviceUserMapper, bundleContext);
+ MockOsgi.activate(serviceUserMapper);
+ bundleContext.registerService(ServiceUserMapper.class.getName(), serviceUserMapper, null);
+ }
+
+ if (bundleContext.getServiceReference(ResourceAccessSecurityTracker.class.getName()) == null) {
+ ResourceAccessSecurityTracker resourceAccessSecurityTracker = new ResourceAccessSecurityTracker();
+ MockOsgi.injectServices(resourceAccessSecurityTracker, bundleContext);
+ MockOsgi.activate(resourceAccessSecurityTracker);
+ bundleContext.registerService(ResourceAccessSecurityTracker.class.getName(), resourceAccessSecurityTracker, null);
+ }
+
+ if (bundleContext.getServiceReference(EventAdmin.class.getName()) == null) {
+ EventAdmin eventAdmin = new MockEventAdmin();
+ MockOsgi.injectServices(eventAdmin, bundleContext);
+ MockOsgi.activate(eventAdmin);
+ bundleContext.registerService(EventAdmin.class.getName(), eventAdmin, null);
+ }
+ }
+
+ @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();
+ }
+
+}
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed May 20 23:17:03 2015
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/AbstractMockResourceResolverFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java (from r1680650, sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java)
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java?p2=sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java&p1=sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java&r1=1680650&r2=1680697&rev=1680697&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java Wed May 20 23:17:03 2015
@@ -28,7 +28,7 @@ import org.apache.sling.testing.mock.sli
/**
* Resource resolver type adapter for JCR Mocks implementation.
*/
-class JcrMockResourceResolverAdapter implements ResourceResolverTypeAdapter {
+class MockJcrResourceResolverAdapter implements ResourceResolverTypeAdapter {
@Override
public ResourceResolverFactory newResourceResolverFactory() {
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=1680697&r1=1680696&r2=1680697&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 May 20 23:17:03 2015
@@ -24,51 +24,37 @@ import java.util.Map;
import javax.jcr.query.Query;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.QueriableResourceProvider;
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.commons.osgi.PropertiesUtil;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory;
-import org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl;
-import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
-import org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator;
-import org.apache.sling.resourceresolver.impl.ResourceResolverImpl;
-import org.apache.sling.resourceresolver.impl.helper.ResourceResolverContext;
-import org.apache.sling.serviceusermapping.ServiceUserMapper;
-import org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl;
-import org.apache.sling.testing.mock.osgi.MockEventAdmin;
import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.service.event.EventAdmin;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
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.
+ * Mock {@link ResourceResolverFactory} implementation.
+ * Uses real Sling ResourceResolverFactory in simulated OSGi environment
+ * with a mocked JCR repository implementation underneath.
*/
-class MockJcrResourceResolverFactory implements ResourceResolverFactory {
+class MockJcrResourceResolverFactory extends AbstractMockResourceResolverFactory {
private final SlingRepository slingRepository;
- private final BundleContext bundleContext;
public MockJcrResourceResolverFactory(final SlingRepository repository, BundleContext bundleContext) {
+ super(bundleContext);
this.slingRepository = repository;
- this.bundleContext = bundleContext;
}
@SuppressWarnings("deprecation")
- private ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException {
- 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" });
-
+ protected ResourceResolver getResourceResolverInternal(Map<String, Object> authenticationInfo, boolean isAdmin) throws LoginException {
// setup mocked JCR environment
if (bundleContext.getServiceReference(SlingRepository.class.getName()) == null) {
bundleContext.registerService(SlingRepository.class.getName(), this.slingRepository, null);
@@ -88,69 +74,33 @@ class MockJcrResourceResolverFactory imp
resourceProvider = jcrResourceProviderFactory.getResourceProvider(authenticationInfo);
}
- Dictionary<Object, Object> resourceProviderProps = new Hashtable<Object, Object>();
- resourceProviderProps.put(ResourceProvider.ROOTS, new String[] { "/" });
- resourceProviderProps.put(QueriableResourceProvider.LANGUAGES, new String[] { Query.XPATH, Query.SQL, Query.JCR_SQL2 });
- bundleContext.registerService(ResourceProvider.class.getName(), resourceProvider, resourceProviderProps);
-
- // setup real sling resource resolver implementation for use in mocked context
- ensureResourceResolverFactoryActivatorDependencies();
- ResourceResolverFactoryActivator activator = new ResourceResolverFactoryActivator();
- MockOsgi.injectServices(activator, bundleContext);
- MockOsgi.activate(activator, resourceProviderFactoryFactoryProps);
+ // register JCR resource provider if not already registered
+ if (!isRootServiceProviderRegistered(bundleContext)) {
+ Dictionary<Object, Object> resourceProviderProps = new Hashtable<Object, Object>();
+ resourceProviderProps.put(ResourceProvider.ROOTS, new String[] { "/" });
+ resourceProviderProps.put(QueriableResourceProvider.LANGUAGES, new String[] { Query.XPATH, Query.SQL, Query.JCR_SQL2 });
+ bundleContext.registerService(ResourceProvider.class.getName(), resourceProvider, resourceProviderProps);
+ }
- CommonResourceResolverFactoryImpl commonFactoryImpl = new CommonResourceResolverFactoryImpl(activator);
- ResourceResolverContext context = new ResourceResolverContext(true, authenticationInfo, new ResourceAccessSecurityTracker());
- ResourceResolverImpl resourceResolver = new ResourceResolverImpl(commonFactoryImpl, context);
- return resourceResolver;
+ return super.getResourceResolverInternal(authenticationInfo, isAdmin);
}
- /**
- * Make sure all dependencies required by {@link ResourceResolverFactoryActivator} exist - if not register them.
- */
- private void ensureResourceResolverFactoryActivatorDependencies() {
- if (bundleContext.getServiceReference(ServiceUserMapper.class.getName()) == null) {
- ServiceUserMapper serviceUserMapper = new ServiceUserMapperImpl();
- MockOsgi.injectServices(serviceUserMapper, bundleContext);
- MockOsgi.activate(serviceUserMapper);
- bundleContext.registerService(ServiceUserMapper.class.getName(), serviceUserMapper, null);
- }
-
- if (bundleContext.getServiceReference(ResourceAccessSecurityTracker.class.getName()) == null) {
- ResourceAccessSecurityTracker resourceAccessSecurityTracker = new ResourceAccessSecurityTracker();
- MockOsgi.injectServices(resourceAccessSecurityTracker, bundleContext);
- MockOsgi.activate(resourceAccessSecurityTracker);
- bundleContext.registerService(ResourceAccessSecurityTracker.class.getName(), resourceAccessSecurityTracker, null);
- }
-
- if (bundleContext.getServiceReference(EventAdmin.class.getName()) == null) {
- EventAdmin eventAdmin = new MockEventAdmin();
- MockOsgi.injectServices(eventAdmin, bundleContext);
- MockOsgi.activate(eventAdmin);
- bundleContext.registerService(EventAdmin.class.getName(), eventAdmin, null);
+ private boolean isRootServiceProviderRegistered(BundleContext bundleContext) {
+ try {
+ ServiceReference[] serviceReferences = bundleContext.getServiceReferences(ResourceProvider.class.getName(), null) ;
+ if (serviceReferences != null) {
+ for (ServiceReference serviceReference : serviceReferences) {
+ String[] roots = PropertiesUtil.toStringArray(serviceReference.getProperty(ResourceProvider.ROOTS));
+ if (ArrayUtils.contains(roots, "/")) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ catch (InvalidSyntaxException ex) {
+ throw new RuntimeException(ex);
}
}
-
- @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();
- }
-
+
}
Added: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java?rev=1680697&view=auto
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java (added)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java Wed May 20 23:17:03 2015
@@ -0,0 +1,40 @@
+/*
+ * 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 org.apache.sling.api.resource.ResourceResolverFactory;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.testing.mock.sling.spi.ResourceResolverTypeAdapter;
+
+/**
+ * Resource resolver type with no resource provider registered.
+ */
+class MockNoneResourceResolverAdapter implements ResourceResolverTypeAdapter {
+
+ @Override
+ public ResourceResolverFactory newResourceResolverFactory() {
+ return null;
+ }
+
+ @Override
+ public SlingRepository newSlingRepository() {
+ return null;
+ }
+
+}
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed May 20 23:17:03 2015
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverAdapter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java?rev=1680697&view=auto
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java (added)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java Wed May 20 23:17:03 2015
@@ -0,0 +1,33 @@
+/*
+ * 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 org.osgi.framework.BundleContext;
+
+/**
+ * Mock {@link ResourceResolverFactory} implementation.
+ * 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.
+ */
+class MockNoneResourceResolverFactory extends AbstractMockResourceResolverFactory {
+
+ public MockNoneResourceResolverFactory(BundleContext bundleContext) {
+ super(bundleContext);
+ }
+}
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed May 20 23:17:03 2015
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockNoneResourceResolverFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java?rev=1680697&r1=1680696&r2=1680697&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java Wed May 20 23:17:03 2015
@@ -73,9 +73,11 @@ public final class MockSling {
if (factory == null) {
SlingRepository repository = adapter.newSlingRepository();
if (repository == null) {
- throw new RuntimeException("Adapter neither provides resource resolver factory nor sling repository.");
+ factory = new MockNoneResourceResolverFactory(bundleContext);
+ }
+ else {
+ factory = new MockJcrResourceResolverFactory(repository, bundleContext);
}
- factory = new MockJcrResourceResolverFactory(repository, bundleContext);
}
return factory;
}
@@ -84,17 +86,20 @@ public final class MockSling {
try {
Class clazz = Class.forName(type.getResourceResolverTypeAdapterClass());
return (ResourceResolverTypeAdapter) clazz.newInstance();
- } catch (ClassNotFoundException ex) {
+ }
+ catch (ClassNotFoundException ex) {
throw new RuntimeException("Unable to instantiate resourcer resolver: "
+ type.getResourceResolverTypeAdapterClass()
+ (type.getArtifactCoordinates() != null ? "Make sure this maven dependency is included: "
+ type.getArtifactCoordinates() : ""), ex);
- } catch (InstantiationException ex) {
+ }
+ catch (InstantiationException ex) {
throw new RuntimeException("Unable to instantiate resourcer resolver: "
+ type.getResourceResolverTypeAdapterClass()
+ (type.getArtifactCoordinates() != null ? "Make sure this maven dependency is included: "
+ type.getArtifactCoordinates() : ""), ex);
- } catch (IllegalAccessException ex) {
+ }
+ catch (IllegalAccessException ex) {
throw new RuntimeException("Unable to instantiate resourcer resolver: "
+ type.getResourceResolverTypeAdapterClass()
+ (type.getArtifactCoordinates() != null ? "Make sure this maven dependency is included: "
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java?rev=1680697&r1=1680696&r2=1680697&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java Wed May 20 23:17:03 2015
@@ -51,7 +51,7 @@ public enum ResourceResolverType {
* <li>This resource resolver type is quite fast.</li>
* </ul>
*/
- JCR_MOCK(JcrMockResourceResolverAdapter.class.getName(), null),
+ JCR_MOCK(MockJcrResourceResolverAdapter.class.getName(), null),
/**
* Uses a real JCR Jackrabbit repository.
@@ -65,7 +65,19 @@ public enum ResourceResolverType {
* </ul>
*/
JCR_JACKRABBIT("org.apache.sling.testing.mock.sling.jackrabbit.JackrabbitMockResourceResolverAdapter",
- "org.apache.sling:org.apache.sling.testing.sling-mock-jackrabbit");
+ "org.apache.sling:org.apache.sling.testing.sling-mock-jackrabbit"),
+
+ /**
+ * Provides resource resolver environment without any ResourceProvider.
+ * You have to register one yourself to do anything useful with it.
+ * <ul>
+ * <li>Uses the real Sling Resource Resolver implementation.</li>
+ * <li>The performance of this resource resolver type depends on the resource provider registered.</li>
+ * </ul>
+ */
+ NONE(MockNoneResourceResolverAdapter.class.getName(), null);
+
+
private final String resourceResolverTypeAdapterClass;
private final String artifactCoordinates;
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java?rev=1680697&r1=1680696&r2=1680697&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java Wed May 20 23:17:03 2015
@@ -57,6 +57,9 @@ final class ContextResourceResolverFacto
case RESOURCERESOLVER_MOCK:
initializeResourceResolverMock(factory);
break;
+ case NONE:
+ initializeResourceResolverNone(factory);
+ break;
default:
throw new IllegalArgumentException("Invalid resource resolver type: " + type);
}
@@ -84,4 +87,8 @@ final class ContextResourceResolverFacto
// nothing to do
}
+ private static void initializeResourceResolverNone(ResourceResolverFactory factory) {
+ // nothing to do
+ }
+
}
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java?rev=1680697&r1=1680696&r2=1680697&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java Wed May 20 23:17:03 2015
@@ -19,5 +19,5 @@
/**
* Mock implementation of selected Sling APIs.
*/
-@aQute.bnd.annotation.Version("1.2.1")
+@aQute.bnd.annotation.Version("1.3")
package org.apache.sling.testing.mock.sling;