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

mgrigorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/master by this push:
     new cd44134  Minor improvements in pageStore package
cd44134 is described below

commit cd441346709ba932d0870eaf72f048bfee51370a
Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
AuthorDate: Thu Mar 26 07:58:14 2020 +0200

    Minor improvements in pageStore package
    
    * Remove ISerializer from some PageStore impls because it is not used anyway
    * Use Java 8 diamonds where possible
    * Fix javadoc errors
    * Add empty default implementation for #detach() methods in interfaces. It 
is implemented very rarely. In the current case only in Component.java
    * Make some member fields 'final'
    * Add null-checks for File.list() methods
    * Use Java 8+ lambda methods where applicable
    * Replace deprecated Mockito.verifyZeroInteractions() with 
verifyNoInteractions()
---
 .../org/apache/wicket/page/IManageablePage.java    |  3 +-
 .../pageStore/AbstractPersistentPageStore.java     | 10 +++---
 .../wicket/pageStore/AsynchronousPageStore.java    | 39 +++++-----------------
 .../apache/wicket/pageStore/CryptingPageStore.java |  8 ++---
 .../wicket/pageStore/DefaultPageContext.java       |  2 +-
 .../org/apache/wicket/pageStore/DiskPageStore.java | 35 ++++---------------
 .../org/apache/wicket/pageStore/FilePageStore.java | 34 +++----------------
 .../apache/wicket/pageStore/GroupingPageStore.java | 10 +++---
 .../org/apache/wicket/pageStore/IPageStore.java    |  8 ++---
 .../wicket/pageStore/IPersistentPageStore.java     |  2 +-
 .../apache/wicket/pageStore/InMemoryPageStore.java | 17 ++++------
 .../wicket/pageStore/InSessionPageStore.java       | 17 +++++-----
 .../apache/wicket/pageStore/RequestPageStore.java  |  6 ++--
 .../apache/wicket/pageStore/SerializedPage.java    |  7 +---
 .../wicket/pageStore/SerializingPageStore.java     |  4 +--
 .../wicket/pageStore/crypt/DefaultCrypter.java     |  4 ---
 .../wicket/pageStore/disk/NestedFolders.java       | 19 +++++------
 .../wicket/pageStore/disk/PageWindowManager.java   | 10 +++---
 .../request/component/IRequestableComponent.java   |  3 +-
 .../wicket/request/component/IRequestablePage.java |  6 ++++
 .../test/java/org/apache/wicket/MockComponent.java |  5 ---
 .../wicket/page/PersistentPageManagerTest.java     |  5 ---
 .../pageStore/AsynchronousPageStoreTest.java       |  5 ---
 .../apache/wicket/pageStore/DiskPageStoreTest.java |  5 ++-
 .../apache/wicket/pageStore/FilePageStoreTest.java |  4 +--
 .../protocol/http/request/WebClientInfoTest.java   |  2 +-
 26 files changed, 89 insertions(+), 181 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/page/IManageablePage.java 
b/wicket-core/src/main/java/org/apache/wicket/page/IManageablePage.java
index 11c3756..c57bf3c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/IManageablePage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/IManageablePage.java
@@ -40,7 +40,8 @@ public interface IManageablePage extends IClusterable
         * Detaches model after use. This is generally used to null out 
transient references that can be
         * re-attached later.
         */
-       void detach();
+       default void detach()
+       {}
 
        /**
         * Sets whether or not the page is allowed to change its page id. 
Implementations of this
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractPersistentPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractPersistentPageStore.java
index 17541ee..74df252 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractPersistentPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractPersistentPageStore.java
@@ -165,7 +165,7 @@ public abstract class AbstractPersistentPageStore 
implements IPageStore
        /**
         * Create an identifier for the given context.
         * <p>
-        * Default implementation uses {@link IPageContext#getSessionId()}.
+        * Default implementation uses {@link 
IPageContext#getSessionId(boolean)}}.
         * 
         * @param context context
         * @return identifier for the session
@@ -224,11 +224,11 @@ public abstract class AbstractPersistentPageStore 
implements IPageStore
 
        protected static class PersistedPage implements IPersistedPage
        {
-               private int pageId;
+               private final int pageId;
 
-               private String pageType;
+               private final String pageType;
 
-               private long pageSize;
+               private final long pageSize;
 
                public PersistedPage(int pageId, String pageType, long pageSize)
                {
@@ -256,4 +256,4 @@ public abstract class AbstractPersistentPageStore 
implements IPageStore
                }
 
        }
-}
\ No newline at end of file
+}
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 caf17ce..735683c 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
@@ -18,7 +18,6 @@ package org.apache.wicket.pageStore;
 
 import java.io.Serializable;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
@@ -102,8 +101,8 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
 
        /**
         * 
-        * @param pageId
         * @param sessionId
+        * @param pageId
         * @return generated key
         */
        private static String getKey(final String sessionId, final int pageId)
