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()