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 22:02:24 UTC

[1/2] wicket git commit: Revert "WICKET-5933 Avoid serialization of untouched page after ajax request"

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 44ba0655d -> 9d3414dec


Revert "WICKET-5933 Avoid serialization of untouched page after ajax request"

This reverts commit e68e46a56d04f13c12f70f69db70159dffd8a118.


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

Branch: refs/heads/wicket-6.x
Commit: 64d5766421db5f9e423b863b62ee322ddf395cde
Parents: 44ba065
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 7 23:01:02 2015 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 7 23:01:02 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/wicket/Page.java     |  7 ++-----
 .../org/apache/wicket/markup/html/WebPage.java    | 18 +++++++-----------
 .../apache/wicket/page/AbstractPageManager.java   |  7 ++++++-
 3 files changed, 15 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/64d57664/wicket-core/src/main/java/org/apache/wicket/Page.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 8963278..6557684 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -282,7 +282,7 @@ public abstract class Page extends MarkupContainer implements IRedirectListener,
 			isInitialization))
 		{
 			setFlag(FLAG_IS_DIRTY, true);
-			setNextAvailableId(isInitialization);
+			setNextAvailableId();
 
 			if (isInitialization == false)
 			{
@@ -729,12 +729,9 @@ public abstract class Page extends MarkupContainer implements IRedirectListener,
 	}
 
 	/**
-	 * Increments the version id of the page
 	 * 
-	 * @param isInitialization
-	 * 			tells if the page has been newly instantiated
 	 */
-	protected void setNextAvailableId(boolean isInitialization)
+	private void setNextAvailableId()
 	{
 		setNumericId(getSession().nextPageId());
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/64d57664/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
index 6456249..5519920 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
@@ -18,7 +18,6 @@ package org.apache.wicket.markup.html;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
-import org.apache.wicket.core.request.handler.IPageRequestHandler;
 import org.apache.wicket.markup.MarkupType;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
@@ -31,6 +30,7 @@ import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.core.request.handler.IPageRequestHandler;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -324,23 +324,19 @@ public class WebPage extends Page
 	{
 		return new BookmarkablePageLink<Void>(id, getApplication().getHomePage());
 	}
-	
+
 	/**
-	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR OVERRIDE.
-	 * 
-	 * Don't increment page version during AJAX requests. 
-	 * Do it only if page is new.
+	 * Prevents page from get dirty inside an AJAX request.
 	 */
 	@Override
-	protected final void setNextAvailableId(boolean isInitialization)
+	public final void dirty(boolean isInitialization)
 	{
 		Request request = getRequest();
-		if (request instanceof WebRequest && ((WebRequest)request).isAjax()
-			&& !isInitialization)
+		if (isInitialization == false && request instanceof WebRequest &&
+			((WebRequest)request).isAjax())
 		{
 			return;
 		}
-		
-		super.setNextAvailableId(isInitialization);
+		super.dirty(isInitialization);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/64d57664/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 3eda06c..da259e4 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
@@ -104,7 +104,12 @@ public abstract class AbstractPageManager implements IPageManager
 	@Override
 	public IManageablePage getPage(int id)
 	{
-		return getRequestAdapter().getPage(id);
+		IManageablePage page = getRequestAdapter().getPage(id);
+		if (page != null)
+		{
+			getRequestAdapter().touch(page);
+		}
+		return page;
 	}
 
 	/**


[2/2] wicket git commit: WICKET-5933 Avoid serialization of untouched page after ajax request

Posted by mg...@apache.org.
WICKET-5933 Avoid serialization of untouched page after ajax request

(cherry picked from commit 37c5904e9693b56485237a455d1a6f0c383ab4e3)


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

Branch: refs/heads/wicket-6.x
Commit: 9d3414dec9fca4eb6c15f4893bf33eb05c923a5a
Parents: 64d5766
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 23:02:00 2015 +0300

----------------------------------------------------------------------
 .../org/apache/wicket/mock/MockPageManager.java |  6 +++++
 .../apache/wicket/page/AbstractPageManager.java |  6 +++++
 .../org/apache/wicket/page/IPageManager.java    | 11 +++++++++
 .../wicket/page/PageManagerDecorator.java       |  6 +++++
 .../org/apache/wicket/page/RequestAdapter.java  | 25 ++++++++++++++++++--
 5 files changed, 52 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/9d3414de/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 19804fc..f2ee59d 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/9d3414de/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 da259e4..d39de39 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
@@ -129,4 +129,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/9d3414de/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 b7817f9..7272abb 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
@@ -53,6 +53,17 @@ public interface IPageManager
 	public void touchPage(IManageablePage page) throws CouldNotLockPageException;
 
 	/**
+	 * 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
 	 * page snapshots.
 	 * 

http://git-wip-us.apache.org/repos/asf/wicket/blob/9d3414de/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 63bd379..49e36aa 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
@@ -61,6 +61,12 @@ public class PageManagerDecorator implements IPageManager
 
 	/** {@inheritDoc} */
 	@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/9d3414de/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 23b1d30..b7c3136 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()