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 2015/07/07 21:51:04 UTC
[2/2] wicket git commit: WICKET-5933 Avoid serialization of untouched
page after ajax request
WICKET-5933 Avoid serialization of untouched page after ajax request
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/37c5904e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/37c5904e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/37c5904e
Branch: refs/heads/master
Commit: 37c5904e9693b56485237a455d1a6f0c383ab4e3
Parents: e892b88
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 7 22:49:55 2015 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 7 22:49:55 2015 +0300
----------------------------------------------------------------------
.../org/apache/wicket/mock/MockPageManager.java | 6 +++++
.../apache/wicket/page/AbstractPageManager.java | 6 +++++
.../org/apache/wicket/page/IPageManager.java | 13 +++++++++-
.../wicket/page/PageManagerDecorator.java | 6 +++++
.../org/apache/wicket/page/RequestAdapter.java | 25 ++++++++++++++++++--
5 files changed, 53 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/37c5904e/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 797d48f..8c84198 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
@@ -91,6 +91,12 @@ public class MockPageManager implements IPageManager
}
}
+ @Override
+ public void untouchPage(IManageablePage page)
+ {
+ pages.remove(page.getPageId());
+ }
+
/**
* @see org.apache.wicket.page.IPageManager#getContext()
*/
http://git-wip-us.apache.org/repos/asf/wicket/blob/37c5904e/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 fc1132b..39b6122 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
@@ -98,4 +98,10 @@ public abstract class AbstractPageManager implements IPageManager
{
getRequestAdapter().touch(page);
}
+
+ @Override
+ public void untouchPage(IManageablePage page)
+ {
+ getRequestAdapter().touch(page);
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/37c5904e/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 8b4bb23..fad5d91 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
@@ -50,7 +50,18 @@ public interface IPageManager
* @throws CouldNotLockPageException if the page is already locked by another thread
* and the lock cannot be acquired for some timeout
*/
- void touchPage(IManageablePage page) throws CouldNotLockPageException;
+ void touchPage(IManageablePage page);
+
+ /**
+ * Marks page as non-changed.
+ * Could be used in Ajax requests to avoid storing the page if no changes have happened.
+ *
+ * @param page
+ * the page that should <strong>not</strong> be stored in the page stores at the end of the request.
+ * @throws CouldNotLockPageException if the page is already locked by another thread
+ * and the lock cannot be acquired for some timeout
+ */
+ void untouchPage(IManageablePage page);
/**
* Returns whether this manager supports versioning. Managers that support versioning must store
http://git-wip-us.apache.org/repos/asf/wicket/blob/37c5904e/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 b3ccb2c..8c21acf 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
@@ -57,6 +57,12 @@ public class PageManagerDecorator implements IPageManager
}
@Override
+ public void untouchPage(IManageablePage page)
+ {
+ delegate.untouchPage(page);
+ }
+
+ @Override
public boolean supportsVersioning()
{
return delegate.supportsVersioning();
http://git-wip-us.apache.org/repos/asf/wicket/blob/37c5904e/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 01f1392..837530c 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
@@ -18,6 +18,7 @@ package org.apache.wicket.page;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.slf4j.Logger;
@@ -128,8 +129,10 @@ public abstract class RequestAdapter
}
/**
- *
- * @param page
+ * Touches a page, so it will be stored in the page stores
+ * at the end of the request cycle
+ *
+ * @param page The page to mark as dirty
*/
protected void touch(final IManageablePage page)
{
@@ -140,6 +143,24 @@ public abstract class RequestAdapter
}
/**
+ * @param page The page to unmark as dirty, so it won't be stored
+ * at the end of the request cycle
+ */
+ protected void untouch(final IManageablePage page)
+ {
+ Iterator<IManageablePage> iterator = touchedPages.iterator();
+ while (iterator.hasNext())
+ {
+ IManageablePage touchedPage = iterator.next();
+ if (touchedPage.getPageId() == page.getPageId())
+ {
+ iterator.remove();
+ break;
+ }
+ }
+ }
+
+ /**
*
*/
protected void commitRequest()