Repository: wicket Updated Branches: refs/heads/master 87c38f29e -> 127ec84f3
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/127ec84f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/127ec84f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/127ec84f Branch: refs/heads/master Commit: 127ec84f300166dc2315eb8d36f3c275850d24a2 Parents: 87c38f2 Author: Andrea Del Bene <â[email protected]â> Authored: Fri Jun 26 12:31:07 2015 +0200 Committer: Andrea Del Bene <â[email protected]â> Committed: Fri Jun 26 13:08:11 2015 +0200 ---------------------------------------------------------------------- .../src/main/java/org/apache/wicket/Page.java | 7 +++++-- .../org/apache/wicket/markup/html/WebPage.java | 18 +++++++++++------- .../apache/wicket/page/AbstractPageManager.java | 7 +------ .../pageStore/AbstractCachingPageStore.java | 5 ++++- 4 files changed, 21 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/127ec84f/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 0935942..bc4538a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Page.java +++ b/wicket-core/src/main/java/org/apache/wicket/Page.java @@ -284,7 +284,7 @@ public abstract class Page extends MarkupContainer isInitialization)) { setFlag(FLAG_IS_DIRTY, true); - setNextAvailableId(); + setNextAvailableId(isInitialization); if (isInitialization == false) { @@ -722,9 +722,12 @@ public abstract class Page extends MarkupContainer } /** + * Increments the version id of the page * + * @param isInitialization + * tells if the page has been newly instantiated */ - private void setNextAvailableId() + protected void setNextAvailableId(boolean isInitialization) { setNumericId(getSession().nextPageId()); } http://git-wip-us.apache.org/repos/asf/wicket/blob/127ec84f/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 05feebb..cbd418b 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,6 +18,7 @@ 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; @@ -30,7 +31,6 @@ 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,19 +324,23 @@ public class WebPage extends Page { return new BookmarkablePageLink<>(id, getApplication().getHomePage()); } - + /** - * Prevents page from get dirty inside an AJAX request. + * 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. */ @Override - public final void dirty(boolean isInitialization) + protected final void setNextAvailableId(boolean isInitialization) { Request request = getRequest(); - if (isInitialization == false && request instanceof WebRequest && - ((WebRequest)request).isAjax()) + if (request instanceof WebRequest && ((WebRequest)request).isAjax() + && !isInitialization) { return; } - super.dirty(isInitialization); + + super.setNextAvailableId(isInitialization); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/127ec84f/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..30bfd08 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 @@ -79,12 +79,7 @@ public abstract class AbstractPageManager implements IPageManager @Override public IManageablePage getPage(int id) { - IManageablePage page = getRequestAdapter().getPage(id); - if (page != null) - { - touchPage(page); - } - return page; + return getRequestAdapter().getPage(id); } @Override http://git-wip-us.apache.org/repos/asf/wicket/blob/127ec84f/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java index 86b8d82..18e8d00 100644 --- a/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java +++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java @@ -52,6 +52,7 @@ public abstract class AbstractCachingPageStore<P> extends AbstractPageStore this.pagesCache = Args.notNull(pagesCache, "pagesCache"); } + @SuppressWarnings("unchecked") @Override public IManageablePage getPage(final String sessionId, final int pageId) { @@ -64,7 +65,9 @@ public abstract class AbstractCachingPageStore<P> extends AbstractPageStore byte[] data = getPageData(sessionId, pageId); if (data != null) { - return deserializePage(data); + IManageablePage page = deserializePage(data); + pagesCache.storePage(sessionId, pageId, (P) page); + return page; } return null; }
