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