WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache Move the logic for updating PageValue's access time in its own #touch() method
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2380d65b Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2380d65b Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2380d65b Branch: refs/heads/master Commit: 2380d65b813143073dafdc57eb66270f087966af Parents: 4ae0fb1 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Tue Mar 11 14:52:11 2014 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Tue Mar 11 14:52:11 2014 +0200 ---------------------------------------------------------------------- .../wicket/pageStore/PerSessionPageStore.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/2380d65b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java index eaff550..632cea9 100644 --- a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java +++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java @@ -104,7 +104,15 @@ public class PerSessionPageStore extends AbstractCachingPageStore<IManageablePag private PageValue(int pageId) { this.pageId = pageId; - this.accessTime = System.nanoTime(); + touch(); + } + + /** + * Updates the access time with the current time + */ + private void touch() + { + accessTime = System.nanoTime(); } @Override @@ -239,15 +247,12 @@ public class PerSessionPageStore extends AbstractCachingPageStore<IManageablePag if (pages != null) { PageValue sample = new PageValue(pageId); - Iterator<Map.Entry<PageValue,IManageablePage>> iterator = pages.entrySet().iterator(); - while (iterator.hasNext()) + for (Map.Entry<PageValue, IManageablePage> entry : pages.entrySet()) { - Map.Entry<PageValue, IManageablePage> entry = iterator.next(); - if (sample.equals(entry.getKey())) { // touch the entry - entry.getKey().accessTime = System.nanoTime(); + entry.getKey().touch(); result = entry.getValue(); break; }