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 2017/11/06 16:14:50 UTC
[sling-org-apache-sling-testing-sling-mock] 01/01: import branch
for 1.x from svn
This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch release/1.x
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 44f2981b262f1719acc9fb8e7cfba4d5864f73ac
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Mon Nov 6 17:14:09 2017 +0100
import branch for 1.x from svn
---
pom.xml | 125 ++++++--------
.../testing/mock/sling/MockAdapterManagerImpl.java | 181 +++++++++------------
.../mock/sling/MockDynamicClassLoaderManager.java | 33 ----
.../testing/mock/sling/MockJcrSlingRepository.java | 14 +-
.../apache/sling/testing/mock/sling/MockSling.java | 67 ++++++++
.../sling/ResourceResolverFactoryInitializer.java | 89 ++++++----
.../testing/mock/sling/ResourceResolverType.java | 14 ++
.../sling/ThreadsafeMockAdapterManagerWrapper.java | 2 +-
.../testing/mock/sling/builder/package-info.java | 2 +-
.../context/ContextResourceResolverFactory.java | 7 +
.../sling/context/ModelAdapterFactoryUtil.java | 32 ++--
.../mock/sling/context/SlingContextImpl.java | 44 ++---
.../testing/mock/sling/context/UniqueRoot.java | 11 +-
.../testing/mock/sling/context/package-info.java | 2 +-
.../testing/mock/sling/junit/SlingContext.java | 3 +-
.../mock/sling/junit/SlingContextBuilder.java | 3 +-
.../mock/sling/junit/SlingContextCallback.java | 3 +-
.../testing/mock/sling/junit/package-info.java | 2 +-
.../testing/mock/sling/loader/ContentLoader.java | 2 +-
.../testing/mock/sling/loader/package-info.java | 2 +-
.../sling/testing/mock/sling/package-info.java | 2 +-
.../mock/sling/services/MockMimeTypeService.java | 6 +-
.../testing/mock/sling/services/package-info.java | 2 +-
.../sling/servlet/MockSlingHttpServletRequest.java | 23 ++-
.../testing/mock/sling/servlet/package-info.java | 2 +-
.../sling/testing/mock/sling/spi/package-info.java | 2 +-
.../mock/sling/NodeTypeDefinitionScannerTest.java | 1 +
.../context/AbstractSlingContextImplTest.java | 9 +-
.../sling/context/NoResourceResolverTypeTest.java | 18 +-
.../testing/mock/sling/junit/SlingContextTest.java | 81 +--------
.../sling/resource/AbstractJcrNamespaceTest.java | 5 +-
.../resource/AbstractJcrResourceResolverTest.java | 6 +-
.../AbstractSlingCrudResourceResolverTest.java | 18 +-
33 files changed, 392 insertions(+), 421 deletions(-)
diff --git a/pom.xml b/pom.xml
index f028e74..2f4503f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,12 +23,12 @@
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
- <version>30</version>
+ <version>26</version>
<relativePath />
</parent>
<artifactId>org.apache.sling.testing.sling-mock</artifactId>
- <version>2.2.15-SNAPSHOT</version>
+ <version>1.9.11-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Sling Testing Sling Mock</name>
@@ -45,7 +45,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.osgi-mock</artifactId>
- <version>2.3.4</version>
+ <version>1.9.8</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -63,70 +63,63 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.servlet-helpers</artifactId>
- <version>1.1.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.4.0</version>
+ <version>1.0.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.api</artifactId>
- <version>1.2.2</version>
+ <version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.impl</artifactId>
- <version>1.2.2</version>
+ <version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.11.0</version>
+ <version>2.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.resourceresolver</artifactId>
- <version>1.4.8</version>
+ <version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.api</artifactId>
- <version>2.3.0</version>
+ <version>2.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.resource</artifactId>
- <version>2.7.4</version>
+ <version>2.3.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.api</artifactId>
- <version>2.1.8</version>
+ <version>2.1.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.core</artifactId>
- <version>2.0.36</version>
+ <version>2.0.26</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.mime</artifactId>
- <version>2.1.8</version>
+ <version>2.1.4</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -143,26 +136,26 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.classloader</artifactId>
- <version>1.3.2</version>
+ <artifactId>org.apache.sling.commons.osgi</artifactId>
+ <version>2.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.settings</artifactId>
- <version>1.3.8</version>
+ <artifactId>org.apache.sling.commons.classloader</artifactId>
+ <version>1.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.i18n</artifactId>
- <version>2.4.4</version>
+ <artifactId>org.apache.sling.settings</artifactId>
+ <version>1.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.adapter</artifactId>
- <version>2.1.6</version>
+ <artifactId>org.apache.sling.i18n</artifactId>
+ <version>2.2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -171,17 +164,11 @@
<version>1.0.2</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>2.11.3</version>
- <scope>compile</scope>
- </dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
- <version>3.2.2</version>
+ <version>3.2.1</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -206,19 +193,21 @@
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
+ <version>3.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-atinject_1.0_spec</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.jcr</groupId>
<artifactId>jcr</artifactId>
+ <version>2.0</version>
<scope>compile</scope>
</dependency>
@@ -236,7 +225,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.logging-mock</artifactId>
- <version>2.0.0</version>
+ <version>1.0.0</version>
<scope>test</scope>
</dependency>
@@ -247,62 +236,50 @@
<!-- Publish test artifact -->
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
</plugin>
<plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
</plugin>
</plugins>
</build>
+ <!-- Profiles to run unit tests against different JCR Resource versions -->
<profiles>
<profile>
- <id>latest-resource-bundles</id>
+ <id>jcr.resource-2.5.4</id>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.16.2</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.resourceresolver</artifactId>
- <version>1.5.22</version>
+ <version>2.9.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.resource</artifactId>
- <version>3.0.0</version>
+ <version>2.5.4</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>2.13.4</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>oak-jcr</artifactId>
- <version>1.5.15</version>
- <scope>provided</scope>
- </dependency>
</dependencies>
</profile>
</profiles>
-
+
</project>
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManagerImpl.java b/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManagerImpl.java
index b3f3825..889022b 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManagerImpl.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManagerImpl.java
@@ -22,50 +22,41 @@ import static org.apache.sling.api.adapter.AdapterFactory.ADAPTABLE_CLASSES;
import static org.apache.sling.api.adapter.AdapterFactory.ADAPTER_CLASSES;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import org.apache.sling.adapter.Adaption;
-import org.apache.sling.adapter.internal.AdapterFactoryDescriptor;
-import org.apache.sling.adapter.internal.AdapterFactoryDescriptorMap;
-import org.apache.sling.adapter.internal.AdaptionImpl;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.adapter.AdapterFactory;
import org.apache.sling.api.adapter.AdapterManager;
import org.apache.sling.commons.osgi.PropertiesUtil;
-import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * This is a copy of org.apache.sling.adapter.internal.AdpaterManagerImpl from Sling Adapter 2.1.6,
+ * This is a copy of org.apache.sling.adapter.internal.AdpaterManagerImpl from Sling Adapter 2.1.0,
* with all calls to SyntheticResource.setAdapterManager/unsetAdapterManager disabled, because this would
* break the {@link ThreadsafeMockAdapterManagerWrapper} concept.
- * Additionally the reference to PackageAdmin is disabled.
*/
-@Component(immediate=true, service=AdapterManager.class,
- property={Constants.SERVICE_DESCRIPTION + "=Sling Adapter Manager",
- Constants.SERVICE_VENDOR + "=The Apache Software Foundation"},
- reference = @Reference(name="AdapterFactory", service=AdapterFactory.class,
- cardinality=ReferenceCardinality.MULTIPLE, policy=ReferencePolicy.DYNAMIC,
- bind="bindAdapterFactory", unbind="unbindAdapterFactory")
-)
+@Component(immediate=true)
+@Service
+@Reference(name="AdapterFactory", referenceInterface=AdapterFactory.class,
+cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, policy=ReferencePolicy.DYNAMIC)
public class MockAdapterManagerImpl implements AdapterManager {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -108,15 +99,9 @@ public class MockAdapterManagerImpl implements AdapterManager {
/**
* The service tracker for the event admin
*/
- @Reference(cardinality=ReferenceCardinality.OPTIONAL, policy=ReferencePolicy.DYNAMIC)
+ @Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY, policy=ReferencePolicy.DYNAMIC)
private volatile EventAdmin eventAdmin;
- // DISABLED IN THIS COPY OF CLASS
- /*
- @Reference
- private PackageAdmin packageAdmin;
- */
-
// ---------- AdapterManager interface -------------------------------------
/**
@@ -214,7 +199,7 @@ public class MockAdapterManagerImpl implements AdapterManager {
}
/**
- * Unbind a adapter factory.
+ * Unbind an adapter factory.
* @param reference Service reference
*/
protected void unbindAdapterFactory(final ServiceReference reference) {
@@ -257,21 +242,6 @@ public class MockAdapterManagerImpl implements AdapterManager {
return;
}
- // DISABLED IN THIS COPY OF CLASS
- /*
- for (String clazz : adaptables) {
- if (!checkPackage(packageAdmin, clazz)) {
- log.warn("Adaptable class {} in factory service {} is not in an exported package.", clazz, reference.getProperty(Constants.SERVICE_ID));
- }
- }
-
- for (String clazz : adapters) {
- if (!checkPackage(packageAdmin, clazz)) {
- log.warn("Adapter class {} in factory service {} is not in an exported package.", clazz, reference.getProperty(Constants.SERVICE_ID));
- }
- }
- */
-
final AdapterFactoryDescriptor factoryDesc = new AdapterFactoryDescriptor(context,
reference, adapters);
@@ -292,51 +262,16 @@ public class MockAdapterManagerImpl implements AdapterManager {
// clear the factory cache to force rebuild on next access
this.factoryCache.clear();
- // register adaption
- final Dictionary<String, Object> props = new Hashtable<String, Object>();
- props.put(SlingConstants.PROPERTY_ADAPTABLE_CLASSES, adaptables);
- props.put(SlingConstants.PROPERTY_ADAPTER_CLASSES, adapters);
-
- ServiceRegistration adaptionRegistration = this.context.getBundleContext().registerService(
- Adaption.class.getName(), AdaptionImpl.INSTANCE, props);
- if (log.isDebugEnabled()) {
- log.debug("Registered service {} with {} : {} and {} : {}", new Object[] { Adaption.class.getName(),
- SlingConstants.PROPERTY_ADAPTABLE_CLASSES, Arrays.toString(adaptables),
- SlingConstants.PROPERTY_ADAPTER_CLASSES, Arrays.toString(adapters) });
- }
- factoryDesc.setAdaption(adaptionRegistration);
-
// send event
final EventAdmin localEA = this.eventAdmin;
if ( localEA != null ) {
+ final Dictionary<String, Object> props = new Hashtable<String, Object>();
+ props.put(SlingConstants.PROPERTY_ADAPTABLE_CLASSES, adaptables);
+ props.put(SlingConstants.PROPERTY_ADAPTER_CLASSES, adapters);
localEA.postEvent(new Event(SlingConstants.TOPIC_ADAPTER_FACTORY_ADDED,
props));
}
}
-
- static String getPackageName(String clazz) {
- final int lastDot = clazz.lastIndexOf('.');
- return lastDot <= 0 ? "" : clazz.substring(0, lastDot);
- }
-
- /**
- * Check that the package containing the class is exported or is a java.*
- * class.
- *
- * @param packageAdmin the PackageAdmin service
- * @param clazz the class name
- * @return true if the package is exported
- */
- // DISABLED IN THIS COPY OF CLASS
- /*
- static boolean checkPackage(PackageAdmin packageAdmin, String clazz) {
- final String packageName = getPackageName(clazz);
- if (packageName.startsWith("java.")) {
- return true;
- }
- return packageAdmin.getExportedPackage(packageName) != null;
- }
- */
/**
* Unregisters the {@link AdapterFactory} referred to by the service
@@ -356,25 +291,13 @@ public class MockAdapterManagerImpl implements AdapterManager {
boolean factoriesModified = false;
AdapterFactoryDescriptorMap adfMap = null;
-
- AdapterFactoryDescriptor removedDescriptor = null;
for (final String adaptable : adaptables) {
synchronized ( this.descriptors ) {
adfMap = this.descriptors.get(adaptable);
}
if (adfMap != null) {
synchronized ( adfMap ) {
- AdapterFactoryDescriptor factoryDesc = adfMap.remove(reference);
- if (factoryDesc != null) {
- factoriesModified = true;
- // A single ServiceReference should correspond to a single Adaption service being registered
- // Since the code paths above does not fully guarantee it though, let's keep this check in place
- if (removedDescriptor != null && removedDescriptor != factoryDesc) {
- log.error("When unregistering reference {} got duplicate service descriptors {} and {}. Unregistration of {} services may be incomplete.",
- new Object[] { reference, removedDescriptor, factoryDesc, Adaption.class.getName()} );
- }
- removedDescriptor = factoryDesc;
- }
+ factoriesModified |= (adfMap.remove(reference) != null);
}
}
}
@@ -385,16 +308,6 @@ public class MockAdapterManagerImpl implements AdapterManager {
this.factoryCache.clear();
}
- // unregister adaption
- if (removedDescriptor != null) {
- removedDescriptor.getAdaption().unregister();
- if (log.isDebugEnabled()) {
- log.debug("Unregistered service {} with {} : {} and {} : {}", new Object[] { Adaption.class.getName(),
- SlingConstants.PROPERTY_ADAPTABLE_CLASSES, Arrays.toString(adaptables),
- SlingConstants.PROPERTY_ADAPTER_CLASSES, Arrays.toString(adapters) });
- }
- }
-
// send event
final EventAdmin localEA = this.eventAdmin;
if ( localEA != null ) {
@@ -515,4 +428,64 @@ public class MockAdapterManagerImpl implements AdapterManager {
}
}
}
+
+
+ /**
+ * The <code>AdapterFactoryDescriptor</code> is an entry in the
+ * {@link AdapterFactoryDescriptorMap} conveying the list of adapter (target)
+ * types and the respective {@link AdapterFactory}.
+ */
+ private static class AdapterFactoryDescriptor {
+
+ private volatile AdapterFactory factory;
+
+ private final String[] adapters;
+
+ private final ServiceReference reference;
+
+ private final ComponentContext context;
+
+ public AdapterFactoryDescriptor(
+ final ComponentContext context,
+ final ServiceReference reference,
+ final String[] adapters) {
+ this.reference = reference;
+ this.context = context;
+ this.adapters = adapters;
+ }
+
+ public AdapterFactory getFactory() {
+ if ( factory == null ) {
+ factory = (AdapterFactory) context.locateService(
+ "AdapterFactory", reference);
+ }
+ return factory;
+ }
+
+ public String[] getAdapters() {
+ return adapters;
+ }
+ }
+
+ /**
+ * The <code>AdapterFactoryDescriptorMap</code> is a sorted map of
+ * {@link AdapterFactoryDescriptor} instances indexed (and ordered) by their
+ * {@link ServiceReference}. This map is used to organize the
+ * registered {@link org.apache.sling.api.adapter.AdapterFactory} services for
+ * a given adaptable type.
+ * <p>
+ * Each entry in the map is a {@link AdapterFactoryDescriptor} thus enabling the
+ * registration of multiple factories for the same (adaptable, adapter) type
+ * tuple. Of course only the first entry (this is the reason for having a sorted
+ * map) for such a given tuple is actually being used. If that first instance is
+ * removed the eventual second instance may actually be used instead.
+ */
+ private static class AdapterFactoryDescriptorMap extends
+ TreeMap<ServiceReference, AdapterFactoryDescriptor> {
+
+ private static final long serialVersionUID = 2L;
+
+ }
+
+
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockDynamicClassLoaderManager.java b/src/main/java/org/apache/sling/testing/mock/sling/MockDynamicClassLoaderManager.java
deleted file mode 100644
index 2ec7f15..0000000
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockDynamicClassLoaderManager.java
+++ /dev/null
@@ -1,33 +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 org.apache.sling.commons.classloader.DynamicClassLoaderManager;
-
-/**
- * Mock implementation of {@link DynamicClassLoaderManager}.
- */
-class MockDynamicClassLoaderManager implements DynamicClassLoaderManager {
-
- @Override
- public ClassLoader getDynamicClassLoader() {
- return MockDynamicClassLoaderManager.class.getClassLoader();
- }
-
-}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
index e3073cd..48fd567 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
@@ -26,16 +26,18 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Value;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.testing.mock.jcr.MockJcr;
import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
/**
* Mock {@link SlingRepository} implementation.
*/
-@Component(service = SlingRepository.class)
+@Component
+@Service(SlingRepository.class)
public final class MockJcrSlingRepository implements SlingRepository {
private Repository repository;
@@ -114,10 +116,4 @@ public final class MockJcrSlingRepository implements SlingRepository {
return this.repository.login();
}
- @Override
- public Session impersonateFromService(String subServiceName, Credentials credentials, String workspaceName)
- throws LoginException, RepositoryException {
- return this.repository.login(credentials);
- }
-
}
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 fdc222e..b53faae 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
@@ -26,6 +26,7 @@ import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.scripting.SlingScriptHelper;
import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse;
import org.apache.sling.testing.mock.sling.spi.ResourceResolverTypeAdapter;
@@ -53,6 +54,18 @@ public final class MockSling {
/**
* Creates new sling resource resolver factory instance.
+ * @param type Type of underlying repository.
+ * @return Resource resolver factory instance
+ * @deprecated Please use {@link #newResourceResolverFactory(ResourceResolverType, BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public static ResourceResolverFactory newResourceResolverFactory(final ResourceResolverType type) {
+ return newResourceResolverFactory(type, MockOsgi.newBundleContext());
+ }
+
+ /**
+ * Creates new sling resource resolver factory instance.
* @param bundleContext Bundle context
* @return Resource resolver factory instance
*/
@@ -106,6 +119,47 @@ public final class MockSling {
}
/**
+ * Creates new sling resource resolver factory instance using
+ * {@link #DEFAULT_RESOURCERESOLVER_TYPE}.
+ * @return Resource resolver factory instance
+ * @deprecated Please use {@link #newResourceResolverFactory(BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public static ResourceResolverFactory newResourceResolverFactory() {
+ return newResourceResolverFactory(DEFAULT_RESOURCERESOLVER_TYPE);
+ }
+
+ /**
+ * Creates new sling resource resolver instance.
+ * @param type Type of underlying repository.
+ * @return Resource resolver instance
+ * @deprecated Please use {@link #newResourceResolver(ResourceResolverType, BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public static ResourceResolver newResourceResolver(final ResourceResolverType type) {
+ ResourceResolverFactory factory = newResourceResolverFactory(type);
+ try {
+ return factory.getAdministrativeResourceResolver(null);
+ } catch (LoginException ex) {
+ throw new RuntimeException("Mock resource resolver factory implementation seems to require login.", ex);
+ }
+ }
+
+ /**
+ * Creates new sling resource resolver instance using
+ * {@link #DEFAULT_RESOURCERESOLVER_TYPE}.
+ * @return Resource resolver instance
+ * @deprecated Please use {@link #newResourceResolver(BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public static ResourceResolver newResourceResolver() {
+ return newResourceResolver(DEFAULT_RESOURCERESOLVER_TYPE);
+ }
+
+ /**
* Creates new sling resource resolver instance.
* @param type Type of underlying repository.
* @param bundleContext Bundle context
@@ -145,6 +199,19 @@ public final class MockSling {
/**
* Creates a new sling script helper instance using
* {@link #DEFAULT_RESOURCERESOLVER_TYPE} for the resource resolver.
+ * @return Sling script helper instance
+ * @deprecated Please use {@link #newSlingScriptHelper(BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public static SlingScriptHelper newSlingScriptHelper() {
+ BundleContext bundleContext = MockOsgi.newBundleContext();
+ return newSlingScriptHelper(bundleContext);
+ }
+
+ /**
+ * Creates a new sling script helper instance using
+ * {@link #DEFAULT_RESOURCERESOLVER_TYPE} for the resource resolver.
* @param bundleContext Bundle context
* @return Sling script helper instance
*/
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
index 5b64c58..dd8b69e 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
@@ -23,16 +23,18 @@ import java.util.Hashtable;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.query.Query;
+import org.apache.sling.api.resource.QueriableResourceProvider;
+import org.apache.sling.api.resource.ResourceProvider;
+import org.apache.sling.api.resource.ResourceProviderFactory;
import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider;
+import org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory;
import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
import org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator;
import org.apache.sling.serviceusermapping.ServiceUserMapper;
import org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl;
-import org.apache.sling.spi.resource.provider.ResourceProvider;
import org.apache.sling.testing.mock.osgi.MockEventAdmin;
import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.osgi.framework.BundleContext;
@@ -63,16 +65,16 @@ class ResourceResolverFactoryInitializer {
// register JCR node types found in classpath
registerJcrNodeTypes(slingRepository, nodeTypeMode);
- // initialize JCR resource provider
- ensureJcrResourceProviderDependencies(bundleContext);
- initializeJcrResourceProvider(bundleContext);
+ // initialize JCR resource provider factory
+ ensureJcrResourceProviderFactoryDependencies(bundleContext);
+ initializeJcrResourceProviderFactory(bundleContext);
}
// initialize resource resolver factory activator
ensureResourceResolverFactoryActivatorDependencies(bundleContext);
initializeResourceResolverFactoryActivator(bundleContext);
- ServiceReference<ResourceResolverFactory> factoryRef = bundleContext.getServiceReference(ResourceResolverFactory.class);
+ ServiceReference factoryRef = bundleContext.getServiceReference(ResourceResolverFactory.class.getName());
if (factoryRef == null) {
throw new IllegalStateException("Unable to get ResourceResolverFactory.");
}
@@ -80,34 +82,29 @@ class ResourceResolverFactoryInitializer {
}
/**
- * Ensure dependencies for JcrResourceProvider are present.
+ * Ensure dependencies for JcrResourceProviderFactory are present.
* @param bundleContext Bundle context
*/
- @SuppressWarnings("unchecked")
- private static void ensureJcrResourceProviderDependencies(BundleContext bundleContext) {
- if (bundleContext.getServiceReference(DynamicClassLoaderManager.class) == null) {
- bundleContext.registerService(DynamicClassLoaderManager.class, new MockDynamicClassLoaderManager(), null);
- }
-
- try {
- Class pathMapperClass = Class.forName("org.apache.sling.jcr.resource.internal.helper.jcr.PathMapper");
- registerServiceIfNotPresent(bundleContext, pathMapperClass, pathMapperClass.newInstance());
- }
- catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- // ignore - service was removed in org.apache.sling.jcr.resource 3.0.0
- }
+ private static void ensureJcrResourceProviderFactoryDependencies(BundleContext bundleContext) {
+ // setup PathMapper which is a mandatory service for JcrProviderFactory (since org.apache.sling.jcr.resource 2.5.4)
+ // use reflection to not depend on it if running with older version of org.apache.sling.jcr.resource
+ registerServiceIfFoundInClasspath(bundleContext, "org.apache.sling.jcr.resource.internal.helper.jcr.PathMapper");
}
/**
- * Initialize JCR resource provider.
+ * Initialize JCR resource provider factory.
* @param bundleContext Bundle context
*/
- private static void initializeJcrResourceProvider(BundleContext bundleContext) {
+ @SuppressWarnings("deprecation")
+ private static void initializeJcrResourceProviderFactory(BundleContext bundleContext) {
Dictionary<String, Object> config = new Hashtable<String, Object>();
- JcrResourceProvider provider = new JcrResourceProvider();
- MockOsgi.injectServices(provider, bundleContext);
- MockOsgi.activate(provider, bundleContext, config);
- bundleContext.registerService(ResourceProvider.class, provider, config);
+ config.put(ResourceProvider.ROOTS, new String[] { "/" });
+ config.put(QueriableResourceProvider.LANGUAGES, new String[] { Query.XPATH, Query.SQL, Query.JCR_SQL2 });
+
+ JcrResourceProviderFactory factory = new JcrResourceProviderFactory();
+ MockOsgi.injectServices(factory, bundleContext);
+ MockOsgi.activate(factory, bundleContext, config);
+ bundleContext.registerService(ResourceProviderFactory.class.getName(), factory, config);
}
/**
@@ -129,9 +126,8 @@ class ResourceResolverFactoryInitializer {
*/
private static void initializeResourceResolverFactoryActivator(BundleContext bundleContext) {
Dictionary<String, Object> config = new Hashtable<String, Object>();
- // do not required a specific resource provider (otherwise "NONE" will not work)
- config.put("resource.resolver.required.providers", "");
- config.put("resource.resolver.required.providernames", "");
+ config.put("resource.resolver.required.providers", new String[0]);
+
ResourceResolverFactoryActivator activator = new ResourceResolverFactoryActivator();
MockOsgi.injectServices(activator, bundleContext);
MockOsgi.activate(activator, bundleContext, config);
@@ -145,11 +141,10 @@ class ResourceResolverFactoryInitializer {
* @param serviceClass Service class
* @param instance Service instance
*/
- private static <T> void registerServiceIfNotPresent(BundleContext bundleContext, Class<T> serviceClass,
- T instance) {
+ private static void registerServiceIfNotPresent(BundleContext bundleContext, Class<?> serviceClass,
+ Object instance) {
registerServiceIfNotPresent(bundleContext, serviceClass, instance, new Hashtable<String, Object>());
}
-
/**
* Registers a service if the service class is found in classpath,
* and if no service with this class is already registered.
@@ -158,12 +153,34 @@ class ResourceResolverFactoryInitializer {
* @param instance Service instance
* @param config OSGi config
*/
- private static <T> void registerServiceIfNotPresent(BundleContext bundleContext, Class<T> serviceClass,
- T instance, Dictionary<String, Object> config) {
+ private static void registerServiceIfNotPresent(BundleContext bundleContext, Class<?> serviceClass,
+ Object instance, Dictionary<String, Object> config) {
if (bundleContext.getServiceReference(serviceClass.getName()) == null) {
MockOsgi.injectServices(instance, bundleContext);
MockOsgi.activate(instance, bundleContext, config);
- bundleContext.registerService(serviceClass, instance, config);
+ bundleContext.registerService(serviceClass.getName(), instance, config);
+ }
+ }
+
+ /**
+ * Registers a service if the service class is found in classpath,
+ * and if no service with this class is already registered.
+ * @param className Service class name
+ */
+ private static void registerServiceIfFoundInClasspath(BundleContext bundleContext, String className) {
+ try {
+ Class<?> serviceClass = Class.forName(className);
+ Object instance = serviceClass.newInstance();
+ registerServiceIfNotPresent(bundleContext, serviceClass, instance);
+ }
+ catch (ClassNotFoundException ex) {
+ // skip service registration
+ }
+ catch (InstantiationException e) {
+ // skip service registration
+ }
+ catch (IllegalAccessException e) {
+ // skip service registration
}
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java
index f0d2b1d..e9d9b33 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java
@@ -54,6 +54,20 @@ public enum ResourceResolverType {
JCR_MOCK(MockJcrResourceResolverAdapter.class.getName(), null, NodeTypeMode.NAMESPACES_ONLY),
/**
+ * Uses a real JCR Jackrabbit repository.
+ * <ul>
+ * <li>Uses the real Sling Resource Resolver and JCR Resource mapping
+ * implementation.</li>
+ * <li>The JCR repository is started on first access, this may take some
+ * seconds.</li>
+ * <li>Beware: The repository is not cleared for each unit test, so make
+ * sure us use a unique node path for each unit test.</li>
+ * </ul>
+ */
+ JCR_JACKRABBIT("org.apache.sling.testing.mock.sling.jackrabbit.JackrabbitMockResourceResolverAdapter",
+ "org.apache.sling:org.apache.sling.testing.sling-mock-jackrabbit", NodeTypeMode.NODETYPES_REQUIRED),
+
+ /**
* Uses a real JCR Jackrabbit Oak repository.
* <ul>
* <li>Uses the real Sling Resource Resolver and JCR Resource mapping
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java b/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
index 428bd4c..d9c21e9 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
@@ -87,7 +87,7 @@ class ThreadsafeMockAdapterManagerWrapper implements AdapterManager {
if (bundleContext == null) {
setBundleContext(MockOsgi.newBundleContext());
}
- ServiceReference<AdapterManager> serviceReference = bundleContext.getServiceReference(AdapterManager.class);
+ ServiceReference serviceReference = bundleContext.getServiceReference(AdapterManager.class.getName());
if (serviceReference != null) {
return (AdapterManager)bundleContext.getService(serviceReference);
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
index e8a9066..3c94555 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
@@ -19,5 +19,5 @@
/**
* Content builder for creating test content.
*/
-@org.osgi.annotation.versioning.Version("1.1")
+@aQute.bnd.annotation.Version("1.1")
package org.apache.sling.testing.mock.sling.builder;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
index 65cf6d2..2448e07 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
@@ -48,6 +48,9 @@ final class ContextResourceResolverFactory {
case JCR_MOCK:
initializeJcrMock(factory);
break;
+ case JCR_JACKRABBIT:
+ initializeJcrJackrabbit(factory);
+ break;
case JCR_OAK:
initializeJcrOak(factory);
break;
@@ -71,6 +74,10 @@ final class ContextResourceResolverFactory {
// nothing to do
}
+ private static void initializeJcrJackrabbit(ResourceResolverFactory factory) {
+ // register sling node types?
+ }
+
private static void initializeJcrOak(ResourceResolverFactory factory) {
// register sling node types?
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtil.java b/src/main/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtil.java
index 7ff2195..b47399c 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtil.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtil.java
@@ -23,7 +23,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Dictionary;
@@ -189,6 +188,7 @@ final class ModelAdapterFactoryUtil {
}
+ @SuppressWarnings("unused")
private static class RegisterModelsBundle implements Bundle {
private static final String MAGIC_STRING = "MOCKS-YOU-KNOW-WHAT-TO-SCAN";
@@ -218,14 +218,14 @@ final class ModelAdapterFactoryUtil {
}
@Override
- public Dictionary<String,String> getHeaders() {
+ public Dictionary getHeaders() {
Dictionary<String, String> headers = new Hashtable<String, String>();
headers.put(PACKAGE_HEADER, MAGIC_STRING);
return headers;
}
@Override
- public Enumeration<URL> findEntries(String path, String filePattern, boolean recurse) {
+ public Enumeration findEntries(String path, String filePattern, boolean recurse) {
Vector<URL> urls = new Vector<URL>(); // NOPMD
if (packageNames != null) {
urls.addAll(getModelClassUrlsForPackages(packageNames));
@@ -237,7 +237,7 @@ final class ModelAdapterFactoryUtil {
}
@Override
- public Class<?> loadClass(String name) throws ClassNotFoundException {
+ public Class loadClass(String name) throws ClassNotFoundException {
return getClass().getClassLoader().loadClass(name);
}
@@ -292,12 +292,12 @@ final class ModelAdapterFactoryUtil {
}
@Override
- public ServiceReference<?>[] getRegisteredServices() { // NOPMD
+ public ServiceReference[] getRegisteredServices() { // NOPMD
return null;
}
@Override
- public ServiceReference<?>[] getServicesInUse() { // NOPMD
+ public ServiceReference[] getServicesInUse() { // NOPMD
return null;
}
@@ -312,7 +312,7 @@ final class ModelAdapterFactoryUtil {
}
@Override
- public Dictionary<String,String> getHeaders(String locale) {
+ public Dictionary getHeaders(String locale) {
return null;
}
@@ -322,12 +322,12 @@ final class ModelAdapterFactoryUtil {
}
@Override
- public Enumeration<URL> getResources(String name) throws IOException {
+ public Enumeration getResources(String name) throws IOException {
return null;
}
@Override
- public Enumeration<String> getEntryPaths(String path) {
+ public Enumeration getEntryPaths(String path) {
return null;
}
@@ -341,31 +341,31 @@ final class ModelAdapterFactoryUtil {
return 0;
}
- @Override
- public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(int signersType) {
+ // this is part of org.osgi 4.2.0
+ public Map getSignerCertificates(int signersType) {
return null;
}
- @Override
+ // this is part of org.osgi 4.2.0
public Version getVersion() {
return null;
}
- @Override
+ // this is part of osgi 5/6
public int compareTo(Bundle o) {
return 0;
}
- @Override
+ // this is part of osgi 5/6
public <A> A adapt(Class<A> type) {
return null;
}
- @Override
+ // this is part of osgi 5/6
public File getDataFile(String filename) {
return null;
}
-
+
}
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 6d4fa7c..e10a24c 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -50,14 +50,14 @@ import org.apache.sling.testing.mock.sling.services.MockSlingSettingService;
import org.apache.sling.testing.mock.sling.servlet.MockRequestPathInfo;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse;
-import org.osgi.annotation.versioning.ConsumerType;
-import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import aQute.bnd.annotation.ConsumerType;
+
/**
* Defines Sling context objects with lazy initialization. Should not be used
* directly but via the {@link org.apache.sling.testing.mock.sling.junit.SlingContext} JUnit
@@ -108,12 +108,7 @@ public class SlingContextImpl extends OsgiContextImpl {
MockOsgi.setConfigForPid(bundleContext(), RESOURCERESOLVERFACTORYACTIVATOR_PID, this.resourceResolverFactoryActivatorProps);
}
- // automatically register resource resolver factory when ResourceResolverType != NONE,
- // so the ResourceResolverFactory is available as OSGi service immediately
- if (resourceResolverType != ResourceResolverType.NONE) {
- resourceResolverFactory();
- }
-
+ this.resourceResolverFactory = newResourceResolverFactory();
registerDefaultServices();
}
@@ -124,13 +119,6 @@ public class SlingContextImpl extends OsgiContextImpl {
protected ResourceResolverFactory newResourceResolverFactory() {
return ContextResourceResolverFactory.get(this.resourceResolverType, bundleContext());
}
-
- private ResourceResolverFactory resourceResolverFactory() {
- if (this.resourceResolverFactory == null) {
- this.resourceResolverFactory = newResourceResolverFactory();
- }
- return this.resourceResolverFactory;
- }
/**
* Default services that should be available for every unit test
@@ -173,7 +161,14 @@ public class SlingContextImpl extends OsgiContextImpl {
try {
Class<?> clazz = Class.forName(className);
registerInjectActivateService(clazz.newInstance());
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ }
+ catch (ClassNotFoundException ex) {
+ // ignore - probably not the latest sling models impl version
+ }
+ catch (InstantiationException e) {
+ // ignore - probably not the latest sling models impl version
+ }
+ catch (IllegalAccessException e) {
// ignore - probably not the latest sling models impl version
}
}
@@ -217,7 +212,6 @@ public class SlingContextImpl extends OsgiContextImpl {
this.contentBuilder = null;
this.resourceBuilder = null;
this.uniqueRoot = null;
- this.resourceResolverFactory = null;
super.tearDown();
}
@@ -228,16 +222,14 @@ public class SlingContextImpl extends OsgiContextImpl {
public final ResourceResolverType resourceResolverType() {
return this.resourceResolverType;
}
-
+
/**
- * Returns the singleton resource resolver bound to this context.
- * It is automatically closed after the test.
* @return Resource resolver
*/
public final ResourceResolver resourceResolver() {
if (this.resourceResolver == null) {
try {
- this.resourceResolver = this.resourceResolverFactory().getAdministrativeResourceResolver(null);
+ this.resourceResolver = this.resourceResolverFactory.getAdministrativeResourceResolver(null);
} catch (LoginException ex) {
throw new RuntimeException("Creating resource resolver failed.", ex);
}
@@ -317,9 +309,6 @@ public class SlingContextImpl extends OsgiContextImpl {
}
/**
- * Creates a {@link ContentBuilder} object for easily creating test content.
- * This API was part of Sling Mocks since version 1.x.
- * You can use alternatively the {@link #build()} method and use the {@link ResourceBuilder} API.
* @return Content builder for building test content
*/
public ContentBuilder create() {
@@ -416,9 +405,9 @@ public class SlingContextImpl extends OsgiContextImpl {
*/
public final void runMode(String... runModes) {
Set<String> newRunModes = ImmutableSet.<String> builder().add(runModes).build();
- ServiceReference<SlingSettingsService> ref = bundleContext().getServiceReference(SlingSettingsService.class);
+ ServiceReference ref = bundleContext().getServiceReference(SlingSettingsService.class.getName());
if (ref != null) {
- MockSlingSettingService slingSettings = (MockSlingSettingService)bundleContext().getService(ref);
+ MockSlingSettingService slingSettings = (MockSlingSettingService) bundleContext().getService(ref);
slingSettings.setRunModes(newRunModes);
}
}
@@ -478,9 +467,6 @@ public class SlingContextImpl extends OsgiContextImpl {
.put(AdapterFactory.ADAPTER_CLASSES, new String[] {
adapterClass.getName()
})
- // make sure this overlay has higher ranking than other adapter factories
- // normally we should use Integer.MAX_VALUE for this - but due to SLING-7194 prefers lowest-ranking services first
- .put(Constants.SERVICE_RANKING, Integer.MIN_VALUE)
.build());
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java b/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
index f5f68d3..cc00d75 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
@@ -18,18 +18,21 @@
*/
package org.apache.sling.testing.mock.sling.context;
+import static org.apache.sling.jcr.resource.JcrResourceConstants.NT_SLING_ORDERED_FOLDER;
+
import java.util.UUID;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceUtil;
-import org.osgi.annotation.versioning.ConsumerType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableMap;
+import aQute.bnd.annotation.ConsumerType;
+
/**
* Manages unique root paths in JCR repository.
* This is important for resource resolver types like JCR_JACKRABBIT
@@ -79,7 +82,7 @@ public class UniqueRoot {
*/
public final String content() {
if (contentRoot == null) {
- contentRoot = getOrCreateResource("/content/" + uniquePathPart, "sling:OrderedFolder");
+ contentRoot = getOrCreateResource("/content/" + uniquePathPart, NT_SLING_ORDERED_FOLDER);
}
return contentRoot.getPath();
}
@@ -91,7 +94,7 @@ public class UniqueRoot {
*/
public final String apps() {
if (appsRoot == null) {
- appsRoot = getOrCreateResource("/apps/" + uniquePathPart, "sling:OrderedFolder");
+ appsRoot = getOrCreateResource("/apps/" + uniquePathPart, NT_SLING_ORDERED_FOLDER);
}
return appsRoot.getPath();
}
@@ -103,7 +106,7 @@ public class UniqueRoot {
*/
public final String libs() {
if (libsRoot == null) {
- libsRoot = getOrCreateResource("/libs/" + uniquePathPart, "sling:OrderedFolder");
+ libsRoot = getOrCreateResource("/libs/" + uniquePathPart, NT_SLING_ORDERED_FOLDER);
}
return libsRoot.getPath();
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
index 36a2859..cf0963d 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
@@ -19,5 +19,5 @@
/**
* Sling context implementation for unit tests.
*/
-@org.osgi.annotation.versioning.Version("3.5")
+@aQute.bnd.annotation.Version("3.5")
package org.apache.sling.testing.mock.sling.context;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
index bcd5da5..52aa2ff 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java
@@ -29,7 +29,8 @@ import org.junit.rules.ExternalResource;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
-import org.osgi.annotation.versioning.ProviderType;
+
+import aQute.bnd.annotation.ProviderType;
/**
* JUnit rule for setting up and tearing down Sling context objects for unit tests.
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextBuilder.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextBuilder.java
index b9ca1c4..37780dd 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextBuilder.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextBuilder.java
@@ -25,7 +25,8 @@ import org.apache.sling.testing.mock.osgi.context.ContextPlugin;
import org.apache.sling.testing.mock.osgi.context.ContextPlugins;
import org.apache.sling.testing.mock.osgi.context.OsgiContextImpl;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
-import org.osgi.annotation.versioning.ProviderType;
+
+import aQute.bnd.annotation.ProviderType;
/**
* Builder class for creating {@link SlingContext} instances with different sets of parameters.
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextCallback.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextCallback.java
index 79343c3..d4fc9c4 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextCallback.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextCallback.java
@@ -19,7 +19,8 @@
package org.apache.sling.testing.mock.sling.junit;
import org.apache.sling.testing.mock.osgi.context.ContextCallback;
-import org.osgi.annotation.versioning.ConsumerType;
+
+import aQute.bnd.annotation.ConsumerType;
/**
* Callback interface for application-specific setup and teardown operations to
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
index a998c8f..dd040c1 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
@@ -19,5 +19,5 @@
/**
* Rule for providing easy access to Sling context in JUnit tests.
*/
-@org.osgi.annotation.versioning.Version("4.1")
+@aQute.bnd.annotation.Version("4.1")
package org.apache.sling.testing.mock.sling.junit;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java b/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
index f62a1f1..751ab55 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
@@ -458,7 +458,7 @@ public final class ContentLoader {
for (String name : names) {
String fileExtension = StringUtils.substringAfterLast(name, ".");
if (bundleContext != null && StringUtils.isNotEmpty(fileExtension)) {
- ServiceReference<MimeTypeService> ref = bundleContext.getServiceReference(MimeTypeService.class);
+ ServiceReference ref = bundleContext.getServiceReference(MimeTypeService.class.getName());
if (ref != null) {
MimeTypeService mimeTypeService = (MimeTypeService)bundleContext.getService(ref);
mimeType = mimeTypeService.getMimeType(fileExtension);
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/loader/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/loader/package-info.java
index 92b8da5..0851487 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/loader/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/loader/package-info.java
@@ -19,5 +19,5 @@
/**
* Helpers for importing test content into the mocked repositories / resource hierarchies.
*/
-@org.osgi.annotation.versioning.Version("1.1")
+@aQute.bnd.annotation.Version("1.1")
package org.apache.sling.testing.mock.sling.loader;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/package-info.java
index c0dc58f..85ce5c4 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/package-info.java
@@ -19,5 +19,5 @@
/**
* Mock implementation of selected Sling APIs.
*/
-@org.osgi.annotation.versioning.Version("3.0")
+@aQute.bnd.annotation.Version("1.5")
package org.apache.sling.testing.mock.sling;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeService.java b/src/main/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeService.java
index a13ffa3..fbc6fb7 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeService.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeService.java
@@ -21,16 +21,18 @@ package org.apache.sling.testing.mock.sling.services;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
import org.apache.sling.commons.mime.MimeTypeService;
import org.apache.sling.commons.mime.internal.MimeTypeServiceImpl;
import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Component;
/**
* Mock {@link MimeTypeService} implementation.
*/
-@Component(service = MimeTypeService.class)
+@Component(inherit = false)
+@Service(MimeTypeService.class)
public final class MockMimeTypeService extends MimeTypeServiceImpl {
private boolean initialized;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/services/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/services/package-info.java
index 37315a7..e919159 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/services/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/services/package-info.java
@@ -19,5 +19,5 @@
/**
* Mocks for selected Sling services.
*/
-@org.osgi.annotation.versioning.Version("2.0.1")
+@aQute.bnd.annotation.Version("2.0")
package org.apache.sling.testing.mock.sling.services;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
index 798ad02..a5afbe2 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
@@ -23,6 +23,7 @@ import java.util.ResourceBundle;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.i18n.ResourceBundleProvider;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.apache.sling.testing.mock.sling.MockSling;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
@@ -36,6 +37,16 @@ public class MockSlingHttpServletRequest extends org.apache.sling.servlethelpers
/**
* Instantiate with default resource resolver
+ * @deprecated Please use {@link #MockSlingHttpServletRequest(BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public MockSlingHttpServletRequest() {
+ this(MockOsgi.newBundleContext());
+ }
+
+ /**
+ * Instantiate with default resource resolver
* @param bundleContext Bundle context
*/
public MockSlingHttpServletRequest(BundleContext bundleContext) {
@@ -44,6 +55,16 @@ public class MockSlingHttpServletRequest extends org.apache.sling.servlethelpers
/**
* @param resourceResolver Resource resolver
+ * @deprecated Please use {@link #MockSlingHttpServletRequest(ResourceResolver, BundleContext)}
+ * and shutdown the bundle context after usage.
+ */
+ @Deprecated
+ public MockSlingHttpServletRequest(ResourceResolver resourceResolver) {
+ this(resourceResolver, MockOsgi.newBundleContext());
+ }
+
+ /**
+ * @param resourceResolver Resource resolver
* @param bundleContext Bundle context
*/
public MockSlingHttpServletRequest(ResourceResolver resourceResolver, BundleContext bundleContext) {
@@ -63,7 +84,7 @@ public class MockSlingHttpServletRequest extends org.apache.sling.servlethelpers
public ResourceBundle getResourceBundle(String baseName, Locale locale) {
// check of ResourceBundleProvider is registered in mock OSGI context
ResourceBundle resourceBundle = null;
- ServiceReference<ResourceBundleProvider> serviceReference = bundleContext.getServiceReference(ResourceBundleProvider.class);
+ ServiceReference serviceReference = bundleContext.getServiceReference(ResourceBundleProvider.class.getName());
if (serviceReference != null) {
ResourceBundleProvider provider = (ResourceBundleProvider)bundleContext.getService(serviceReference);
resourceBundle = provider.getResourceBundle(baseName, locale);
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java
index 4d35479..0408710 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java
@@ -19,5 +19,5 @@
/**
* Mock implementation of selected Servlet-related Sling APIs.
*/
-@org.osgi.annotation.versioning.Version("3.0")
+@aQute.bnd.annotation.Version("2.0")
package org.apache.sling.testing.mock.sling.servlet;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/spi/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/spi/package-info.java
index 99975db..0316d03 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/spi/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/spi/package-info.java
@@ -19,5 +19,5 @@
/**
* SPI for hooking in alternative resource type adapter implementations.
*/
-@org.osgi.annotation.versioning.Version("1.0")
+@aQute.bnd.annotation.Version("1.0")
package org.apache.sling.testing.mock.sling.spi;
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScannerTest.java b/src/test/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScannerTest.java
index 032129b..1b1f888 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScannerTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScannerTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
import java.util.List;
+import org.apache.sling.testing.mock.sling.NodeTypeDefinitionScanner;
import org.junit.Test;
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java
index 4c2d13b..6299dfb 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java
@@ -48,9 +48,6 @@ public abstract class AbstractSlingContextImplTest {
@Before
public void setUp() throws Exception {
- // make sure ResourceResolverFactory is available immediately and not lazily
- assertEquals(1, context.getServices(ResourceResolverFactory.class, null).length);
-
context.addModelsForPackage("org.apache.sling.testing.mock.sling.context.models");
ContentLoader contentLoader = this.context.load();
@@ -141,4 +138,10 @@ public abstract class AbstractSlingContextImplTest {
assertTrue(newRunModes.contains("mode2"));
}
+ @Test
+ public void testResourceResolverFactory() {
+ ResourceResolverFactory[] factories = context.getServices(ResourceResolverFactory.class, null);
+ assertEquals(1, factories.length);
+ }
+
}
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
index 5af4d3e..23369ea 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/context/NoResourceResolverTypeTest.java
@@ -18,37 +18,23 @@
*/
package org.apache.sling.testing.mock.sling.context;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.SyntheticResource;
-import org.apache.sling.spi.resource.provider.ResourceProvider;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-@RunWith(MockitoJUnitRunner.class)
public class NoResourceResolverTypeTest {
@Rule
public SlingContext context = new SlingContext(ResourceResolverType.NONE);
- @Mock
- private ResourceProvider<?> resourceProvider;
-
@Test
public void testRoot() {
- // resgister dummy resource provider because otherwise ResourceResolverFactory get's not activated
- // with lates sling resource resolver implementation
- context.registerService(ResourceProvider.class, resourceProvider,
- ResourceProvider.PROPERTY_ROOT, "/");
-
Resource root = context.resourceResolver().getResource("/");
- assertTrue(root instanceof SyntheticResource);
+ assertNull(root);
}
}
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
index 8caef09..ead89a6 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
@@ -24,10 +24,9 @@ import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import org.apache.sling.api.adapter.AdapterFactory;
-import org.apache.sling.api.adapter.SlingAdaptable;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.junit.Before;
import org.junit.Rule;
@@ -47,16 +46,18 @@ public class SlingContextTest {
private final SlingContextCallback contextAfterTeardown = mock(SlingContextCallback.class);
// Run all unit tests for each resource resolver types listed here
+ @SuppressWarnings("unchecked")
@Rule
public SlingContext context = new SlingContextBuilder(ResourceResolverType.JCR_MOCK)
.beforeSetUp(contextBeforeSetup)
.afterSetUp(contextAfterSetup)
.beforeTearDown(contextBeforeTeardown)
.afterTearDown(contextAfterTeardown)
- .resourceResolverFactoryActivatorProps(ImmutableMap.<String, Object>of(
- "resource.resolver.searchpath", new String[] {"/apps","/libs","/testpath"},
- "resource.resolver.mapping", new String[] {"/:/", "/content/test/</"}
- ))
+ .resourceResolverFactoryActivatorProps(ImmutableMap.<String, Object>of("resource.resolver.searchpath", new String[] {
+ "/apps",
+ "/libs",
+ "/testpath",
+ }))
.build();
@Before
@@ -109,33 +110,6 @@ public class SlingContextTest {
}
@Test
- public void testRegisterAdapterOverlayStatic() {
- prepareInitialAdapterFactory();
-
- // register overlay adapter with static adaption
- context.registerAdapter(TestAdaptable.class, String.class, "static-adaption");
-
- // test overlay adapter with static adaption
- assertEquals("static-adaption", new TestAdaptable("testMessage2").adaptTo(String.class));
- }
-
- @Test
- public void testRegisterAdapterOverlayDynamic() {
- prepareInitialAdapterFactory();
-
- // register overlay adapter with dynamic adaption
- context.registerAdapter(TestAdaptable.class, String.class, new Function<TestAdaptable, String>() {
- @Override
- public String apply(TestAdaptable input) {
- return input.getMessage() + "-dynamic";
- }
- });
-
- // test overlay adapter with dynamic adaption
- assertEquals("testMessage3-dynamic", new TestAdaptable("testMessage3").adaptTo(String.class));
- }
-
- @Test
public void testResourceBuilder() {
context.build().resource("/test1", "prop1", "value1")
@@ -145,48 +119,9 @@ public class SlingContextTest {
Resource test1 = context.resourceResolver().getResource("/test1");
assertNotNull(test1);
- assertEquals("value1", test1.getValueMap().get("prop1", String.class));
+ assertEquals("value1", ResourceUtil.getValueMap(test1).get("prop1", String.class));
assertNotNull(test1.getChild("a"));
assertNotNull(test1.getChild("b"));
}
-
- @Test
- public void testUrlMapping() {
- assertEquals("/foo", context.resourceResolver().map("/content/test/foo"));
- }
-
-
- private void prepareInitialAdapterFactory() {
- // register "traditional" adapter factory without specific service ranking
- AdapterFactory adapterFactory = new AdapterFactory() {
- @SuppressWarnings("unchecked")
- @Override
- public <AdapterType> AdapterType getAdapter(Object adaptable, Class<AdapterType> type) {
- return (AdapterType)(((TestAdaptable)adaptable).getMessage() + "-initial");
- }
- };
- context.registerService(AdapterFactory.class, adapterFactory, ImmutableMap.<String, Object>builder()
- .put(AdapterFactory.ADAPTABLE_CLASSES, new String[] { TestAdaptable.class.getName() })
- .put(AdapterFactory.ADAPTER_CLASSES, new String[] { String.class.getName() })
- .build());
-
- // test initial adapter factory
- assertEquals("testMessage1-initial", new TestAdaptable("testMessage1").adaptTo(String.class));
- }
-
-
- private static class TestAdaptable extends SlingAdaptable {
- private final String message;
-
- public TestAdaptable(String message) {
- this.message = message;
- }
-
- public String getMessage() {
- return message;
- }
-
- }
-
}
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
index 3fedcca..427e338 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.sling.testing.mock.sling.resource;
+import static org.apache.sling.jcr.resource.JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY;
import static org.junit.Assert.assertEquals;
import javax.jcr.RepositoryException;
@@ -56,7 +57,7 @@ public abstract class AbstractJcrNamespaceTest {
Resource resource = resolver.getResource(context.uniqueRoot().content() + "/foo");
ValueMap props = ResourceUtil.getValueMap(resource);
- assertEquals("fooType", props.get("sling:resourceType"));
+ assertEquals("fooType", props.get(SLING_RESOURCE_TYPE_PROPERTY));
assertEquals("fooType", resource.getResourceType());
MockOsgi.shutdown(bundleContext);
@@ -72,7 +73,7 @@ public abstract class AbstractJcrNamespaceTest {
Resource resource = resolver.getResource(context.uniqueRoot().content() + "/foo");
ValueMap props = ResourceUtil.getValueMap(resource);
- assertEquals("fooType", props.get("sling:resourceType"));
+ assertEquals("fooType", props.get(SLING_RESOURCE_TYPE_PROPERTY));
assertEquals("fooType", resource.getResourceType());
}
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
index 8b6251a..2726da9 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.sling.testing.mock.sling.resource;
+import static org.apache.sling.jcr.resource.JcrResourceConstants.NT_SLING_ORDERED_FOLDER;
+import static org.apache.sling.jcr.resource.JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -151,7 +153,7 @@ public abstract class AbstractJcrResourceResolverTest {
Resource parent = context.resourceResolver().getResource(getTestRootNode().getPath());
Resource child = context.resourceResolver().create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder()
- .put("sling:resourceType", JcrConstants.NT_UNSTRUCTURED).build());
+ .put(SLING_RESOURCE_TYPE_PROPERTY, JcrConstants.NT_UNSTRUCTURED).build());
assertNotNull(child);
assertEquals(JcrConstants.NT_UNSTRUCTURED, child.getResourceType());
assertEquals(JcrConstants.NT_UNSTRUCTURED, child.adaptTo(Node.class).getPrimaryNodeType().getName());
@@ -164,7 +166,7 @@ public abstract class AbstractJcrResourceResolverTest {
Resource child = ResourceUtil.getOrCreateResource(context.resourceResolver(), parent.getPath() + "/intermediate/child",
"sling/resource/type", JcrConstants.NT_UNSTRUCTURED, true);
assertNotNull(child);
- assertEquals("sling:OrderedFolder", parent.getResourceType());
+ assertEquals(NT_SLING_ORDERED_FOLDER, parent.getResourceType());
assertEquals("sling/resource/type", child.getResourceType());
}
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 7b0d5e7..a98c26e 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
@@ -169,16 +169,26 @@ public abstract class AbstractSlingCrudResourceResolverTest {
public void testDateProperty() throws IOException {
Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
ValueMap props = ResourceUtil.getValueMap(resource1);
- assertEquals(DATE_VALUE, props.get("dateProp", Date.class));
+ // TODO: enable this test when JCR resource implementation supports writing Date objects (SLING-3846)
+ if (getResourceResolverType() != ResourceResolverType.JCR_MOCK
+ && getResourceResolverType() != ResourceResolverType.JCR_JACKRABBIT
+ && getResourceResolverType() != ResourceResolverType.JCR_OAK ) {
+ assertEquals(DATE_VALUE, props.get("dateProp", Date.class));
+ }
}
@Test
public void testDatePropertyToCalendar() throws IOException {
Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
ValueMap props = ResourceUtil.getValueMap(resource1);
- Calendar calendarValue = props.get("dateProp", Calendar.class);
- assertNotNull(calendarValue);
- assertEquals(DATE_VALUE, calendarValue.getTime());
+ // TODO: enable this test when JCR resource implementation supports writing Date objects (SLING-3846)
+ if (getResourceResolverType() != ResourceResolverType.JCR_MOCK
+ && getResourceResolverType() != ResourceResolverType.JCR_JACKRABBIT
+ && getResourceResolverType() != ResourceResolverType.JCR_OAK ) {
+ Calendar calendarValue = props.get("dateProp", Calendar.class);
+ assertNotNull(calendarValue);
+ assertEquals(DATE_VALUE, calendarValue.getTime());
+ }
}
@Test
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.