You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by re...@apache.org on 2023/06/05 08:04:24 UTC

[wicket] branch improvement/ernestosemedt/WICKET-7059 created (now 22bc9fbfd6)

This is an automated email from the ASF dual-hosted git repository.

reiern70 pushed a change to branch improvement/ernestosemedt/WICKET-7059
in repository https://gitbox.apache.org/repos/asf/wicket.git


      at 22bc9fbfd6 [WICKET-7059] make easier to skip some page serialization

This branch includes the following new commits:

     new 22bc9fbfd6 [WICKET-7059] make easier to skip some page serialization

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[wicket] 01/01: [WICKET-7059] make easier to skip some page serialization

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reiern70 pushed a commit to branch improvement/ernestosemedt/WICKET-7059
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 22bc9fbfd63a65f9714e0ffa4329adf42aaaef28
Author: reiern70 <re...@gmail.com>
AuthorDate: Mon Jun 5 11:03:17 2023 +0300

    [WICKET-7059] make easier to skip some page serialization
---
 .../org/apache/wicket/pageStore/RequestPageStore.java | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
index c8034f5f4a..d3a4244531 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
@@ -21,6 +21,7 @@ import java.util.LinkedList;
 
 import org.apache.wicket.MetaDataKey;
 import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -107,9 +108,10 @@ public class RequestPageStore extends DelegatingPageStore
 	public void detach(IPageContext context)
 	{
 		RequestData requestData = getRequestData(context);
+		IRequestCycle requestCycle = RequestCycle.get();
 		for (IManageablePage page : requestData.pages())
 		{
-			if (isPageStateless(page) == false)
+			if (isPageStateless(page) == false && shouldSerializePage(requestCycle, page))
 			{
 				getDelegate().addPage(context, page);
 			}
@@ -119,6 +121,21 @@ public class RequestPageStore extends DelegatingPageStore
 		getDelegate().detach(context);
 	}
 
+	/**
+	 * Give the opportunity to skip some serializations. E.g. we have some AJAX behavior that is sending some
+	 * info from client to page but page structure didn't change at all and nothing is repainted via AJAX.
+	 * But this will trigger a serialization. Returning false here would prevent that request from doing a
+	 * page serialization. For heavy pages this can really make a difference.
+	 *
+	 * @param requestCycle The request
+	 * @param page         The {@link IManageablePage}
+	 * @return <code>true</code> if page should be serialized for this request. The default is true.
+	 */
+	protected boolean shouldSerializePage(IRequestCycle requestCycle, IManageablePage page)
+	{
+		return true;
+	}
+
 	private boolean isPageStateless(final IManageablePage page) {
 		boolean isPageStateless;
 		try