This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch WICKET-6563
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 8dcf2e34927e0c164235f5bea79c7026d22192dc
Author: Sven Meier <[email protected]>
AuthorDate: Thu Dec 20 14:04:01 2018 +0100

    WICKET-6563 review comments fixed
---
 .../java/org/apache/wicket/page/IPageManager.java  | 16 +++++-
 .../wicket/pageStore/AsynchronousPageStore.java    |  8 +--
 .../apache/wicket/pageStore/CryptingPageStore.java | 11 +++-
 .../wicket/pageStore/DefaultPageContext.java       | 14 ++---
 .../org/apache/wicket/pageStore/DiskPageStore.java | 64 ++++++++--------------
 .../org/apache/wicket/pageStore/FilePageStore.java |  9 +--
 .../apache/wicket/pageStore/InMemoryPageStore.java |  3 +-
 .../wicket/pageStore/InSessionPageStore.java       | 11 ++--
 .../apache/wicket/pageStore/RequestPageStore.java  | 10 ++--
 .../wicket/pageStore/SerializingPageStore.java     |  7 ++-
 10 files changed, 80 insertions(+), 73 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java 
b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
index 50e0f58..8f4cd0e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
@@ -57,7 +57,7 @@ public interface IPageManager
         *            page to add
         */
        void addPage(IManageablePage page);
-
+       
        /**
         * Remove all pages.
         */
@@ -79,4 +79,18 @@ public interface IPageManager
         * @return store or <code>null</code>
         */
        IPageStore getPageStore();
+
+       /**
+        * @deprecated will be removed in Wicket 10
+        */
+       default void touchPage(IManageablePage page) {
+               addPage(page);
+       }
+
+       /**
+        * @deprecated will be removed in Wicket 10
+        */
+       default void clear() {
+               removeAllPages();
+       }
 }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousPageStore.java
index e5bdca1..9eb0c95 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousPageStore.java
@@ -339,7 +339,7 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        log.debug("Returning the page of a non-stored entry 
with page id '{}'", pageId);
                        return entry.page;
                }
-               IManageablePage page = super.getPage(context, pageId);
+               IManageablePage page = getDelegate().getPage(context, pageId);
 
                log.debug("Returning the page of a stored entry with page id 
'{}'", pageId);
 
@@ -359,7 +359,7 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        }
                }
 
-               super.removePage(context, page);
+               getDelegate().removePage(context, page);
        }
 
        @Override
@@ -391,7 +391,7 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        log.warn("Delegated page store '{}' can not be 
asynchronous", getDelegate().getClass().getName());
                }
                
-               super.addPage(context, page);
+               getDelegate().addPage(context, page);
        }
 
        @Override
@@ -406,6 +406,6 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        }
                }
                
-               super.removeAllPages(context);
+               getDelegate().removeAllPages(context);
        }
 }
\ No newline at end of file
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/CryptingPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/CryptingPageStore.java
index c79ef98..01dae3b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/CryptingPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/CryptingPageStore.java
@@ -24,6 +24,7 @@ import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.pageStore.crypt.DefaultCrypter;
 import org.apache.wicket.pageStore.crypt.ICrypter;
 import org.apache.wicket.serialize.ISerializer;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * A store that encrypts all pages before delegating and vice versa.
