You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2018/07/04 21:42:32 UTC

wicket git commit: WICKET-6564 clear request and session pages

Repository: wicket
Updated Branches:
  refs/heads/wicket-7.x 3a1602d30 -> 7665dc563


WICKET-6564 clear request and session pages


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

Branch: refs/heads/wicket-7.x
Commit: 7665dc563de81b36a1e887d779897068b8cd4abf
Parents: 3a1602d
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jul 4 22:19:31 2018 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Jul 4 23:34:14 2018 +0200

----------------------------------------------------------------------
 .../apache/wicket/page/PageStoreManager.java    | 24 ++++--
 .../org/apache/wicket/page/RequestAdapter.java  |  4 +
 .../wicket/page/PageStoreManagerTest.java       | 80 ++++++++++++++++++++
 3 files changed, 100 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7665dc56/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 ba0deb4..44259e4 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
@@ -337,13 +337,7 @@ public class PageStoreManager extends AbstractPageManager
 				return;
 			}
 
-			// WICKET-5164 use the original sessionId
-			IPageStore store = getPageStore();
-			// store might be null if destroyed already
-			if (store != null)
-			{
-				store.unbind(sessionId);
-			}
+			clear();
 		}
 
 		@Override
@@ -352,6 +346,18 @@ public class PageStoreManager extends AbstractPageManager
 			// see https://issues.apache.org/jira/browse/WICKET-5390
 			return false;
 		}
+
+		public void clear() {
+			sessionCache.clear();
+			
+			// WICKET-5164 use the original sessionId
+			IPageStore store = getPageStore();
+			// store might be null if destroyed already
+			if (store != null)
+			{
+				store.unbind(sessionId);
+			}
+		}
 	}
 
 	private String getAttributeName()
@@ -467,11 +473,13 @@ public class PageStoreManager extends AbstractPageManager
 	public void clear()
 	{
 		RequestAdapter requestAdapter = getRequestAdapter();
+		requestAdapter.clear();
+		
 		String sessionEntryAttributeName = getAttributeName();
 		Serializable sessionEntry = requestAdapter.getSessionAttribute(sessionEntryAttributeName);
 		if (sessionEntry instanceof SessionEntry)
 		{
-			((SessionEntry)sessionEntry).valueUnbound(null);
+			((SessionEntry)sessionEntry).clear();
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/7665dc56/wicket-core/src/main/java/org/apache/wicket/page/RequestAdapter.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/RequestAdapter.java b/wicket-core/src/main/java/org/apache/wicket/page/RequestAdapter.java
index 837530c..423c7cf 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/RequestAdapter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/RequestAdapter.java
@@ -194,4 +194,8 @@ public abstract class RequestAdapter
 			}
 		}
 	}
+
+	public void clear() {
+		touchedPages.clear();
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/7665dc56/wicket-core/src/test/java/org/apache/wicket/page/PageStoreManagerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/page/PageStoreManagerTest.java b/wicket-core/src/test/java/org/apache/wicket/page/PageStoreManagerTest.java
new file mode 100644
index 0000000..ee25c7e
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/page/PageStoreManagerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.page;
+
+import static org.junit.Assert.assertNull;
+
+import java.io.Serializable;
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.pageStore.memory.DummyPageManagerContext;
+import org.junit.Test;
+
+public class PageStoreManagerTest {
+
+	@Test
+	public void test() {
+
+		DummyPageManagerContext context = new DummyPageManagerContext();
+		
+		PageStoreManager manager = new PageStoreManager("test", new NoopPageStore(), context);
+
+		manager.touchPage(new MockPage(1));
+		manager.clear();
+		
+		assertNull("no page after clear", manager.getPage(1));
+	}
+
+	private final class NoopPageStore implements IPageStore {
+		@Override
+		public void unbind(String sessionId) {
+		}
+
+		@Override
+		public void storePage(String sessionId, IManageablePage page) {
+		}
+
+		@Override
+		public Object restoreAfterSerialization(Serializable serializable) {
+			return null;
+		}
+
+		@Override
+		public void removePage(String sessionId, int pageId) {
+		}
+
+		@Override
+		public Serializable prepareForSerialization(String sessionId, Serializable page) {
+			return null;
+		}
+
+		@Override
+		public IManageablePage getPage(String sessionId, int pageId) {
+			return null;
+		}
+
+		@Override
+		public void destroy() {
+		}
+
+		@Override
+		public IManageablePage convertToPage(Object page) {
+			return null;
+		}
+	}
+}
\ No newline at end of file