You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2009/10/12 15:24:36 UTC
svn commit: r824328 - in /sling/trunk/bundles/commons/classloader: pom.xml
src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
Author: cziegeler
Date: Mon Oct 12 13:24:36 2009
New Revision: 824328
URL: http://svn.apache.org/viewvc?rev=824328&view=rev
Log:
SLING-1145 : Exceptions from dynamic class loader providers should be catched
Modified:
sling/trunk/bundles/commons/classloader/pom.xml
sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
Modified: sling/trunk/bundles/commons/classloader/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader/pom.xml?rev=824328&r1=824327&r2=824328&view=diff
==============================================================================
--- sling/trunk/bundles/commons/classloader/pom.xml (original)
+++ sling/trunk/bundles/commons/classloader/pom.xml Mon Oct 12 13:24:36 2009
@@ -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>
Modified: sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java?rev=824328&r1=824327&r2=824328&view=diff
==============================================================================
--- sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java (original)
+++ sling/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java Mon Oct 12 13:24:36 2009
@@ -22,6 +22,9 @@
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 @@
*/
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 @@
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 @@
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 @@
@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 @@
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);
}
}
}