[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