You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by al...@apache.org on 2007/06/18 12:25:26 UTC
svn commit: r548280 -
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
Author: almaw
Date: Mon Jun 18 03:25:17 2007
New Revision: 548280
URL: http://svn.apache.org/viewvc?view=rev&rev=548280
Log:
WICKET-625 - Wicket doesn't clean up properly when hot-deploying; hangs onto Class references. (partial fix, work in progress)
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java?view=diff&rev=548280&r1=548279&r2=548280
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java Mon Jun 18 03:25:17 2007
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.application;
+import java.lang.ref.WeakReference;
+
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.util.concurrent.ConcurrentReaderHashMap;
@@ -49,8 +51,14 @@
{
try
{
- Class clz = (Class)classes.get(classname);
- if (clz == null)
+ Class clazz = null;
+ WeakReference ref = (WeakReference)classes.get(classname);
+ // Might be garbage-collected between getting the WeakRef and retrieving the Class from it.
+ if (ref != null)
+ {
+ clazz = (Class)ref.get();
+ }
+ if (clazz == null)
{
synchronized (classes)
{
@@ -59,11 +67,11 @@
{
loader = DefaultClassResolver.class.getClassLoader();
}
- clz = loader.loadClass(classname);
- classes.put(classname, clz);
+ clazz = loader.loadClass(classname);
+ classes.put(classname, new WeakReference(clazz));
}
}
- return clz;
+ return clazz;
}
catch (ClassNotFoundException ex)
{