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

Reply via email to