@@ -145,8 +144,6 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                }
 
                /**
-                * 
-                * @param entry
                 * @return generated key
                 */
                private String getKey()
@@ -189,12 +186,9 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        if (asynchronous)
                        {
                                value = (T)attributeCache.get(key);
-                               if (value == null )
+                               if (value == null && defaultValue.get() != null)
                                {
-                                       if (defaultValue.get() != null)
-                                       {
                                                throw new 
WicketRuntimeException("session attribute can not be changed asynchronuously");
-                                       }
                                }
                        } else {
                                value = context.getSessionAttribute(key, 
defaultValue);
@@ -218,12 +212,9 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                        if (asynchronous)
                        {
                                value = context.getSessionData(key, () -> null);
-                               if (value == null )
+                               if (value == null && defaultValue.get() != null)
                                {
-                                       if (defaultValue.get() != null)
-                                       {
                                                throw new 
WicketRuntimeException("session data can not be changed asynchronuously");
-                                       }
                                }
                        }
                        else
@@ -340,13 +331,10 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                }
 
                String key = getKey(sessionId, page.getPageId());
-               if (key != null)
+               PendingAdd entry = queueMap.remove(key);
+               if (entry != null)
                {
-                       PendingAdd entry = queueMap.remove(key);
-                       if (entry != null)
-                       {
-                               queue.remove(entry);
-                       }
+                       queue.remove(entry);
                }
 
                getDelegate().removePage(context, page);
@@ -394,18 +382,9 @@ public class AsynchronousPageStore extends 
DelegatingPageStore
                if (sessionId == null) {
                        return;
                }
-               
-               Iterator<PendingAdd> iterator = queue.iterator();
-               while (iterator.hasNext())
-               {
-                       PendingAdd add = iterator.next(); 
-               
-                       if (add.sessionId.equals(sessionId))
-                       {
-                               iterator.remove();
-                       }
-               }
+
+               queue.removeIf(add -> add.sessionId.equals(sessionId));
                
                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 dc0d6eb..5b697b6 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
@@ -41,7 +41,7 @@ import org.apache.wicket.util.lang.Args;
  */
 public class CryptingPageStore extends DelegatingPageStore
 {
-       private static final MetaDataKey<SessionData> KEY = new 
MetaDataKey<SessionData>()
+       private static final MetaDataKey<SessionData> KEY = new MetaDataKey<>()
        {
                private static final long serialVersionUID = 1L;
        };
@@ -53,8 +53,8 @@ public class CryptingPageStore extends DelegatingPageStore
        /**
         * @param delegate
         *            store to delegate to
-        * @param applicationName
-        *            name of application
+        * @param application
+        *            the application
         */
        public CryptingPageStore(IPageStore delegate, Application application)
        {
@@ -163,4 +163,4 @@ public class CryptingPageStore extends DelegatingPageStore
                        return crypter.decrypt(encrypted, key);
                }
        }
-}
\ No newline at end of file
+}
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 57e7e3c..780f440 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
@@ -33,7 +33,7 @@ public class DefaultPageContext implements IPageContext
 {
        
        /**
-        * @see org.apache.wicket.pageStore.IPageContext#getSessionId()
+        * @see org.apache.wicket.pageStore.IPageContext#getSessionId(boolean)
         */
        @Override
        public String getSessionId(boolean bind)
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 033e1cc..d6bda8f 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
@@ -18,7 +18,6 @@ package org.apache.wicket.pageStore;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -42,7 +41,6 @@ import org.apache.wicket.pageStore.disk.NestedFolders;
 import org.apache.wicket.pageStore.disk.PageWindowManager;
 import org.apache.wicket.pageStore.disk.PageWindowManager.FileWindow;
 import org.apache.wicket.protocol.http.PageExpiredException;
-import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Args;
@@ -59,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * Since Ajax requests do not change the id of a page, {@link DiskPageStore} 
offers an optimization to overwrite the most recently written
  * page, if it has the same id as a new page to write.<p>
  * 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).
