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;
        }

Reply via email to