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:35:24 UTC
svn commit: r548290 -
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
Author: almaw
Date: Mon Jun 18 03:35:21 2007
New Revision: 548290
URL: http://svn.apache.org/viewvc?view=rev&rev=548290
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/PropertyResolver.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?view=diff&rev=548290&r1=548289&r2=548290
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java Mon Jun 18 03:35:21 2007
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.util.lang;
+import java.lang.ref.WeakReference;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -271,14 +272,15 @@
private final static IGetAndSet getGetAndSetter(String exp, Class clz)
{
- Map getAndSetters = (Map)classesToGetAndSetters.get(clz);
+ Map getAndSetters = (Map)classesToGetAndSetters.get(clz.getName());
if (getAndSetters == null)
{
getAndSetters = new ConcurrentHashMap(8);
- classesToGetAndSetters.put(clz, getAndSetters);
+ classesToGetAndSetters.put(clz.getName(), getAndSetters);
}
- IGetAndSet getAndSetter = (IGetAndSet)getAndSetters.get(exp);
+ WeakReference ref = (WeakReference)getAndSetters.get(exp);
+ IGetAndSet getAndSetter = ref == null ? null : (IGetAndSet)ref.get();
if (getAndSetter == null)
{
Method method = null;
@@ -409,7 +411,7 @@
field = findField(clz, exp);
getAndSetter = new MethodGetAndSet(method, field);
}
- getAndSetters.put(exp, getAndSetter);
+ getAndSetters.put(exp, new WeakReference(getAndSetter));
}
return getAndSetter;
}
@@ -1141,6 +1143,10 @@
*/
public Method getSetter()
{
+ if (setMethod == null)
+ {
+ setMethod = findSetter(getMethod, getMethod.getReturnType());
+ }
return setMethod;
}