@@ -68,6 +69,8 @@ public class CryptingPageStore extends DelegatingPageStore
        @Override
        public boolean canBeAsynchronous(IPageContext context)
        {
+               // session data must be added here *before* any asynchronous 
calls
+               // when session is no longer available
                getSessionData(context);
 
                return getDelegate().canBeAsynchronous(context);
@@ -93,7 +96,7 @@ public class CryptingPageStore extends DelegatingPageStore
        @Override
        public IManageablePage getPage(IPageContext context, int id)
        {
-               IManageablePage page = super.getPage(context, id);
+               IManageablePage page = getDelegate().getPage(context, id);
 
                if (page != null)
                {
@@ -127,16 +130,18 @@ public class CryptingPageStore extends DelegatingPageStore
 
                page = new SerializedPage(page.getPageId(), 
serializedPage.getPageType(), encrypted);
 
-               super.addPage(context, page);
+               getDelegate().addPage(context, page);
        }
 
        private static class SessionData implements Serializable
        {
 
-               private ICrypter cypter;
+               private final ICrypter cypter;
 
                public SessionData(ICrypter crypter)
                {
+                       Args.notNull(crypter, "crypter");
+                       
                        this.cypter= crypter;
                }
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageContext.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageContext.java
index 6b8dc71..c75892b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageContext.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageContext.java
@@ -30,11 +30,6 @@ import org.apache.wicket.request.cycle.RequestCycle;
  */
 public class DefaultPageContext implements IPageContext
 {
-       private Session session;
-
-       public DefaultPageContext() {
-               this.session = Session.get();
-       }
        
        /**
         * @see org.apache.wicket.pageStore.IPageContext#getSessionId()
@@ -42,6 +37,8 @@ public class DefaultPageContext implements IPageContext
        @Override
        public String getSessionId()
        {
+               Session session = Session.get();
+               
                session.bind();
                
                return session.getId();
@@ -51,12 +48,13 @@ public class DefaultPageContext implements IPageContext
        @Override
        public <T extends Serializable> T getSessionAttribute(String key)
        {
-               return (T)session.getAttribute(key);
+               return (T)Session.get().getAttribute(key);
        }
        
        @Override
        public <T extends Serializable> void setSessionAttribute(String key, T 
value)
        {
+               Session session = Session.get();
                session.bind();
                session.setAttribute(key, value);
        }
@@ -64,12 +62,14 @@ public class DefaultPageContext implements IPageContext
        @Override
        public <T extends Serializable> T getSessionData(MetaDataKey<T> key)
        {
-               return session.getMetaData(key);
+               return Session.get().getMetaData(key);
        }
 
        @Override
        public <T extends Serializable> T setSessionData(MetaDataKey<T> key, T 
value)
        {
+               Session session = Session.get();
+
                synchronized (session)
                {
                        T oldValue = session.getMetaData(key);
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DiskPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DiskPageStore.java
index b93b478..a8f5a0a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/DiskPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/DiskPageStore.java
@@ -51,6 +51,7 @@ import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.lang.Classes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -63,7 +64,7 @@ import org.slf4j.LoggerFactory;
  * However this does not help in case of alternating requests between multiple 
browser windows: In this case requests are processed for
  * different page ids and the oldests pages are constantly overwritten (this 
can easily happen with Ajax timers on one or more pages).
  * This leads to pages with identical id superfluously kept in the file, while 
older pages are prematurely expelled.
- * Any following request to these older pages will then fail {@link 
PageExpiredException}.   
+ * Any following request to these older pages will then fail with {@link 
PageExpiredException}.   
  */
 public class DiskPageStore implements IPersistentPageStore
 {
@@ -71,6 +72,9 @@ public class DiskPageStore implements IPersistentPageStore
 
        private static final String KEY = "wicket:DiskPageStore";
 
+       /**
+        * Name of the file where the page index is stored.
+        */
        private static final String INDEX_FILE_NAME = "DiskPageStoreIndex";
 
        /**
@@ -276,7 +280,7 @@ public class DiskPageStore implements IPersistentPageStore
                                                "DiskPageStore not configured 
for serialization");
                                }
                                data = serializer.serialize(page);
-                               type = page.getClass().getName();
+                               type = Classes.name(page.getClass());
                        }
 
                        diskData.savePage(page.getPageId(), type, data);
@@ -335,24 +339,16 @@ public class DiskPageStore implements IPersistentPageStore
                File index = new File(storeFolder, INDEX_FILE_NAME);
                if (index.exists() && index.length() > 0)
                {
-                       try
+                       try (InputStream stream = new FileInputStream(index))
                        {
-                               InputStream stream = new FileInputStream(index);
                                ObjectInputStream ois = new 
ObjectInputStream(stream);
-                               try
-                               {
-                                       diskDatas.clear();
 
-                                       for (DiskData diskData : 
(List<DiskData>)ois.readObject())
-                                       {
-                                               diskData.pageStore = this;
-                                               
diskDatas.put(diskData.sessionIdentifier, diskData);
-                                       }
-                               }
-                               finally
+                               diskDatas.clear();
+
+                               for (DiskData diskData : 
(List<DiskData>)ois.readObject())
                                {
-                                       stream.close();
-                                       ois.close();
+                                       diskData.pageStore = this;
+                                       
diskDatas.put(diskData.sessionIdentifier, diskData);
                                }
                        }
                        catch (Exception e)
@@ -363,9 +359,6 @@ public class DiskPageStore implements IPersistentPageStore
                Files.remove(index);
        }
 
-       /**
-        * 
-        */
        private void saveIndex()
        {
                File storeFolder = folders.getBase();
@@ -373,27 +366,19 @@ public class DiskPageStore implements IPersistentPageStore
                {
                        File index = new File(storeFolder, INDEX_FILE_NAME);
                        Files.remove(index);
-                       try
+                       try (OutputStream stream = new FileOutputStream(index))
                        {
-                               OutputStream stream = new 
FileOutputStream(index);
                                ObjectOutputStream oos = new 
ObjectOutputStream(stream);
-                               try
+                               
+                               List<DiskData> list = new 
ArrayList<>(diskDatas.size());
+                               for (DiskData diskData : diskDatas.values())
                                {
-                                       List<DiskData> list = new 
ArrayList<>(diskDatas.size());
-                                       for (DiskData diskData : 
diskDatas.values())
+                                       if (diskData.sessionIdentifier != null)
                                        {
-                                               if (diskData.sessionIdentifier 
!= null)
-                                               {
-                                                       list.add(diskData);
-                                               }
+                                               list.add(diskData);
                                        }
-                                       oos.writeObject(list);
-                               }
-                               finally
-                               {
-                                       stream.close();
-                                       oos.close();
                                }
+                               oos.writeObject(list);
                        }
                        catch (Exception e)
                        {
@@ -493,7 +478,7 @@ public class DiskPageStore implements IPersistentPageStore
                {
                        if (fileName == null)
                        {
-                               fileName = 
pageStore.getSessionFileName(sessionIdentifier, true);
+                               fileName = 
pageStore.getSessionFileName(sessionIdentifier);
                        }
                        return fileName;
                }
@@ -553,7 +538,7 @@ public class DiskPageStore implements IPersistentPageStore
                }
 
                /**
-                * Removes the page from pagemap file.
+                * Removes the page from disk.
                 * 
                 * @param pageId
                 */
@@ -656,15 +641,14 @@ public class DiskPageStore implements IPersistentPageStore
 
        /**
         * Returns the file name for specified session. If the session folder 
(folder that contains the
-        * file) does not exist and createSessionFolder is true, the folder 
will be created.
+        * file) does not exist, the folder will be created.
         * 
         * @param sessionIdentifier
-        * @param createSessionFolder
         * @return file name for pagemap
         */
-       private String getSessionFileName(String sessionIdentifier, boolean 
createSessionFolder)
+       private String getSessionFileName(String sessionIdentifier)
        {
-               File sessionFolder = folders.get(sessionIdentifier, 
createSessionFolder);
+               File sessionFolder = folders.get(sessionIdentifier, true);
                return new File(sessionFolder, "data").getAbsolutePath();
        }
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/FilePageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/FilePageStore.java
index 3ff615d..a27f447 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/FilePageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/FilePageStore.java
@@ -47,6 +47,7 @@ import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.lang.Classes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -98,7 +99,7 @@ public class FilePageStore implements IPersistentPageStore
        }
 
        /**
-        * Create a store to disk.
+        * Create a store to files.
         * 
         * @param applicationName
         *            name of application
@@ -282,9 +283,9 @@ public class FilePageStore implements IPersistentPageStore
                {
                        if (serializer == null)
                        {
-                               throw new WicketRuntimeException("DiskPageStore 
not configured for serialization");
+                               throw new WicketRuntimeException("FilePageStore 
not configured for serialization");
                        }
-                       type = page.getClass().getName();
+                       type = Classes.name(page.getClass());
                        data = serializer.serialize(page);
                }
 
@@ -401,7 +402,7 @@ public class FilePageStore implements IPersistentPageStore
                @Override
                public int compare(File f1, File f2)
                {
-                       return (int)(f2.lastModified() - f1.lastModified());
+                       return Long.compare(f2.lastModified(), 
f1.lastModified());
                }
 
        }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/InMemoryPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/InMemoryPageStore.java
index 760d4aa..81e5f23 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/InMemoryPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/InMemoryPageStore.java
@@ -37,6 +37,7 @@ import org.apache.wicket.core.util.lang.WicketObjects;
 import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.lang.Classes;
 
 /**
  * A storage of pages in memory.
@@ -341,7 +342,7 @@ public class InMemoryPageStore implements 
IPersistentPageStore
                public PersistedPage(IManageablePage page, long size)
                {
                        this.id = page.getPageId();
-                       this.type = page instanceof SerializedPage ? 
((SerializedPage)page).getPageType() : page.getClass().getName();
+                       this.type = page instanceof SerializedPage ? 
((SerializedPage)page).getPageType() : Classes.name(page.getClass());;
                        this.size = size;
                }
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
index 01c3cb5..9ab8130 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/InSessionPageStore.java
@@ -32,6 +32,7 @@ import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Classes;
 
 /**
  * A store keeping a configurable maximum of pages in the session.
@@ -106,7 +107,7 @@ public class InSessionPageStore extends DelegatingPageStore
                        }
                }
 
-               return super.getPage(context, id);
+               return getDelegate().getPage(context, id);
        }
 
        @Override
@@ -116,7 +117,7 @@ public class InSessionPageStore extends DelegatingPageStore
 
                data.add(context, page, maxPages);
                
-               super.addPage(context, page);
+               getDelegate().addPage(context, page);
        }
 
        @Override
@@ -127,7 +128,7 @@ public class InSessionPageStore extends DelegatingPageStore
                        data.remove(page);
                }
 
-               super.removePage(context, page);
+               getDelegate().removePage(context, page);
        }
 
        @Override
@@ -138,7 +139,7 @@ public class InSessionPageStore extends DelegatingPageStore
                        data.removeAll();
                }
 
-               super.removeAllPages(context);
+               getDelegate().removeAllPages(context);
        }
 
        private SessionData getSessionData(IPageContext context, boolean create)
@@ -255,7 +256,7 @@ public class InSessionPageStore extends DelegatingPageStore
                                        {
                                                throw new 
IllegalStateException("SessionData#init() was not called");
                                        }
-                                       pages.set(p,  new 
SerializedPage(page.getPageId(), page.getClass().getName(), 
serializer.serialize(page)));
+                                       pages.set(p,  new 
SerializedPage(page.getPageId(), Classes.name(page.getClass()), 
serializer.serialize(page)));
                                }
                        }
 
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 89618bc..69a1210 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
@@ -52,7 +52,7 @@ public class RequestPageStore extends DelegatingPageStore
                        return page;
                }
 
-               return super.getPage(context, id);
+               return getDelegate().getPage(context, id);
        }
 
        @Override
@@ -66,7 +66,7 @@ public class RequestPageStore extends DelegatingPageStore
        {
                getRequestData(context).remove(page);
 
-               super.removePage(context, page);
+               getDelegate().removePage(context, page);
        }
 
        @Override
@@ -74,7 +74,7 @@ public class RequestPageStore extends DelegatingPageStore
        {
                getRequestData(context).removeAll();
 
-               super.removeAllPages(context);
+               getDelegate().removeAllPages(context);
        }
 
        @Override
@@ -96,12 +96,12 @@ public class RequestPageStore extends DelegatingPageStore
 
                        if (isPageStateless == false)
                        {
-                               super.addPage(context, page);
+                               getDelegate().addPage(context, page);
                        }
                }
                requestData.removeAll();
 
-               super.detach(context);
+               getDelegate().detach(context);
        }
 
        private RequestData getRequestData(IPageContext context)
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializingPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializingPageStore.java
index d588262..0a20825 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializingPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializingPageStore.java
@@ -19,6 +19,7 @@ package org.apache.wicket.pageStore;
 import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Classes;
 
 /**
  * A store that serializes all pages before delegating and vice versa.
@@ -62,7 +63,7 @@ public class SerializingPageStore extends DelegatingPageStore
        @Override
        public IManageablePage getPage(IPageContext context, int id)
        {
-               IManageablePage page = super.getPage(context, id);
+               IManageablePage page = getDelegate().getPage(context, id);
 
                if (page instanceof SerializedPage) {
                        page = 
(IManageablePage)serializer.deserialize(((SerializedPage)page).getData());
@@ -74,8 +75,8 @@ public class SerializingPageStore extends DelegatingPageStore
        public void addPage(IPageContext context, IManageablePage page)
        {
                if (page instanceof SerializedPage == false) {
-                       page = new SerializedPage(page.getPageId(), 
page.getClass().getName(), serializer.serialize(page));
+                       page = new SerializedPage(page.getPageId(), 
Classes.name(page.getClass()), serializer.serialize(page));
                }
-               super.addPage(context, page);
+               getDelegate().addPage(context, page);
        }
 }
\ No newline at end of file

Reply via email to