Author: almaw
Date: Mon Jun 18 03:34:07 2007
New Revision: 548288

URL: http://svn.apache.org/viewvc?view=rev&rev=548288
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/util/lang/Objects.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java?view=diff&rev=548288&r1=548287&r2=548288
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 Mon Jun 18 03:34:07 2007
@@ -24,6 +24,7 @@
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamClass;
 import java.io.OutputStream;
+import java.lang.ref.WeakReference;
 import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -102,7 +103,7 @@
 
        private static final class ReplaceObjectInputStream extends 
ObjectInputStream
        {
-               private final ClassLoader classloader;
+               private final WeakReference/*<ClassLoader>*/ classloaderRef;
                private HashMap replacedComponents;
 
                private ReplaceObjectInputStream(InputStream in, HashMap 
replacedComponents,
@@ -110,7 +111,7 @@
                {
                        super(in);
                        this.replacedComponents = replacedComponents;
-                       this.classloader = classloader;
+                       this.classloaderRef = new WeakReference(classloader);
                        enableResolveObject(true);
                }
 
@@ -124,7 +125,7 @@
 
                        try
                        {
-                               return Class.forName(className, true, 
classloader);
+                               return Class.forName(className, true, 
(ClassLoader)classloaderRef.get());
                        }
                        catch (ClassNotFoundException ex1)
                        {


Reply via email to