Author: kwin
Date: Mon Jun 15 08:50:48 2015
New Revision: 1685514

URL: http://svn.apache.org/r1685514
Log:
SLING-4803 log why the dynamic class loader has been reloaded

Modified:
    
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
    
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java

Modified: 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java?rev=1685514&r1=1685513&r2=1685514&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
 (original)
+++ 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
 Mon Jun 15 08:50:48 2015
@@ -29,6 +29,8 @@ import org.osgi.framework.ServiceRegistr
 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 @@ public class Activator implements Synchr
 
     /** 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 @@ public class Activator implements Synchr
             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;
             }

Modified: 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java?rev=1685514&r1=1685513&r2=1685514&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
 (original)
+++ 
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
 Mon Jun 15 08:50:48 2015
@@ -26,6 +26,8 @@ import org.osgi.framework.ServiceFactory
 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 @@ import org.osgi.service.packageadmin.Pac
 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 @@ public class DynamicClassLoaderManagerFa
             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;
                     }
                 }


Reply via email to