[jboss-cvs] JBossAS SVN: r109207 - trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 9 05:07:02 EST 2010


Author: alesj
Date: 2010-11-09 05:07:01 -0500 (Tue, 09 Nov 2010)
New Revision: 109207

Modified:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClassLoaderResourceLoader.java
Log:
Have weak ref on the classloader, since we don't cleanup.


Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClassLoaderResourceLoader.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClassLoaderResourceLoader.java	2010-11-09 08:47:33 UTC (rev 109206)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClassLoaderResourceLoader.java	2010-11-09 10:07:01 UTC (rev 109207)
@@ -1,31 +1,37 @@
 package org.jboss.weld.integration.deployer.env.bda;
 
-import org.jboss.weld.resources.spi.ResourceLoader;
-import org.jboss.weld.resources.spi.ResourceLoadingException;
-
 import java.io.IOException;
 import java.lang.ref.WeakReference;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Enumeration;
 
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.resources.spi.ResourceLoadingException;
+
 /**
  * A (@link ResourceLoader} implementation that uses a specific @{link ClassLoader}
  *
  * @author Marius Bogoevici
+ * @author Ales Justin
  */
 public class ClassLoaderResourceLoader implements ResourceLoader
 {
-   private ClassLoader classLoader;
+   private WeakReference<ClassLoader> clRef;
 
    public ClassLoaderResourceLoader(ClassLoader classLoader)
    {
-      this.classLoader = classLoader;
+      clRef = new WeakReference<ClassLoader>(classLoader);
    }
 
    public Class<?> classForName(String name)
    {
+      ClassLoader classLoader = clRef.get();
+      if (classLoader == null)
+         throw new ResourceLoadingException("Error loading class " + name + ", classloader GC-ed.");
+
       try
       {
          return classLoader.loadClass(name);
@@ -46,12 +52,19 @@
 
    public URL getResource(String name)
    {
+      ClassLoader classLoader = clRef.get();
+      if (classLoader == null)
+         return null;
+
       return classLoader.getResource(name);
-
    }
 
    public Collection<URL> getResources(String name)
    {
+      ClassLoader classLoader = clRef.get();
+      if (classLoader == null)
+         return Collections.emptySet();
+
       try
       {
          final Enumeration<URL> enumResources = classLoader.getResources(name);



More information about the jboss-cvs-commits mailing list