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 <[email protected]>
Authored: Thu Aug 28 14:17:52 2014 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
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);

Reply via email to