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 2014/08/28 13:18:44 UTC

git commit: WICKET-5688 Restore the functionality an IPageManager to be able to clean all data/pages for the current session

Repository: wicket
Updated Branches:
  refs/heads/5688-IPageManager-clear [created] b8382271e


WICKET-5688 Restore the functionality an IPageManager to be able to clean all data/pages for the current session


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b8382271
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b8382271
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b8382271

Branch: refs/heads/5688-IPageManager-clear
Commit: b8382271ed8bcf57157a4b10c02f6a4948e4a35a
Parents: 35d7b62
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Aug 28 14:17:52 2014 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Aug 28 14:17:52 2014 +0300

----------------------------------------------------------------------
 .../java/org/apache/wicket/Application.java     |  2 --
 .../main/java/org/apache/wicket/Session.java    |  2 +-
 .../org/apache/wicket/mock/MockPageManager.java |  2 +-
 .../org/apache/wicket/page/IPageManager.java    |  7 ++--
 .../wicket/page/PageManagerDecorator.java       |  4 +--
 .../apache/wicket/page/PageStoreManager.java    | 34 ++++++++++++--------
 .../ListenerInterfaceRequestHandlerTest.java    |  2 +-
 7 files changed, 27 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/Application.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java b/wicket-core/src/main/java/org/apache/wicket/Application.java
index 4c61bb5..999316d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
@@ -466,8 +466,6 @@ public abstract class Application implements UnboundListener, IEventSink
 	@Override
 	public void sessionUnbound(final String sessionId)
 	{
-		internalGetPageManager().sessionExpired(sessionId);
-
 		getSessionListeners().onUnbound(sessionId);
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/Session.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Session.java b/wicket-core/src/main/java/org/apache/wicket/Session.java
index 4b55b73..5a768f3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Session.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Session.java
@@ -287,7 +287,7 @@ public abstract class Session implements IClusterable, IEventSink
 	{
 		if (isTemporary() == false)
 		{
-			getPageManager().sessionExpired(getId());
+			getPageManager().clear();
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java b/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
index 19804fc..797d48f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
@@ -64,7 +64,7 @@ public class MockPageManager implements IPageManager
 	}
 
 	@Override
-	public void sessionExpired(String sessionId)
+	public void clear()
 	{
 		pages.clear();
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
index b7817f9..dc94bec 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
@@ -73,12 +73,9 @@ public interface IPageManager
 	public void newSessionCreated();
 
 	/**
-	 * Invoked when the session has been expired.
-	 * 
-	 * @param sessionId
-	 *      the id of the expired session
+	 * Clears all data for the current session.
 	 */
-	public void sessionExpired(String sessionId);
+	public void clear();
 
 	/**
 	 * Destroy the page manager.

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/page/PageManagerDecorator.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageManagerDecorator.java b/wicket-core/src/main/java/org/apache/wicket/page/PageManagerDecorator.java
index af6d3fb..b3ccb2c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PageManagerDecorator.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PageManagerDecorator.java
@@ -75,9 +75,9 @@ public class PageManagerDecorator implements IPageManager
 	}
 
 	@Override
-	public void sessionExpired(String sessionId)
+	public void clear()
 	{
-		delegate.sessionExpired(sessionId);
+		delegate.clear();
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java b/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
index 0e8425f..9585669 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
@@ -39,7 +39,9 @@ public class PageStoreManager extends AbstractPageManager
 	 * A cache that holds all registered page managers. <br/>
 	 * applicationName -> page manager
 	 */
-	private static final ConcurrentMap<String, PageStoreManager> managers = new ConcurrentHashMap<String, PageStoreManager>();
+	private static final ConcurrentMap<String, PageStoreManager> MANAGERS = new ConcurrentHashMap<>();
+
+	private static final String ATTRIBUTE_NAME = "wicket:persistentPageManagerData";
 
 	private final IPageStore pageStore;
 
@@ -60,12 +62,12 @@ public class PageStoreManager extends AbstractPageManager
 		this.applicationName = applicationName;
 		this.pageStore = pageStore;
 
-		if (managers.containsKey(applicationName))
+		if (MANAGERS.containsKey(applicationName))
 		{
 			throw new IllegalStateException("Manager for application with key '" + applicationName
 				+ "' already exists.");
 		}
-		managers.put(applicationName, this);
+		MANAGERS.put(applicationName, this);
 	}
 
 	/**
@@ -109,7 +111,7 @@ public class PageStoreManager extends AbstractPageManager
 		 */
 		private IPageStore getPageStore()
 		{
-			PageStoreManager manager = managers.get(applicationName);
+			PageStoreManager manager = MANAGERS.get(applicationName);
 
 			if (manager == null)
 			{
@@ -316,6 +318,11 @@ public class PageStoreManager extends AbstractPageManager
 		}
 	}
 
+	private String getAttributeName()
+	{
+		return ATTRIBUTE_NAME + " - " + applicationName;
+	}
+
 	/**
 	 * {@link RequestAdapter} for {@link PageStoreManager}
 	 * 
@@ -323,13 +330,6 @@ public class PageStoreManager extends AbstractPageManager
 	 */
 	protected class PersistentRequestAdapter extends RequestAdapter
 	{
-		private static final String ATTRIBUTE_NAME = "wicket:persistentPageManagerData";
-
-		private String getAttributeName()
-		{
-			return ATTRIBUTE_NAME + " - " + applicationName;
-		}
-
 		/**
 		 * Construct.
 		 * 
@@ -419,15 +419,21 @@ public class PageStoreManager extends AbstractPageManager
 	}
 
 	@Override
-	public void sessionExpired(String sessionId)
+	public void clear()
 	{
-		// nothing to do, the SessionEntry will listen for it to become unbound by itself
+		RequestAdapter requestAdapter = getRequestAdapter();
+		String sessionEntryAttributeName = getAttributeName();
+		Serializable sessionEntry = requestAdapter.getSessionAttribute(sessionEntryAttributeName);
+		if (sessionEntry instanceof SessionEntry)
+		{
+			((SessionEntry)sessionEntry).valueUnbound(null);
+		}
 	}
 
 	@Override
 	public void destroy()
 	{
-		managers.remove(applicationName);
+		MANAGERS.remove(applicationName);
 		pageStore.destroy();
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8382271/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
index cc03296..5e9e727 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
@@ -85,7 +85,7 @@ public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
 
 		Url urlToAjaxLink = tester.urlFor(page.link);
 		Session session = tester.getSession();
-		session.getPageManager().sessionExpired(session.getId());
+		session.clear();
 
 		// fire a request to the ajax link on the expired page
 		executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);