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 2017/03/20 20:59:20 UTC

[37/48] wicket git commit: WICKET-6336 Add #removePage(IManageablePage) to IPageManager

WICKET-6336 Add #removePage(IManageablePage) to IPageManager


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

Branch: refs/heads/master
Commit: c94f0b2edfa632636d7fd0788eff27703dc4520d
Parents: f7bfda2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Mar 13 21:58:28 2017 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Mar 20 21:42:32 2017 +0100

----------------------------------------------------------------------
 .../org/apache/wicket/mock/MockPageManager.java | 12 +++++++----
 .../apache/wicket/page/AbstractPageManager.java | 18 ++++++++++++++--
 .../org/apache/wicket/page/IPageManager.java    |  9 ++++++++
 .../wicket/page/PageAccessSynchronizer.java     | 16 ++++++++++++++
 .../wicket/page/PageManagerDecorator.java       |  5 +++++
 .../apache/wicket/page/PageStoreManager.java    | 22 ++++++++++++++++++++
 .../org/apache/wicket/page/RequestAdapter.java  |  9 ++++++++
 7 files changed, 85 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/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 8c84198..b27dc7e 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
@@ -30,7 +30,7 @@ import org.apache.wicket.page.IPageManagerContext;
  */
 public class MockPageManager implements IPageManager
 {
-	private final Map<Integer, IManageablePage> pages = new HashMap<Integer, IManageablePage>();
+	private final Map<Integer, IManageablePage> pages = new HashMap<>();
 
 	/**
 	 * Construct.
@@ -58,6 +58,13 @@ public class MockPageManager implements IPageManager
 	}
 
 	@Override
+	public void removePage(final IManageablePage page) {
+		if (page != null) {
+			pages.remove(page.getPageId());
+		}
+	}
+
+	@Override
 	public void newSessionCreated()
 	{
 		pages.clear();
@@ -97,9 +104,6 @@ public class MockPageManager implements IPageManager
 		pages.remove(page.getPageId());
 	}
 
-	/**
-	 * @see org.apache.wicket.page.IPageManager#getContext()
-	 */
 	@Override
 	public IPageManagerContext getContext()
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
index 1311287..03b26aa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
@@ -88,6 +88,14 @@ public abstract class AbstractPageManager implements IPageManager
 	}
 
 	@Override
+	public void removePage(final IManageablePage page) {
+		if (page != null)
+		{
+			getRequestAdapter().removePage(page);
+		}
+	}
+
+	@Override
 	public void newSessionCreated()
 	{
 		getRequestAdapter().newSessionCreated();
@@ -96,12 +104,18 @@ public abstract class AbstractPageManager implements IPageManager
 	@Override
 	public void touchPage(IManageablePage page)
 	{
-		getRequestAdapter().touch(page);
+		if (page != null)
+		{
+			getRequestAdapter().touch(page);
+		}
 	}
 
 	@Override
 	public void untouchPage(IManageablePage page)
 	{
-		getRequestAdapter().untouch(page);
+		if (page != null)
+		{
+			getRequestAdapter().untouch(page);
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/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 fad5d91..a19a0e3 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
@@ -42,6 +42,15 @@ public interface IPageManager
 	IManageablePage getPage(int id) throws CouldNotLockPageException;
 
 	/**
+	 * Removes a page from the {@link org.apache.wicket.pageStore.IPageStore} and
+	 * {@link org.apache.wicket.pageStore.IDataStore}. Any attempt to access it later
+	 * will lead to {@link org.apache.wicket.protocol.http.PageExpiredException}
+	 *
+	 * @param page The page instance to remove from the stores
+	 */
+	void removePage(IManageablePage page);
+
+	/**
 	 * Marks page as changed.
 	 * <p><strong>Note:</strong>Only stateful pages are stored.</p>
 	 * 

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/wicket-core/src/main/java/org/apache/wicket/page/PageAccessSynchronizer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageAccessSynchronizer.java b/wicket-core/src/main/java/org/apache/wicket/page/PageAccessSynchronizer.java
index 86fbb8b..d44b86a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PageAccessSynchronizer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PageAccessSynchronizer.java
@@ -257,6 +257,22 @@ public class PageAccessSynchronizer implements Serializable
 			}
 
 			@Override
+			public void removePage(final IManageablePage page) {
+				if (page != null)
+				{
+					try
+					{
+						super.removePage(page);
+						untouchPage(page);
+					}
+					finally
+					{
+						unlockPage(page.getPageId());
+					}
+				}
+			}
+
+			@Override
 			public void touchPage(IManageablePage page)
 			{
 				lockPage(page.getPageId());

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/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 8c21acf..8f719f8 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
@@ -51,6 +51,11 @@ public class PageManagerDecorator implements IPageManager
 	}
 
 	@Override
+	public void removePage(final IManageablePage page) {
+		delegate.removePage(page);
+	}
+
+	@Override
 	public void touchPage(IManageablePage page)
 	{
 		delegate.touchPage(page);

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/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 88bffa4..40f294c 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
@@ -156,6 +156,19 @@ public class PageStoreManager extends AbstractPageManager
 			}
 		}
 
+		private void removePage(IManageablePage page)
+		{
+			if (page != null)
+			{
+				sessionCache.remove(page);
+				final IPageStore pageStore = getPageStore();
+				if (pageStore != null)
+				{
+					pageStore.removePage(sessionId, page.getPageId());
+				}
+			}
+		}
+
 		/**
 		 * If the pages are stored in temporary state (after deserialization) this method convert
 		 * them to list of "real" pages
@@ -372,6 +385,15 @@ public class PageStoreManager extends AbstractPageManager
 			}
 		}
 
+		@Override
+		protected void removePage(final IManageablePage page) {
+			final SessionEntry sessionEntry = getSessionEntry(false);
+			if (sessionEntry != null)
+			{
+				sessionEntry.removePage(page);
+			}
+		}
+
 		/**
 		 * 
 		 * @param create

http://git-wip-us.apache.org/repos/asf/wicket/blob/c94f0b2e/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..7b8b7b9 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
@@ -58,6 +58,15 @@ public abstract class RequestAdapter
 	protected abstract IManageablePage getPage(int id);
 
 	/**
+	 * Removes a page from the cache and the stores ({@link org.apache.wicket.pageStore.IPageStore} and
+	 * {@link org.apache.wicket.pageStore.IDataStore}). Any attempt to access it later
+	 * will lead to {@link org.apache.wicket.protocol.http.PageExpiredException}
+	 *
+	 * @param page The page instance to remove
+	 */
+	protected abstract void removePage(final IManageablePage page);
+
+	/**
 	 * Store the list of stateful pages.
 	 * 
 	 * @param touchedPages