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()