SLING-4803 log why the dynamic class loader has been reloaded
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1685514 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java b/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
index 43cb138..5f9feb0 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
@@ -29,6 +29,8 @@
import org.osgi.framework.SynchronousBundleListener;
import org.osgi.service.packageadmin.PackageAdmin;
import org.osgi.util.tracker.ServiceTracker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This activator registers the dynamic class loader manager.
@@ -39,6 +41,9 @@
/** Package admin service name */
private static String PACKAGE_ADMIN_NAME = PackageAdmin.class.getName();
+
+ /** The logger. */
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
/** A service tracker for the package admin. */
private ServiceTracker packageAdminTracker;
@@ -115,8 +120,14 @@
if ( ( event.getType() == BundleEvent.STARTED && !lazyBundle)
|| (event.getType() == BundleEvent.STARTING && lazyBundle) ) {
reload = this.service.hasUnresolvedPackages(event.getBundle());
+ if (reload) {
+ logger.debug("Dynamic Class Loader is reloaded because the new bundle '{}' provides previously unresolved packages", event.getBundle());
+ }
} else if ( event.getType() == BundleEvent.UNRESOLVED || event.getType() == BundleEvent.RESOLVED ) {
reload = this.service.isBundleUsed(event.getBundle().getBundleId());
+ if (reload) {
+ logger.debug("Dynamic Class Loader is reloaded because it has previously loaded classes from bundle '{}' which is no longer active", event.getBundle());
+ }
} else {
reload = false;
}
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
index e6cd33a..9ab11be 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
@@ -26,6 +26,8 @@
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.packageadmin.ExportedPackage;
import org.osgi.service.packageadmin.PackageAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This is the service factory for the dynamic class loader manager.
@@ -33,6 +35,9 @@
public class DynamicClassLoaderManagerFactory
implements ServiceFactory {
+ /** The logger. */
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
/** The package admin. */
private final PackageAdmin pckAdmin;
@@ -113,6 +118,7 @@
if ( pcks != null ) {
for(final ExportedPackage pck : pcks ) {
if ( this.unresolvedPackages.contains(pck.getName()) ) {
+ logger.debug("Bundle '{}' provides package '{}' which has been previously unsuccessfully requested!", bundle, pck.getName());
return true;
}
}