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 13:05:13 UTC
svn commit: r548314 - in
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target:
coding/ component/
Author: almaw
Date: Mon Jun 18 04:05:10 2007
New Revision: 548314
URL: http://svn.apache.org/viewvc?view=rev&rev=548314
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/request/target/coding/BookmarkablePageRequestTargetUrlCodingStrategy.java
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/QueryStringUrlCodingStrategy.java
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/BookmarkablePageRequestTargetUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/BookmarkablePageRequestTargetUrlCodingStrategy.java?view=diff&rev=548314&r1=548313&r2=548314
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/BookmarkablePageRequestTargetUrlCodingStrategy.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/BookmarkablePageRequestTargetUrlCodingStrategy.java Mon Jun 18 04:05:10 2007
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.request.target.coding;
+import java.lang.ref.WeakReference;
+
import org.apache.wicket.IRequestTarget;
import org.apache.wicket.PageParameters;
import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
@@ -35,7 +37,7 @@
AbstractRequestTargetUrlCodingStrategy
{
/** bookmarkable page class. */
- protected final Class bookmarkablePageClass;
+ protected final WeakReference/*<Class>*/ bookmarkablePageClassRef;
/** page map name. */
private final String pageMapName;
@@ -60,7 +62,7 @@
throw new IllegalArgumentException("Argument bookmarkablePageClass must be not null");
}
- this.bookmarkablePageClass = bookmarkablePageClass;
+ this.bookmarkablePageClassRef = new WeakReference(bookmarkablePageClass);
this.pageMapName = pageMapName;
}
@@ -93,12 +95,12 @@
{
WebRequestCodingStrategy.addInterfaceParameters(interfaceParameter, requestParameters);
return new BookmarkableListenerInterfaceRequestTarget(pageMapName,
- bookmarkablePageClass, parameters, requestParameters.getComponentPath(),
+ (Class)bookmarkablePageClassRef.get(), parameters, requestParameters.getComponentPath(),
requestParameters.getInterfaceName());
}
else
{
- return new BookmarkablePageRequestTarget(pageMapName, bookmarkablePageClass, parameters);
+ return new BookmarkablePageRequestTarget(pageMapName, (Class)bookmarkablePageClassRef.get(), parameters);
}
}
@@ -138,7 +140,7 @@
if (requestTarget instanceof IBookmarkablePageRequestTarget)
{
IBookmarkablePageRequestTarget target = (IBookmarkablePageRequestTarget)requestTarget;
- if (bookmarkablePageClass.equals(target.getPageClass()))
+ if (((Class)bookmarkablePageClassRef.get()).equals(target.getPageClass()))
{
if (this.pageMapName == null)
{
@@ -158,6 +160,6 @@
*/
public String toString()
{
- return "BookmarkablePageEncoder[page=" + bookmarkablePageClass + "]";
+ return "BookmarkablePageEncoder[page=" + (Class)bookmarkablePageClassRef.get() + "]";
}
}
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/QueryStringUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/QueryStringUrlCodingStrategy.java?view=diff&rev=548314&r1=548313&r2=548314
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/QueryStringUrlCodingStrategy.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/QueryStringUrlCodingStrategy.java Mon Jun 18 04:05:10 2007
@@ -153,12 +153,12 @@
// This might be a request to a stateless page, so check for an interface name.
if (requestParameters.getInterfaceName() != null) {
return new BookmarkableListenerInterfaceRequestTarget(pageMapName,
- bookmarkablePageClass, parameters, requestParameters.getComponentPath(),
+ (Class)bookmarkablePageClassRef.get(), parameters, requestParameters.getComponentPath(),
requestParameters.getInterfaceName());
}
else
{
- return new BookmarkablePageRequestTarget(pageMapName, bookmarkablePageClass, parameters);
+ return new BookmarkablePageRequestTarget(pageMapName, (Class)bookmarkablePageClassRef.get(), parameters);
}
}
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java?view=diff&rev=548314&r1=548313&r2=548314
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java Mon Jun 18 04:05:10 2007
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.request.target.component;
+import java.lang.ref.WeakReference;
+
import org.apache.wicket.IPageFactory;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
@@ -36,7 +38,7 @@
private Page page;
/** the class of the page. */
- private final Class pageClass;
+ private final WeakReference/*<Class>*/ pageClassRef;
/** optional page map name. */
private final String pageMapName;
@@ -105,7 +107,7 @@
throw new IllegalArgumentException("Argument pageClass must be an instance of "
+ Page.class.getName());
}
- this.pageClass = pageClass;
+ this.pageClassRef = new WeakReference(pageClass);
this.pageParameters = (pageParameters == null) ? new PageParameters() : pageParameters;
this.pageMapName = pageMapName;
}
@@ -130,7 +132,7 @@
if (obj != null && (obj instanceof BookmarkablePageRequestTarget))
{
BookmarkablePageRequestTarget that = (BookmarkablePageRequestTarget)obj;
- if (pageClass.equals(that.pageClass))
+ if (getPageClass().equals(that.getPageClass()))
{
boolean mapMatch = false;
@@ -163,7 +165,7 @@
*/
public final Class getPageClass()
{
- return pageClass;
+ return (Class)pageClassRef.get();
}
/**
@@ -188,7 +190,7 @@
public int hashCode()
{
int result = "BookmarkablePageRequestTarget".hashCode();
- result += pageClass.hashCode();
+ result += getPageClass().hashCode();
result += pageMapName != null ? pageMapName.hashCode() : 0;
return 17 * result;
}
@@ -209,7 +211,7 @@
*/
public void respond(RequestCycle requestCycle)
{
- if (pageClass != null)
+ if (pageClassRef != null && pageClassRef.get() != null)
{
if (requestCycle.isRedirect())
{
@@ -230,7 +232,7 @@
*/
public String toString()
{
- return "[BookmarkablePageRequestTarget@" + hashCode() + " pageClass=" + pageClass.getName()
+ return "[BookmarkablePageRequestTarget@" + hashCode() + " pageClass=" + getPageClass().getName()
+ "]";
}
@@ -270,9 +272,9 @@
*/
protected final Page getPage(RequestCycle requestCycle)
{
- if (page == null && pageClass != null && !requestCycle.isRedirect())
+ if (page == null && !requestCycle.isRedirect())
{
- page = newPage(pageClass, requestCycle);
+ page = newPage(getPageClass(), requestCycle);
}
return page;
}