Hi Martin,

many thanks for keeping track!

Why this change has been made ?
Now the name "AbstractPersistentPageStore" is probably not good, because it
is not "persistent" anymore.

For wicketstuff-shiro's SessionPageStore I wanted to extends from AbstractPersistentPageStore, i.e. keeping a stable session identifier while persisting the actual pages into JSecurity's session. But IPersistentPageStore forced some additional methods which cannot be implemented, since the store doesn't have access to all persisted session.

So I just dropped the interface. It seems the class names (IPersistentPageStore, AbstractPersistentPageStore) aren't right currently. I'll try to improve.

Have fun
Sven


Am 28.01.19 um 12:53 schrieb Martin Grigorov:
Hi Sven,

On Mon, Jan 28, 2019 at 1:48 PM <[email protected]> wrote:

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


The following commit(s) were added to refs/heads/WICKET-6563 by this push:
      new e47c3be  WICKET-6563 correct MockPageStore
e47c3be is described below

commit e47c3be5883f3ade700c1a69bf2f9600530a9f6d
Author: Sven Meier <[email protected]>
AuthorDate: Mon Jan 28 12:35:35 2019 +0100

     WICKET-6563 correct MockPageStore

     and allow extending AbstractPersistentPageStore without implementing
IPersistentPageStore
---
  .../src/main/java/org/apache/wicket/mock/MockPageStore.java   | 11
+++++++++--
  .../apache/wicket/pageStore/AbstractPersistentPageStore.java  |  3 +--
  .../main/java/org/apache/wicket/pageStore/DiskPageStore.java  |  3 +--
  .../main/java/org/apache/wicket/pageStore/FilePageStore.java  |  2 +-
  .../java/org/apache/wicket/pageStore/InMemoryPageStore.java   |  2 +-
  5 files changed, 13 insertions(+), 8 deletions(-)

diff --git
a/wicket-core/src/main/java/org/apache/wicket/mock/MockPageStore.java
b/wicket-core/src/main/java/org/apache/wicket/mock/MockPageStore.java
index 449c3e7..ec9c52c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/mock/MockPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/mock/MockPageStore.java
@@ -49,7 +49,7 @@ public class MockPageStore implements IPageStore
         public IManageablePage getPage(IPageContext context, int id)
         {
                 for (IManageablePage page : pages) {
-                       if (page .getPageId() == id) {
+                       if (page.getPageId() == id) {
                                 return page;
                         }
                 }
@@ -59,7 +59,12 @@ public class MockPageStore implements IPageStore
         @Override
         public void removePage(IPageContext context, final IManageablePage
page)
         {
-               pages.remove(page);
+               for (IManageablePage candidate : pages) {
+                       if (candidate.getPageId() == page.getPageId()) {
+                               pages.remove(candidate);
+                               return;
+                       }
+               }
         }

         @Override
@@ -77,6 +82,8 @@ public class MockPageStore implements IPageStore
         @Override
         public void addPage(IPageContext context, IManageablePage page)
         {
+               removePage(context, page);
+
                 pages.addLast(page);
         }
  }
\ No newline at end of file
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 918e8c1..de35467 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
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
   *
   * @see #getSessionIdentifier(IPageContext, boolean)
   */
-public abstract class AbstractPersistentPageStore implements
IPersistentPageStore
+public abstract class AbstractPersistentPageStore implements IPageStore

Why this change has been made ?
Now the name "AbstractPersistentPageStore" is probably not good, because it
is not "persistent" anymore.


  {
         private static final String KEY = "wicket:persistentPageStore";

@@ -219,7 +219,6 @@ public abstract class AbstractPersistentPageStore
implements IPersistentPageStor

         }

-       @Override
         public String getSessionIdentifier(IPageContext context)
         {
                 return getSessionIdentifier(context, true);
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 3fdaa55..f291dd2 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
@@ -47,7 +47,6 @@ 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;

@@ -64,7 +63,7 @@ import org.slf4j.LoggerFactory;
   * 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}.
   */
-public class DiskPageStore extends AbstractPersistentPageStore
+public class DiskPageStore extends AbstractPersistentPageStore implements
IPersistentPageStore
  {
         private static final Logger log =
LoggerFactory.getLogger(DiskPageStore.class);

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 8ebd85c..5c5390a 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
@@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory;
   * in its own file. This improves on a {@link DiskPageStore disadvantage
of DiskPageStore} surfacing
   * with alternating Ajax requests from different browser tabs.
   */
-public class FilePageStore extends AbstractPersistentPageStore
+public class FilePageStore extends AbstractPersistentPageStore implements
IPersistentPageStore
  {
         private static final String ATTRIBUTE_PAGE_TYPE =
"user.wicket_page_type";

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 9ea6476..1de3214 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
@@ -38,7 +38,7 @@ import org.apache.wicket.util.lang.Classes;
  /**
   * A storage of pages in memory.
   */
-public class InMemoryPageStore extends AbstractPersistentPageStore
+public class InMemoryPageStore extends AbstractPersistentPageStore
implements IPersistentPageStore
  {

         private final Map<String, MemoryData> datas = new
ConcurrentHashMap<>();


Reply via email to