add debug logging for initializing resource resolver factory and adapter manager
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 2518527..152053b 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
@@ -42,12 +42,15 @@
import org.osgi.framework.ServiceReference;
import org.osgi.service.event.EventAdmin;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Initializes Sling Resource Resolver factories with JCR-resource mapping.
*/
class ResourceResolverFactoryInitializer {
+ private static final Logger log = LoggerFactory.getLogger(ResourceResolverFactoryInitializer.class);
+
private ResourceResolverFactoryInitializer() {
// static methods only
}
@@ -162,8 +165,9 @@
Class<?> interfaceClass = Class.forName(interfaceClassName);
Class<?> implClass = Class.forName(implClassName);
registerServiceIfNotPresent(bundleContext, (Class)interfaceClass, implClass.newInstance());
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
// ignore - probably not the latest sling models impl version
+ log.debug("registerServiceIfNotPresentByName: Skip registering {} ({}), bundleContext={}", implClassName, interfaceClassName, bundleContext);
}
}
@@ -192,6 +196,9 @@
if (bundleContext.getServiceReference(serviceClass.getName()) == null) {
MockOsgi.registerInjectActivateService(instance, bundleContext, config);
}
+ else if (log.isDebugEnabled()) {
+ log.debug("registerServiceIfNotPresent: Skip registering {} ({}) because already present, bundleContext={}", instance.getClass(), serviceClass, bundleContext);
+ }
}
/**
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java b/core/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
index 0342108..4329fa4 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java
@@ -26,6 +26,8 @@
import org.jetbrains.annotations.NotNull;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Wrapper for {@link MockAdapterManager} which makes sure multiple unit tests
@@ -34,6 +36,8 @@
*/
class ThreadsafeMockAdapterManagerWrapper implements AdapterManager {
+ private static final Logger log = LoggerFactory.getLogger(ThreadsafeMockAdapterManagerWrapper.class);
+
private static final ThreadLocal<AdapterManagerBundleContextFactory> THREAD_LOCAL = new ThreadLocal<AdapterManagerBundleContextFactory>() {
@Override
protected AdapterManagerBundleContextFactory initialValue() {
@@ -71,6 +75,7 @@
private BundleContext bundleContext;
public void setBundleContext(@NotNull final BundleContext bundleContext) {
+ log.debug("Set bundle context for AdapterManager, bundleContext={}", bundleContext);
this.bundleContext = bundleContext;
// register adapter manager
@@ -88,11 +93,13 @@
@SuppressWarnings("null")
public synchronized AdapterManager getAdapterManager() {
if (bundleContext == null) {
- setBundleContext(MockOsgi.newBundleContext());
+ BundleContext newBundleContext = MockOsgi.newBundleContext();
+ log.warn("Create new bundle context for adapter manager because it was null, bundleContext={}", bundleContext);
+ setBundleContext(newBundleContext);
}
ServiceReference<AdapterManager> serviceReference = bundleContext.getServiceReference(AdapterManager.class);
if (serviceReference != null) {
- return (AdapterManager)bundleContext.getService(serviceReference);
+ return bundleContext.getService(serviceReference);
}
else {
throw new RuntimeException("AdapterManager not registered in bundle context.");
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java b/core/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
index 5b2be68..f4048dc 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
@@ -27,12 +27,16 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Create resolve resolver instance and initialize it depending on it's type.
*/
final class ContextResourceResolverFactory {
+ private static final Logger log = LoggerFactory.getLogger(ContextResourceResolverFactory.class);
+
private ContextResourceResolverFactory() {
// static methods only
}
@@ -44,6 +48,7 @@
type = MockSling.DEFAULT_RESOURCERESOLVER_TYPE;
}
try {
+ log.debug("Start initialize resource resolver factory, bundleContext={}", bundleContext);
ResourceResolverFactory factory = MockSling.newResourceResolverFactory(type, bundleContext);
switch (type) {
@@ -63,8 +68,11 @@
throw new IllegalArgumentException("Invalid resource resolver type: " + type);
}
+ log.debug("Finished initializing resource resolver factory, bundleContext={}", bundleContext);
+
return factory;
} catch (Throwable ex) {
+ log.error("Failed initializing resource resolver factory, bundleContext={}", bundleContext, ex);
throw new RuntimeException("Unable to initialize " + type + " resource resolver factory: " + ex.getMessage(), ex);
}
}