WICKET-6563 keep touched pages in list

since the id might change during request

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

Branch: refs/heads/WICKET-6563
Commit: 968f26112a18bf031abf851c09848dce92a5ed93
Parents: 14e2435
Author: Sven Meier <svenme...@apache.org>
Authored: Thu Jul 12 19:26:12 2018 +0200
Committer: Sven Meier <svenme...@apache.org>
Committed: Thu Jul 12 19:26:12 2018 +0200

----------------------------------------------------------------------
 .../wicket/pageStore/RequestPageStore.java      | 26 +++++++++-----------
 1 file changed, 12 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/968f2611/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
----------------------------------------------------------------------
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 2420768..917ce87 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
@@ -16,8 +16,7 @@
  */
 package org.apache.wicket.pageStore;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.LinkedList;
 
 import org.apache.wicket.MetaDataKey;
 import org.apache.wicket.page.IManageablePage;
@@ -122,33 +121,32 @@ public class RequestPageStore extends DelegatingPageStore
         */
        static class RequestData
        {
-               private Map<Integer, IManageablePage> pages = new 
LinkedHashMap<>();
+               private LinkedList<IManageablePage> pages = new LinkedList<>();
                
                public void add(IManageablePage page)
                {
-                       pages.remove(page.getPageId());
-                       
-                       pages.put(page.getPageId(), page);
+                       // add as last
+                       pages.remove(page);
+                       pages.addLast(page);
                }
 
                public Iterable<IManageablePage> pages()
                {
-                       return pages.values();
+                       return pages;
                }
 
                public IManageablePage get(int id) {
-                       IManageablePage page = pages.get(id);
-                       
-                       if (page != null) {
-                               pages.put(id, page);
+                       for (IManageablePage page : pages) {
+                               if (page.getPageId() == id) {
+                                       return page;
+                               }
                        }
-                       
-                       return page;
+                       return null;
                }
 
                public void remove(IManageablePage page)
                {
-                       pages.remove(page.getPageId());
+                       pages.remove(page);
                }
 
                public void removeAll()

Reply via email to