This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.commons.classloader-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit 2ffcc20270360a1a71c28c4cf31604808f04bbf1 Author: Carsten Ziegeler <[email protected]> AuthorDate: Mon Oct 12 13:24:36 2009 +0000 SLING-1145 : Exceptions from dynamic class loader providers should be catched git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@824328 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 4 +++ .../classloader/impl/ClassLoaderFacade.java | 36 +++++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 7234371..e7a7bdb 100644 --- a/pom.xml +++ b/pom.xml @@ -103,5 +103,9 @@ <groupId>org.jmock</groupId> <artifactId>jmock-junit4</artifactId> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + </dependency> </dependencies> </project> diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java index e8e7426..2fbe4da 100644 --- a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java +++ b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java @@ -22,6 +22,9 @@ import java.io.IOException; import java.net.URL; import java.util.Enumeration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The <code>ClassLoaderFacade</code> is a facade @@ -33,8 +36,15 @@ import java.util.Enumeration; */ public class ClassLoaderFacade extends ClassLoader { + /** The logger. */ + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + /** Dynamic class loader manager which manages the dynamic class loader providers for this facade. */ private final DynamicClassLoaderManagerImpl manager; + /** + * Constructor + */ public ClassLoaderFacade(final DynamicClassLoaderManagerImpl manager) { this.manager = manager; } @@ -49,9 +59,13 @@ public class ClassLoaderFacade extends ClassLoader { final ClassLoader[] loaders = manager.getDynamicClassLoaders(); for(final ClassLoader cl : loaders) { if ( cl != null ) { - final URL u = cl.getResource(name); - if ( u != null ) { - return u; + try { + final URL u = cl.getResource(name); + if ( u != null ) { + return u; + } + } catch (Throwable t) { + logger.error("Exception while querying class loader " + cl + " for resource " + name, t); } } } @@ -68,9 +82,13 @@ public class ClassLoaderFacade extends ClassLoader { final ClassLoader[] loaders = manager.getDynamicClassLoaders(); for(final ClassLoader cl : loaders) { if ( cl != null ) { - final Enumeration<URL> e = cl.getResources(name); - if ( e != null && e.hasMoreElements() ) { - return e; + try { + final Enumeration<URL> e = cl.getResources(name); + if ( e != null && e.hasMoreElements() ) { + return e; + } + } catch (Throwable t) { + logger.error("Exception while querying class loader " + cl + " for resources " + name, t); } } } @@ -79,7 +97,7 @@ public class ClassLoaderFacade extends ClassLoader { @Override protected synchronized Class<?> loadClass(String name, boolean resolve) - throws ClassNotFoundException { + throws ClassNotFoundException { if ( !this.manager.isActive() ) { throw new RuntimeException("Dynamic class loader has already been deactivated."); @@ -90,8 +108,10 @@ public class ClassLoaderFacade extends ClassLoader { try { final Class<?> c = cl.loadClass(name); return c; - } catch (Exception cnfe) { + } catch (ClassNotFoundException cnfe) { // we just ignore this and try the next class loader + } catch (Throwable t) { + logger.error("Exception while trying to load class " + name + " from class loader " + cl, t); } } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
