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