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 2020/09/10 13:29:00 UTC
[sling-org-apache-sling-testing-sling-mock] 02/02: SLING-9727
sling-mock: Make compatible with o.a.s.resourceresolver 1.7.0
This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit ac94e66696986f759effe8ca33913d20f7bd7cd5
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Thu Sep 10 15:26:06 2020 +0200
SLING-9727 sling-mock: Make compatible with o.a.s.resourceresolver 1.7.0
---
.../sling/ResourceResolverFactoryInitializer.java | 31 ++++++++++++++++------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java b/core/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
index b1d7ea5..48f0d5a 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
@@ -48,7 +48,7 @@ import org.slf4j.Logger;
* Initializes Sling Resource Resolver factories with JCR-resource mapping.
*/
class ResourceResolverFactoryInitializer {
-
+
private ResourceResolverFactoryInitializer() {
// static methods only
}
@@ -72,7 +72,7 @@ class ResourceResolverFactoryInitializer {
ensureJcrResourceProviderDependencies(bundleContext);
initializeJcrResourceProvider(bundleContext);
}
-
+
// initialize resource resolver factory activator
ensureResourceResolverFactoryActivatorDependencies(bundleContext);
initializeResourceResolverFactoryActivator(bundleContext);
@@ -83,7 +83,7 @@ class ResourceResolverFactoryInitializer {
}
return (ResourceResolverFactory)bundleContext.getService(factoryRef);
}
-
+
/**
* Ensure dependencies for JcrResourceProvider are present.
* @param bundleContext Bundle context
@@ -125,7 +125,7 @@ class ResourceResolverFactoryInitializer {
MockOsgi.activate(provider, bundleContext, config);
bundleContext.registerService(ResourceProvider.class, provider, config);
}
-
+
/**
* Ensure dependencies for ResourceResolverFactoryActivator are present.
* @param bundleContext Bundle context
@@ -137,6 +137,9 @@ class ResourceResolverFactoryInitializer {
registerServiceIfNotPresent(bundleContext, ResourceAccessSecurityTracker.class, new ResourceAccessSecurityTracker());
registerServiceIfNotPresent(bundleContext, EventAdmin.class, new MockEventAdmin());
+ // dependency required since resourceresolver 1.7.0
+ registerServiceIfNotPresentByName(bundleContext, "org.apache.sling.resourceresolver.impl.mapping.StringInterpolationProvider",
+ "org.apache.sling.resourceresolver.impl.mapping.StringInterpolationProviderImpl");
}
/**
@@ -153,7 +156,19 @@ class ResourceResolverFactoryInitializer {
MockOsgi.activate(activator, bundleContext, config);
bundleContext.registerService(ResourceResolverFactoryActivator.class.getName(), activator, config);
}
-
+
+ @SuppressWarnings({ "unchecked", "null" })
+ private static void registerServiceIfNotPresentByName(@NotNull BundleContext bundleContext,
+ @NotNull String interfaceClassName, @NotNull String implClassName) {
+ try {
+ Class<?> interfaceClass = Class.forName(interfaceClassName);
+ Class<?> implClass = Class.forName(implClassName);
+ registerServiceIfNotPresent(bundleContext, (Class)interfaceClass, implClass.newInstance());
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ // ignore - probably not the latest sling models impl version
+ }
+ }
+
/**
* Registers a service if the service class is found in classpath,
* and if no service with this class is already registered.
@@ -165,7 +180,7 @@ class ResourceResolverFactoryInitializer {
@NotNull T 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.
@@ -182,7 +197,7 @@ class ResourceResolverFactoryInitializer {
bundleContext.registerService(serviceClass, instance, config);
}
}
-
+
/**
* Registers all JCR node types found in classpath.
* @param slingRepository Sling repository
@@ -204,5 +219,5 @@ class ResourceResolverFactoryInitializer {
}
}
}
-
+
}