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;
 	}