You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/11/20 15:43:30 UTC

svn commit: r1037227 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: Application.java pageStore/memory/HttpSessionDataStore.java protocol/http/WebApplication.java protocol/http/WicketFilter.java

Author: mgrigorov
Date: Sat Nov 20 14:43:30 2010
New Revision: 1037227

URL: http://svn.apache.org/viewvc?rev=1037227&view=rev
Log:
WICKET-3168 No Application in the thread when the web server destroys WicketFilter

Set the current Application in the ThreadContext local during WicketFilter#destroy() call.
This way all destroyable objects can use the application if they need it.

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java Sat Nov 20 14:43:30 2010
@@ -834,10 +834,11 @@ public abstract class Application implem
 		onDestroy();
 
 		callDestroyers();
-		applicationKeyToApplication.remove(getApplicationKey());
 
 		getPageManager().destroy();
 		getSessionStore().destroy();
+
+		applicationKeyToApplication.remove(getApplicationKey());
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java Sat Nov 20 14:43:30 2010
@@ -113,11 +113,9 @@ public class HttpSessionDataStore implem
 
 	public void destroy()
 	{
-		PageTable pageTable = getPageTable(false);
-		if (pageTable != null)
-		{
-			pageTable.clear();
-		}
+		// do nothing
+		// this is application lifecycle thread (WicketFilter#destroy())
+		// so there is no reachable http session
 	}
 
 	public boolean isReplicated()

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java Sat Nov 20 14:43:30 2010
@@ -437,10 +437,10 @@ public abstract class WebApplication ext
 		{
 			resourceWatcher.destroy();
 		}
-		super.internalDestroy();
 		bufferedResponses.clear();
-		getSessionStore().destroy();
 		FileCleaner.destroy();
+		super.internalDestroy();
+
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Sat Nov 20 14:43:30 2010
@@ -434,8 +434,16 @@ public class WicketFilter implements Fil
 	{
 		if (application != null)
 		{
-			application.internalDestroy();
-			application = null;
+			try
+			{
+				ThreadContext.setApplication(application);
+				application.internalDestroy();
+			}
+			finally
+			{
+				ThreadContext.detach();
+				application = null;
+			}
 		}
 	}