+ * different page ids and the oldest 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 with {@link 
PageExpiredException}.   
  */
@@ -92,24 +90,6 @@ public class DiskPageStore extends 
AbstractPersistentPageStore implements IPersi
         */
        public DiskPageStore(String applicationName, File fileStoreFolder, 
Bytes maxSizePerSession)
        {
-               this(applicationName, fileStoreFolder, maxSizePerSession, null);
-       }
-
-       /**
-        * Create a store to disk.
-        * 
-        * @param applicationName
-        *            name of application
-        * @param fileStoreFolder
-        *            folder to store to
-        * @param maxSizePerSession
-        *            maximum size per session
-        * @param serializer
-        *            for serialization of pages
-        */
-       public DiskPageStore(String applicationName, File fileStoreFolder, 
Bytes maxSizePerSession,
-               ISerializer serializer)
-       {
                super(applicationName);
                
                this.folders = new NestedFolders(new File(fileStoreFolder, 
applicationName + "-filestore"));
@@ -285,7 +265,7 @@ public class DiskPageStore extends 
AbstractPersistentPageStore implements IPersi
                        {
                                ObjectOutputStream oos = new 
ObjectOutputStream(stream);
                                
-                               List<DiskData> list = new 
ArrayList<>(diskDatas.size());
+                               ArrayList<DiskData> list = new 
ArrayList<>(diskDatas.size());
                                for (DiskData diskData : diskDatas.values())
                                {
                                        if (diskData.sessionIdentifier != null)
@@ -310,7 +290,7 @@ public class DiskPageStore extends 
AbstractPersistentPageStore implements IPersi
 
        /**
         * 
-        * @param session
+        * @param sessionIdentifier
         *            key
         * @return a list of the last N page windows
         */
@@ -499,15 +479,14 @@ public class DiskPageStore extends 
AbstractPersistentPageStore implements IPersi
                        if (create || file.exists())
                        {
                                String mode = create ? "rw" : "r";
-                               try
+                               try (RandomAccessFile randomAccessFile = new 
RandomAccessFile(file, mode))
                                {
-                                       RandomAccessFile randomAccessFile = new 
RandomAccessFile(file, mode);
                                        channel = randomAccessFile.getChannel();
                                }
-                               catch (FileNotFoundException fnfx)
+                               catch (IOException iox)
                                {
                                        // can happen if the file is locked. 
WICKET-4176
-                                       log.error(fnfx.getMessage(), fnfx);
+                                       log.error(iox.getMessage(), iox);
                                }
                        }
                        return channel;
@@ -558,4 +537,4 @@ public class DiskPageStore extends 
AbstractPersistentPageStore implements IPersi
                File sessionFolder = folders.get(sessionIdentifier, true);
                return new File(sessionFolder, "data").getAbsolutePath();
        }
-}
\ No newline at end of file
+}
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 2fb968d..9e21715 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
@@ -35,7 +35,6 @@ import java.util.Set;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.pageStore.disk.NestedFolders;
-import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Args;
@@ -78,23 +77,6 @@ public class FilePageStore extends 
AbstractPersistentPageStore implements IPersi
         */
        public FilePageStore(String applicationName, File fileStoreFolder, 
Bytes maxSizePerSession)
        {
-               this(applicationName, fileStoreFolder, maxSizePerSession, null);
-       }
-
-       /**
-        * Create a store to files.
-        * 
-        * @param applicationName
-        *            name of application
-        * @param fileStoreFolder
-        *            folder to store to
-        * @param maxSizePerSession
-        *            maximum size per session
-        * @param serializer
-        *            for serialization of pages
-        */
-       public FilePageStore(String applicationName, File fileStoreFolder, 
Bytes maxSizePerSession, ISerializer serializer)
-       {
                super(applicationName);
                
                this.folders = new NestedFolders(new File(fileStoreFolder, 
applicationName + "-filestore"));
@@ -229,32 +211,27 @@ public class FilePageStore extends 
AbstractPersistentPageStore implements IPersi
                Arrays.sort(files, new LastModifiedComparator());
 
                long total = 0;
-               for (int f = 0; f < files.length; f++)
+               for (File candidate : files)
                {
-                       File candidate = files[f];
-
                        total += candidate.length();
 
                        if (total > maxSizePerSession.bytes())
                        {
                                if (!Files.remove(candidate))
                                {
-                                       log.warn("cannot remove page data for 
session {} page {}", sessionIdentifier,
-                                               candidate.getName());
+                                       log.warn("cannot remove page data for 
session {} page {}", sessionIdentifier, candidate.getName());
                                }
                        }
                }
        }
 
-       public class LastModifiedComparator implements Comparator<File>
+       public static class LastModifiedComparator implements Comparator<File>
        {
-
                @Override
                public int compare(File f1, File f2)
                {
                        return Long.compare(f2.lastModified(), 
f1.lastModified());
                }
-
        }
 
        @Override
@@ -288,8 +265,7 @@ public class FilePageStore extends 
AbstractPersistentPageStore implements IPersi
                                        int pageId;
                                        try
                                        {
-                                               pageId = Integer
-                                                       
.valueOf(name.substring(0, name.length() - FILE_SUFFIX.length()));
+                                               pageId = 
Integer.parseInt(name.substring(0, name.length() - FILE_SUFFIX.length()), 10);
                                        }
                                        catch (Exception ex)
                                        {
@@ -376,4 +352,4 @@ public class FilePageStore extends 
AbstractPersistentPageStore implements IPersi
 
                return Bytes.bytes(total);
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/GroupingPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/GroupingPageStore.java
index b588df7..9eaaa7d 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/GroupingPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/GroupingPageStore.java
@@ -40,12 +40,12 @@ public abstract class GroupingPageStore extends 
DelegatingPageStore
 
        private static final String DEFAULT_GROUP = "default";
 
-       private static final MetaDataKey<SessionData> KEY = new 
MetaDataKey<SessionData>()
+       private static final MetaDataKey<SessionData> KEY = new MetaDataKey<>()
        {
                private static final long serialVersionUID = 1L;
        };
 
-       private int maxGroups;
+       private final int maxGroups;
        
        /**
         * Is a group of a page stable.
@@ -157,9 +157,9 @@ public abstract class GroupingPageStore extends 
DelegatingPageStore
         */
        static class SessionData implements Serializable
        {
-               private LinkedList<String> groups = new LinkedList<>();
+               private final LinkedList<String> groups = new LinkedList<>();
 
-               private Map<String, MetaDataEntry<?>[]> metaData = new 
HashMap<>();
+               private final Map<String, MetaDataEntry<?>[]> metaData = new 
HashMap<>();
 
                public synchronized <T> void setMetaData(String group, 
MetaDataKey<T> key, T value)
                {
@@ -282,4 +282,4 @@ public abstract class GroupingPageStore extends 
DelegatingPageStore
                        throw new WicketRuntimeException("no request available 
for group");
                }
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
index 50634a0..3872c8a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
@@ -50,8 +50,8 @@ public interface IPageStore
         * 
         * @param context
         *            the context of the page
-        * @param id
-        *            the id of the page.
+        * @param page
+        *            the page.
         */
        void addPage(IPageContext context, IManageablePage page);
 
@@ -60,8 +60,8 @@ public interface IPageStore
         * 
         * @param context
         *            the context of the page
-        * @param id
-        *            the id of the page.
+        * @param page
+        *            the page.
         */
        void removePage(IPageContext context, IManageablePage page);
 
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPersistentPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPersistentPageStore.java
index 9a4226d..837ae7f 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPersistentPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPersistentPageStore.java
@@ -51,7 +51,7 @@ public interface IPersistentPageStore extends IPageStore
        /**
         * Get information about all persisted pages with the given session 
identifier.
         * 
-        * @param the
+        * @param sessionIdentifier
         *            identifier of the session.
         * @return all persisted pages
         */
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 481f717..222589f 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
@@ -205,7 +205,7 @@ public class InMemoryPageStore extends 
AbstractPersistentPageStore implements IP
        /**
         * Data kept in memory.
         */
-       static abstract class MemoryData implements Iterable<IManageablePage>
+       abstract static class MemoryData implements Iterable<IManageablePage>
        {
                /**
                 * Kept in list instead of map, since non-serialized pages 
might change their id during a request.
@@ -243,11 +243,8 @@ public class InMemoryPageStore extends 
AbstractPersistentPageStore implements IP
 
                public synchronized IManageablePage get(int pageId)
                {
-                       Iterator<IManageablePage> iterator = pages.iterator();
-                       while (iterator.hasNext())
+                       for (final IManageablePage page : pages)
                        {
-                               IManageablePage page = iterator.next();
-                               
                                if (page.getPageId() == pageId)
                                {
                                        return page;
@@ -269,8 +266,7 @@ public class InMemoryPageStore extends 
AbstractPersistentPageStore implements IP
         */
        static class CountLimitedData extends MemoryData
        {
-
-               private int maxPages;
+               private final int maxPages;
 
                public CountLimitedData(int maxPages)
                {
@@ -294,8 +290,7 @@ public class InMemoryPageStore extends 
AbstractPersistentPageStore implements IP
         */
        static class SizeLimitedData extends MemoryData
        {
-               
-               private Bytes maxBytes;
+               private final Bytes maxBytes;
                
                private long size;
 
@@ -330,9 +325,9 @@ public class InMemoryPageStore extends 
AbstractPersistentPageStore implements IP
                        SerializedPage page = (SerializedPage) 
super.remove(pageId);
                        if (page != null)
                        {
-                               size -= ((SerializedPage) 
page).getData().length;
+                               size -= page.getData().length;
                        }
                        return page;
                }
        }
-}
\ No newline at end of file
+}
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 c740380..3c363fd 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
@@ -48,12 +48,12 @@ import org.apache.wicket.util.lang.Classes;
 public class InSessionPageStore extends DelegatingPageStore
 {
 
-       private static final MetaDataKey<SessionData> KEY_CACHE = new 
MetaDataKey<SessionData>()
+       private static final MetaDataKey<SessionData> KEY_CACHE = new 
MetaDataKey<>()
        {
                private static final long serialVersionUID = 1L;
        };
 
-       private static final MetaDataKey<SessionData> KEY_PERSISTENT = new 
MetaDataKey<SessionData>()
+       private static final MetaDataKey<SessionData> KEY_PERSISTENT = new 
MetaDataKey<>()
        {
                private static final long serialVersionUID = 1L;
        };
@@ -213,7 +213,7 @@ public class InSessionPageStore extends DelegatingPageStore
         * Data kept in the {@link Session}, might get serialized along with 
its containing
         * {@link HttpSession}.
         */
-       static abstract class SessionData implements Serializable
+       abstract static class SessionData implements Serializable
        {
 
                transient ISerializer serializer;
@@ -328,14 +328,14 @@ public class InSessionPageStore extends 
DelegatingPageStore
         */
        static class CountLimitedData extends SessionData
        {
-
-               private int maxPages;
+               private final int maxPages;
 
                public CountLimitedData(int maxPages)
                {
                        this.maxPages = Args.withinRange(1, Integer.MAX_VALUE, 
maxPages, "maxPages");
                }
 
+               @Override
                public synchronized void add(IManageablePage page)
                {
                        super.add(page);
@@ -352,8 +352,7 @@ public class InSessionPageStore extends DelegatingPageStore
         */
        static class SizeLimitedData extends SessionData
        {
-
-               private Bytes maxBytes;
+               private final Bytes maxBytes;
 
                private long size;
 
@@ -389,7 +388,7 @@ public class InSessionPageStore extends DelegatingPageStore
                        SerializedPage page = 
(SerializedPage)super.remove(pageId);
                        if (page != null)
                        {
-                               size -= ((SerializedPage)page).getData().length;
+                               size -= page.getData().length;
                        }
 
                        return page;
@@ -403,4 +402,4 @@ public class InSessionPageStore extends DelegatingPageStore
                        size = 0;
                }
        }
-}
\ No newline at end of file
+}
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 0c0da70..ddeab95 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
@@ -115,7 +115,7 @@ public class RequestPageStore extends DelegatingPageStore
 
        private RequestData getRequestData(IPageContext context)
        {
-               return context.getRequestData(KEY, () -> new RequestData());
+               return context.getRequestData(KEY, RequestData::new);
        }
        
        /**
@@ -123,7 +123,7 @@ public class RequestPageStore extends DelegatingPageStore
         */
        static class RequestData
        {
-               private LinkedList<IManageablePage> pages = new LinkedList<>();
+               private final LinkedList<IManageablePage> pages = new 
LinkedList<>();
                
                public void add(IManageablePage page)
                {
@@ -160,4 +160,4 @@ public class RequestPageStore extends DelegatingPageStore
                        pages.clear();
                }               
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializedPage.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializedPage.java
index eccabe6..4dd6bd7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializedPage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/SerializedPage.java
@@ -85,11 +85,6 @@ public final class SerializedPage implements IManageablePage
        {
                return data;
        }
-       
-       @Override
-       public void detach()
-       {
-       }
 
        @Override
        public boolean setFreezePageId(boolean freeze)
@@ -102,4 +97,4 @@ public final class SerializedPage implements IManageablePage
        {
                return "[SerializedPage id = " + pageId + ", type=" + pageType 
+ ", size=" + data.length + "]";
        }
-}
\ No newline at end of file
+}
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 bd19872..c62df9f 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
@@ -27,7 +27,7 @@ import org.apache.wicket.util.lang.Classes;
 public class SerializingPageStore extends DelegatingPageStore
 {
 
-       private ISerializer serializer;
+       private final ISerializer serializer;
 
        /**
         * @param delegate
@@ -81,4 +81,4 @@ public class SerializingPageStore extends DelegatingPageStore
                }
                getDelegate().addPage(context, page);
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/crypt/DefaultCrypter.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/crypt/DefaultCrypter.java
index efc4169..403a4d7 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/crypt/DefaultCrypter.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/crypt/DefaultCrypter.java
@@ -33,10 +33,6 @@ import org.apache.wicket.WicketRuntimeException;
  */
 public class DefaultCrypter implements ICrypter
 {
-       public DefaultCrypter()
-       {
-       }
-
        protected Cipher getCipher() throws GeneralSecurityException
        {
                return Cipher.getInstance("AES/CBC/PKCS5Padding");
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/NestedFolders.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/NestedFolders.java
index 7636d83..f4d00e6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/NestedFolders.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/NestedFolders.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.pageStore.disk;
 
 import java.io.File;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -98,15 +99,14 @@ public class NestedFolders
                        Files.removeFolder(folder);
                        
                        File high = folder.getParentFile();
-                       if (high.list().length == 0)
+                       final String[] highChildren = high.list();
+                       if (highChildren != null && highChildren.length == 0 && 
Files.removeFolder(high))
                        {
-                               if (Files.removeFolder(high))
+                               File low = high.getParentFile();
+                               final String[] lowChildren = low.list();
+                               if (lowChildren != null && lowChildren.length 
== 0)
                                {
-                                       File low = high.getParentFile();
-                                       if (low.list().length == 0)
-                                       {
-                                               Files.removeFolder(low);
-                                       }
+                                       Files.removeFolder(low);
                                }
                        }
                }
@@ -127,10 +127,7 @@ public class NestedFolders
                        {
                                for (File high: Files.list(low))
                                {
-                                       for (File file : Files.list(high))
-                                       {
-                                               files.add(file);
-                                       }
+                                       Collections.addAll(files, 
Files.list(high));
                                }
                        }
                }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/PageWindowManager.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/PageWindowManager.java
index ad60dab..424089a 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/PageWindowManager.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/disk/PageWindowManager.java
@@ -86,7 +86,7 @@ public class PageWindowManager implements Serializable
                }
        }
 
-       private final List<FileWindow> windows = new ArrayList<FileWindow>();
+       private final List<FileWindow> windows = new ArrayList<>();
 
        /**
         * map from page id to list of pagewindow indices (referring to the 
windows list) - to improve
@@ -149,9 +149,9 @@ public class PageWindowManager implements Serializable
        private void rebuildIndices()
        {
                idToWindowIndex = null;
-               idToWindowIndex = new IntHashMap<Integer>();
+               idToWindowIndex = new IntHashMap<>();
                windowIndexToPageId = null;
-               windowIndexToPageId = new IntHashMap<Integer>();
+               windowIndexToPageId = new IntHashMap<>();
                for (int i = 0; i < windows.size(); ++i)
                {
                        FileWindow window = windows.get(i);
@@ -355,7 +355,7 @@ public class PageWindowManager implements Serializable
         * Creates and returns a new page window for given page.
         * 
         * @param pageId
-        * @param type 
+        * @param pageType
         * @param size
         * @return page window
         */
@@ -437,7 +437,7 @@ public class PageWindowManager implements Serializable
         */
        public synchronized List<FileWindow> getFileWindows()
        {
-               List<FileWindow> result = new ArrayList<FileWindow>();
+               List<FileWindow> result = new ArrayList<>();
 
                // start from current index to 0
                int currentIndex = indexPointer;
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
index f7bd8ec..17787b9 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
@@ -107,7 +107,8 @@ public interface IRequestableComponent
         * 
         * </p>
         */
-       void detach();
+       default void detach()
+       {}
 
        /**
         * @return {@code true} if it is save to call an {@link 
org.apache.wicket.IRequestListener} on this component
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestablePage.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestablePage.java
index a5cfb22..d8e1833 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestablePage.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestablePage.java
@@ -71,4 +71,10 @@ public interface IRequestablePage extends 
IRequestableComponent, IManageablePage
         * @return page parameters or <code>null</code>
         */
        PageParameters getPageParameters();
+
+       /**
+        * {@inheritDoc}
+        */
+       default void detach()
+       {}
 }
diff --git a/wicket-core/src/test/java/org/apache/wicket/MockComponent.java 
b/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
index 8af8c40..949fa7d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
+++ b/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
@@ -133,11 +133,6 @@ public class MockComponent implements 
IRequestableComponent, IRequestListener
        }
 
        @Override
-       public void detach()
-       {
-       }
-
-       @Override
        public boolean canCallListenerAfterExpiry()
        {
                return false;
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
index d10dc4d..77bb7f0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
@@ -154,11 +154,6 @@ class PersistentPageManagerTest
                }
 
                @Override
-               public void detach()
-               {
-               }
-
-               @Override
                public boolean setFreezePageId(boolean freeze)
                {
                        return false;
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
index 7bad045..c9060ae 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
@@ -79,11 +79,6 @@ public class AsynchronousPageStoreTest
                }
 
                @Override
-               public void detach()
-               {
-               }
-
-               @Override
                public boolean setFreezePageId(boolean freeze)
                {
                        return false;
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/DiskPageStoreTest.java 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/DiskPageStoreTest.java
index dc9d534..233ad41 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/DiskPageStoreTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/DiskPageStoreTest.java
@@ -20,7 +20,6 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 
-import org.apache.wicket.serialize.java.JavaSerializer;
 import org.apache.wicket.util.WicketTestTag;
 import org.apache.wicket.util.lang.Bytes;
 import org.junit.jupiter.api.Tag;
@@ -43,10 +42,10 @@ public class DiskPageStoreTest extends 
AbstractConcurrentPageStoreTest
        {
                File fileStoreFolder = Files.createTempDirectory(null).toFile();
 
-               IPageStore pageStore = new DiskPageStore("app1", 
fileStoreFolder, MAX_SIZE_PER_SESSION, new JavaSerializer("app1"));
+               IPageStore pageStore = new DiskPageStore("app1", 
fileStoreFolder, MAX_SIZE_PER_SESSION);
 
                doTestStore(pageStore);
 
                pageStore.destroy();
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/FilePageStoreTest.java 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/FilePageStoreTest.java
index 86f393a..777a1d5 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/FilePageStoreTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/FilePageStoreTest.java
@@ -43,10 +43,10 @@ public class FilePageStoreTest extends 
AbstractConcurrentPageStoreTest
        {
                File folder = Files.createTempDirectory(null).toFile();
 
-               IPageStore pageStore = new FilePageStore("app1", folder, 
MAX_SIZE_PER_SESSION, new JavaSerializer("app1"));
+               IPageStore pageStore = new FilePageStore("app1", folder, 
MAX_SIZE_PER_SESSION);
 
                doTestStore(pageStore);
 
                pageStore.destroy();
        }
-}
\ No newline at end of file
+}
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/WebClientInfoTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/WebClientInfoTest.java
index 033e597..2c01d91 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/WebClientInfoTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/WebClientInfoTest.java
@@ -64,7 +64,7 @@ class WebClientInfoTest
                WebClientInfo clientInfo = new WebClientInfo(requestCycleMock, 
"No user agent");
                String actual = clientInfo.getRemoteAddr(requestCycleMock);
                assertEquals(expected, actual);
-               Mockito.verifyZeroInteractions(servletRequest);
+               Mockito.verifyNoInteractions(servletRequest);
        }
 
        /**

Reply via email to