Repository: wicket
Updated Branches:
  refs/heads/WICKET-6563 [created] bcf76f517


http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
index 978e87b..f9877c0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
@@ -26,17 +26,15 @@ import 
org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.page.IPageManager;
-import org.apache.wicket.page.IPageManagerContext;
-import org.apache.wicket.page.PageStoreManager;
-import org.apache.wicket.pageStore.DefaultPageStore;
-import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.pageStore.IPageContext;
+import org.apache.wicket.pageStore.InMemoryPageStore;
 import org.apache.wicket.request.Url;
-import org.apache.wicket.serialize.java.JavaSerializer;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.tester.WicketTester;
-import org.apache.wicket.versioning.InMemoryPageStore;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -48,7 +46,7 @@ import org.junit.Test;
 public class PageIdPoliticTest extends Assert
 {
        private WicketTester tester;
-       private InMemoryPageStore dataStore;
+       private InMemoryPageStore pageStore;
        private MockApplication application;
        private int storeCount;
 
@@ -87,12 +85,12 @@ public class PageIdPoliticTest extends Assert
        public void setUp() throws Exception
        {
                application = new MockApplication();
-               dataStore = new InMemoryPageStore()
+               pageStore = new InMemoryPageStore("test", Integer.MAX_VALUE)
                {
                        @Override
-                       public void storeData(String sessionId, int pageId, 
byte[] pageAsBytes)
+                       public void addPage(IPageContext context, 
IManageablePage page)
                        {
-                               super.storeData(sessionId, pageId, pageAsBytes);
+                               super.addPage(context, page);
                                storeCount++;
                        }
                };
@@ -104,12 +102,9 @@ public class PageIdPoliticTest extends Assert
                                return new IPageManagerProvider()
                                {
                                        @Override
-                                       public IPageManager 
apply(IPageManagerContext pageManagerContext)
+                                       public IPageManager get()
                                        {
-                                               IPageStore pageStore = new 
DefaultPageStore(new JavaSerializer(
-                                                       
application.getApplicationKey()), dataStore, 4);
-                                               return new 
PageStoreManager(application.getName(), pageStore,
-                                                       pageManagerContext);
+                                               return new 
PageManager(pageStore);
                                        }
                                };
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
index 3f87b08..1f9740a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
@@ -62,8 +62,8 @@ public class PageProviderTest extends WicketTestCase
 
                // storing test page
                TestMapperContext mapperContext = new TestMapperContext();
-               mapperContext.getPageManager().touchPage(testPage);
-               mapperContext.getPageManager().commitRequest();
+               mapperContext.getPageManager().addPage(testPage);
+               mapperContext.getPageManager().detach();
 
                // by cleaning session cache we make sure of not being testing 
the same in-memory instance
                mapperContext.cleanSessionCache();
@@ -77,8 +77,8 @@ public class PageProviderTest extends WicketTestCase
                // changing some sate
                StatefullMockPage providedPage = 
(StatefullMockPage)pageProvider.getPageInstance();
                providedPage.state = newState;
-               mapperContext.getPageManager().touchPage(providedPage);
-               mapperContext.getPageManager().commitRequest();
+               mapperContext.getPageManager().addPage(providedPage);
+               mapperContext.getPageManager().detach();
 
 
                mapperContext.cleanSessionCache();
@@ -212,8 +212,8 @@ public class PageProviderTest extends WicketTestCase
        {
                TestMapperContext mapperContext = new TestMapperContext();
                Page page = new TestPage();
-               mapperContext.getPageManager().touchPage(page);
-               mapperContext.getPageManager().commitRequest();
+               mapperContext.getPageManager().addPage(page);
+               mapperContext.getPageManager().detach();
 
                // by cleaning session cache we make sure of not being testing 
the same in-memory instance
                mapperContext.cleanSessionCache();
@@ -235,8 +235,8 @@ public class PageProviderTest extends WicketTestCase
        {
                TestMapperContext mapperContext = new TestMapperContext();
                Page page = new TestPage();
-               mapperContext.getPageManager().touchPage(page);
-               mapperContext.getPageManager().commitRequest();
+               mapperContext.getPageManager().addPage(page);
+               mapperContext.getPageManager().detach();
 
                // by cleaning session cache we make sure of not being testing 
the same in-memory instance
                mapperContext.cleanSessionCache();
@@ -252,8 +252,8 @@ public class PageProviderTest extends WicketTestCase
        {
                TestMapperContext mapperContext = new TestMapperContext();
                Page page = new TestPage();
-               mapperContext.getPageManager().touchPage(page);
-               mapperContext.getPageManager().commitRequest();
+               mapperContext.getPageManager().addPage(page);
+               mapperContext.getPageManager().detach();
 
                PageProvider pageProvider = new PageProvider(page.getPageId(), 
page.getRenderCount());
                JavaSerializer javaSerializer = new JavaSerializer("app");

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-core/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java 
b/wicket-core/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
deleted file mode 100644
index f69a918..0000000
--- 
a/wicket-core/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.versioning;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.wicket.pageStore.IDataStore;
-
-/**
- * An implementation of {@link IDataStore} that stores the data in memory. 
Used only for testing
- * purposes.
- * 
- * @author martin-g
- */
-public class InMemoryPageStore implements IDataStore
-{
-
-       /**
-        * A map of : sessionId => pageId => pageAsBytes
-        */
-       private final ConcurrentHashMap<String, Map<Integer, byte[]>> store;
-
-       /**
-        * Construct.
-        */
-       public InMemoryPageStore()
-       {
-               store = new ConcurrentHashMap<> ();
-       }
-
-       @Override
-       public void destroy()
-       {
-               store.clear();
-       }
-
-       /**
-        * @see 
org.apache.wicket.pageStore.IDataStore#getData(java.lang.String, int)
-        */
-       @Override
-       public byte[] getData(String sessionId, int pageId)
-       {
-               byte[] pageAsBytes = null;
-
-               final Map<Integer, byte[]> sessionPages = store.get(sessionId);
-               if (sessionPages != null)
-               {
-                       pageAsBytes = sessionPages.get(pageId);
-               }
-
-               return pageAsBytes;
-       }
-
-       /**
-        * @see 
org.apache.wicket.pageStore.IDataStore#removeData(java.lang.String, int)
-        */
-       @Override
-       public void removeData(String sessionId, int pageId)
-       {
-               final Map<Integer, byte[]> sessionPages = store.get(sessionId);
-               if (sessionPages != null)
-               {
-                       sessionPages.remove(pageId);
-               }
-       }
-
-       /**
-        * @see 
org.apache.wicket.pageStore.IDataStore#removeData(java.lang.String)
-        */
-       @Override
-       public void removeData(String sessionId)
-       {
-               store.remove(sessionId);
-       }
-
-       /**
-        * @see 
org.apache.wicket.pageStore.IDataStore#storeData(java.lang.String, int, byte[])
-        */
-       @Override
-       public void storeData(String sessionId, int pageId, byte[] pageAsBytes)
-       {
-               Map<Integer, byte[]> sessionPages = store.get(sessionId);
-               if (sessionPages == null)
-               {
-                       sessionPages = new ConcurrentHashMap<>();
-                       Map<Integer, byte[]> tmpSessionPages = 
store.putIfAbsent(sessionId, sessionPages);
-                       if (tmpSessionPages != null)
-                       {
-                               sessionPages = tmpSessionPages;
-                       }
-               }
-
-               sessionPages.put(pageId, pageAsBytes);
-       }
-
-       /**
-        * @see org.apache.wicket.pageStore.IDataStore#isReplicated()
-        */
-       @Override
-       public boolean isReplicated()
-       {
-               return false;
-       }
-
-       @Override
-       public boolean canBeAsynchronous()
-       {
-               return false;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
index 9ac60fc..4e6420e 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
@@ -22,13 +22,12 @@ import static org.junit.Assert.assertNotNull;
 import org.apache.wicket.IPageManagerProvider;
 import org.apache.wicket.Page;
 import org.apache.wicket.page.IPageManager;
-import org.apache.wicket.page.IPageManagerContext;
-import org.apache.wicket.page.PageStoreManager;
-import org.apache.wicket.pageStore.AsynchronousDataStore;
-import org.apache.wicket.pageStore.DefaultPageStore;
-import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.pageStore.InMemoryPageStore;
+import org.apache.wicket.pageStore.InSessionPageStore;
+import org.apache.wicket.pageStore.NoopPageStore;
 import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.serialize.java.JavaSerializer;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.After;
 import org.junit.Before;
@@ -58,21 +57,10 @@ public class PageVersioningTest
                        @Override
                        protected IPageManagerProvider 
newTestPageManagerProvider()
                        {
-                               return new IPageManagerProvider()
+                               return () ->
                                {
-
-                                       @Override
-                                       public IPageManager 
apply(IPageManagerContext pageManagerContext)
-                                       {
-
-                                               final IDataStore dataStore = 
new InMemoryPageStore();
-                                               final AsynchronousDataStore 
asyncDS = new AsynchronousDataStore(dataStore,
-                                                       100);
-                                               final DefaultPageStore 
pageStore = new DefaultPageStore(new JavaSerializer(
-                                                       
application.getApplicationKey()), asyncDS, 40);
-                                               return new 
PageStoreManager(application.getName(), pageStore,
-                                                       pageManagerContext);
-                                       }
+                                       final IPageStore store = new 
InSessionPageStore(new NoopPageStore(), Integer.MAX_VALUE);
+                                       return new PageManager(store);
                                };
                        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBarInitializer.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBarInitializer.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBarInitializer.java
index ae17d8e..2fcdca3 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBarInitializer.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBarInitializer.java
@@ -38,7 +38,7 @@ public class DebugBarInitializer implements IInitializer
                        
DebugBar.registerContributor(VersionDebugContributor.DEBUG_BAR_CONTRIB, 
application);
                        
DebugBar.registerContributor(InspectorDebugPanel.DEBUG_BAR_CONTRIB, 
application);
                        
DebugBar.registerContributor(SessionSizeDebugPanel.DEBUG_BAR_CONTRIB, 
application);
-                       
DebugBar.registerContributor(PageSizeDebugPanel.DEBUG_BAR_CONTRIB, application);
+                       
DebugBar.registerContributor(PageStoreDebugPanel.DEBUG_BAR_CONTRIB, 
application);
                }
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/InspectorDebugPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/InspectorDebugPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/InspectorDebugPanel.java
index 33a0705..4de5cd4 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/InspectorDebugPanel.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/InspectorDebugPanel.java
@@ -18,12 +18,13 @@ package org.apache.wicket.devutils.debugbar;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
+import org.apache.wicket.core.util.lang.WicketObjects;
 import org.apache.wicket.devutils.inspector.InspectorPage;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Bytes;
 
 /**
  * A panel that adds a link to the inspector to the debug bar.
@@ -73,7 +74,22 @@ public class InspectorDebugPanel extends StandardDebugPanel
        @Override
        protected IModel<String> getDataModel()
        {
-               return new Model<>("Inspector");
+               return new IModel<String>()
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public String getObject()
+                       {
+                               Page enclosingPage = getPage();
+                               long pageSize = 
WicketObjects.sizeof(enclosingPage);
+                               Bytes pageSizeInBytes = (pageSize > -1 ? 
Bytes.bytes(pageSize) : null);
+                               String pageSizeAsString = pageSizeInBytes != 
null ? pageSizeInBytes.toString()
+                                       : "unknown";
+
+                               return "Page: " + pageSizeAsString;
+                       }
+               };
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageSizeDebugPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageSizeDebugPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageSizeDebugPanel.java
deleted file mode 100644
index f386783..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageSizeDebugPanel.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.debugbar;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.core.util.lang.WicketObjects;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- * A panel for the debug bar that shows the size of the currently shown page.
- * <p>
- * <strong>Note</strong>: this size includes the size of the debug bar itself 
too!
- */
-public class PageSizeDebugPanel extends StandardDebugPanel
-{
-       private static final long serialVersionUID = 1L;
-
-       /** */
-       public static final IDebugBarContributor DEBUG_BAR_CONTRIB = new 
IDebugBarContributor()
-       {
-               private static final long serialVersionUID = 1L;
-
-               @Override
-               public Component createComponent(final String id, final 
DebugBar debugBar)
-               {
-                       return new PageSizeDebugPanel(id);
-               }
-
-       };
-
-       /**
-        * Construct.
-        * 
-        * @param id
-        */
-       public PageSizeDebugPanel(final String id)
-       {
-               super(id);
-       }
-
-       @Override
-       protected Class<? extends Page> getLinkPageClass()
-       {
-               // not used
-               return WebPage.class;
-       }
-
-       // Disable the link because there is no page with more detailed 
information
-       @Override
-       protected BookmarkablePageLink<Void> createLink(final String id)
-       {
-               BookmarkablePageLink<Void> bookmarkablePageLink = 
super.createLink(id);
-               bookmarkablePageLink.setEnabled(false);
-               return bookmarkablePageLink;
-       }
-
-       @Override
-       protected ResourceReference getImageResourceReference()
-       {
-               // TODO: need better image for this:
-               return new 
PackageResourceReference(SessionSizeDebugPanel.class, "harddrive.png");
-       }
-
-       @Override
-       protected IModel<String> getDataModel()
-       {
-               return new IModel<String>()
-               {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       public String getObject()
-                       {
-                               Page enclosingPage = getPage();
-                               long pageSize = 
WicketObjects.sizeof(enclosingPage);
-                               Bytes pageSizeInBytes = (pageSize > -1 ? 
Bytes.bytes(pageSize) : null);
-                               String pageSizeAsString = pageSizeInBytes != 
null ? pageSizeInBytes.toString()
-                                       : "unknown";
-
-                               return "Page: " + pageSizeAsString;
-                       }
-               };
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageStoreDebugPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageStoreDebugPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageStoreDebugPanel.java
new file mode 100644
index 0000000..eedb590
--- /dev/null
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/PageStoreDebugPanel.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.devutils.debugbar;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.devutils.diskstore.PageStorePage;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.pageStore.IPersistentPageStore;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+
+/**
+ * A panel that adds a link to persisted pages to the debug bar.
+ */
+public class PageStoreDebugPanel extends StandardDebugPanel
+{
+       private static final long serialVersionUID = 1L;
+
+       /** */
+       public static final IDebugBarContributor DEBUG_BAR_CONTRIB = new 
IDebugBarContributor()
+       {
+               private static final long serialVersionUID = 1L;
+
+               @Override
+               public Component createComponent(final String id, final 
DebugBar debugBar)
+               {
+                       return new PageStoreDebugPanel(id);
+               }
+       };
+
+       /**
+        * Construct.
+        * 
+        * @param id
+        *          The component id
+        */
+       public PageStoreDebugPanel(final String id)
+       {
+               super(id);
+       }
+
+       @Override
+       protected Class<? extends Page> getLinkPageClass()
+       {
+               return PageStorePage.class;
+       }
+
+       @Override
+       protected ResourceReference getImageResourceReference()
+       {
+               return new PackageResourceReference(PageStoreDebugPanel.class, 
"harddrive.png");
+       }
+
+       @Override
+       protected IModel<String> getDataModel()
+       {
+               return new IModel<String>()
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public String getObject()
+                       {
+                               IPersistentPageStore store = 
PageStorePage.getPersistentPageStore();
+                               return String.format("Persisted: %s", store == 
null ? "N/A" : store.getTotalSize());
+                       }
+               };
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/StandardDebugPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/StandardDebugPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/StandardDebugPanel.java
index c88499e..921b009 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/StandardDebugPanel.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/StandardDebugPanel.java
@@ -50,7 +50,7 @@ public abstract class StandardDebugPanel extends DevUtilsPanel
        protected void onInitialize()
        {
                super.onInitialize();
-               BookmarkablePageLink<Void> link = createLink("link");
+               WebMarkupContainer link = createLink("link");
                add(link);
                ResourceReference img = getImageResourceReference();
                if (img == null)
@@ -64,7 +64,7 @@ public abstract class StandardDebugPanel extends DevUtilsPanel
                link.add(new Label("data", getDataModel()));
        }
 
-       protected BookmarkablePageLink<Void> createLink(final String id)
+       protected WebMarkupContainer createLink(final String id)
        {
                return new BookmarkablePageLink<>(id, getLinkPageClass(), 
getLinkPageParameters());
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugDiskDataStore.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugDiskDataStore.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugDiskDataStore.java
deleted file mode 100644
index 9c3d882..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugDiskDataStore.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.pageStore.DiskDataStore;
-import org.apache.wicket.pageStore.PageWindowManager;
-import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
-import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- * An extension of {@link DiskDataStore} that is able to browse the content of 
the file storage.
- * <p>
- * To enable it add in YourApplication#init():
- * 
- * <pre>
- * <code>
- * DebugDiskDataStore.register(this);
- * </code>
- * </pre>
- * 
- * </p>
- * <p>
- * The data can be browsed at: <em>/wicket/internal/debug/diskDataStore</em>
- */
-public class DebugDiskDataStore extends DiskDataStore
-{
-
-       /**
-        * Construct.
-        * 
-        * @param applicationName
-        * @param fileStoreFolder
-        * @param maxSizePerSession
-        */
-       public DebugDiskDataStore(String applicationName, File fileStoreFolder, 
Bytes maxSizePerSession)
-       {
-               super(applicationName, fileStoreFolder, maxSizePerSession);
-
-       }
-
-       /**
-        * 
-        * @param sessionId
-        * @param count
-        * @return a list of the last N page windows
-        */
-       public List<PageWindow> getLastPageWindows(String sessionId, int count)
-       {
-               List<PageWindow> pageWindows = new ArrayList<>();
-
-               SessionEntry sessionEntry = getSessionEntry(sessionId, false);
-               if (sessionEntry != null)
-               {
-                       PageWindowManager windowManager = 
sessionEntry.getManager();
-                       
pageWindows.addAll(windowManager.getLastPageWindows(count));
-               }
-               return pageWindows;
-       }
-
-       @Override
-       public File getStoreFolder()
-       {
-               return super.getStoreFolder();
-       }
-
-       /**
-        * Configures the page manager provider and mounts the page at
-        * <em>wicket/internal/debug/diskDataStore</em>
-        * 
-        * @param application
-        */
-       public static void register(final Application application)
-       {
-               application.setPageManagerProvider(new 
DebugPageManagerProvider(application));
-
-               
((WebApplication)application).mountPage("wicket/internal/debug/diskDataStore",
-                       DiskStoreBrowserPage.class);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugPageManagerProvider.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugPageManagerProvider.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugPageManagerProvider.java
deleted file mode 100644
index 7893638..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DebugPageManagerProvider.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore;
-
-import java.io.File;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.DefaultPageManagerProvider;
-import org.apache.wicket.pageStore.DiskDataStore;
-import org.apache.wicket.pageStore.IDataStore;
-import org.apache.wicket.settings.StoreSettings;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- */
-public class DebugPageManagerProvider extends DefaultPageManagerProvider
-{
-
-       private DebugDiskDataStore dataStore;
-
-       /**
-        * Construct.
-        * 
-        * @param application
-        */
-       public DebugPageManagerProvider(Application application)
-       {
-               super(application);
-       }
-
-       /**
-        * @return the extended with debug information {@link DiskDataStore}
-        */
-       public DebugDiskDataStore getDataStore()
-       {
-               return dataStore;
-       }
-
-       @Override
-       protected IDataStore newDataStore()
-       {
-               StoreSettings storeSettings = application.getStoreSettings();
-               File fileStoreFolder = storeSettings.getFileStoreFolder();
-               Bytes maxSizePerSession = storeSettings.getMaxSizePerSession();
-               dataStore = new DebugDiskDataStore(application.getName(), 
fileStoreFolder,
-                       maxSizePerSession);
-               return dataStore;
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.html
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.html
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.html
deleted file mode 100644
index 307884c..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
-       
-       <head>
-               <title>Debug DiskDataStore page</title>
-       </head>
-       
-       <body>
-
-        <div wicket:id="tree">default</div>    
- 
-       </body>
-       
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.java
deleted file mode 100644
index 066f9e6..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/DiskStoreBrowserPage.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.devutils.diskstore.browser.BrowserPanel;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-/**
- * A page that shows the attributes (id, name, size) of the pages stored in 
the data stores.
- */
-public class DiskStoreBrowserPage extends WebPage
-{
-
-       /**
-        * Construct.
-        * 
-        * @param parameters
-        *            the request parameters
-        */
-       public DiskStoreBrowserPage(final PageParameters parameters)
-       {
-               super(parameters);
-
-               Component tree;
-// tree = new LabelTree("tree", new PageWindowModel(sessionId, dataStore));
-               tree = new BrowserPanel("tree");
-               add(tree);
-       }
-
-       @Override
-       public boolean isVersioned()
-       {
-               return false;
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.html
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.html
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.html
new file mode 100644
index 0000000..307884c
--- /dev/null
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
+       
+       <head>
+               <title>Debug DiskDataStore page</title>
+       </head>
+       
+       <body>
+
+        <div wicket:id="tree">default</div>    
+ 
+       </body>
+       
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.java
new file mode 100644
index 0000000..c5c52aa
--- /dev/null
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageStorePage.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.devutils.diskstore;
+
+import org.apache.wicket.Session;
+import org.apache.wicket.devutils.diskstore.browser.BrowserPanel;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.pageStore.DelegatingPageStore;
+import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.pageStore.IPersistentPageStore;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+/**
+ * A page that shows the attributes (id, name, size) of the pages stored in 
the data stores.
+ */
+public class PageStorePage extends WebPage
+{
+
+       /**
+        * Construct.
+        * 
+        * @param parameters
+        *            the request parameters
+        */
+       public PageStorePage(final PageParameters parameters)
+       {
+               super(parameters);
+
+               add(new BrowserPanel("tree"));
+       }
+
+       @Override
+       public boolean isVersioned()
+       {
+               return false;
+       }
+       
+       public static IPersistentPageStore getPersistentPageStore() {
+               IPageStore store = 
Session.get().getPageManager().getPageStore();
+               while (true) {
+                       if (store instanceof IPersistentPageStore) {
+                               return (IPersistentPageStore)store;
+                       }
+                       
+                       if (store instanceof DelegatingPageStore) {
+                               store = 
((DelegatingPageStore)store).getDelegate();
+                       } else {
+                               break;
+                       }
+               }
+               
+               return null;
+       }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.html
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.html
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.html
index aba3252..c4ac731 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.html
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.html
@@ -18,11 +18,14 @@
 <html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
 
-    <h3>Active sessions</h3>
+    <h3>Persistent store</h3>
+    <span wicket:id="store"></span>
+    
+    <h3>Persisted sessions</h3>
     <select wicket:id="sessions"></select> <a wicket:id="currentSessionLink" 
title="Selects the current session">Current session</a>
 
-    <h3>Stored pages</h3> <a wicket:id="refresh" title="Refreshes the content 
of the table below">refresh</a>
-       <table wicket:id="table" border="1" cellpadding="3" 
cellspacing="1"></table>
+    <h3>Persisted pages</h3> <a wicket:id="refresh" title="Refreshes the 
content of the table below">refresh</a>
+       <table wicket:id="table"></table>
 
 </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
index 51cd5f7..6147fa8 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
@@ -20,15 +20,33 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
+import org.apache.wicket.PageReference;
+import org.apache.wicket.Session;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
+import org.apache.wicket.devutils.diskstore.PageStorePage;
+import org.apache.wicket.devutils.inspector.InspectorPage;
+import 
org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import 
org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
+import 
org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import 
org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.pageStore.DefaultPageContext;
+import org.apache.wicket.pageStore.IPageContext;
+import org.apache.wicket.pageStore.IPersistedPage;
+import org.apache.wicket.pageStore.IPersistentPageStore;
 import org.apache.wicket.util.time.Duration;
 
 /**
@@ -47,10 +65,24 @@ public class BrowserPanel extends Panel
        {
                super(id);
 
+               final Label storeLabel = new Label("store", () -> {
+                       IPersistentPageStore store = 
PageStorePage.getPersistentPageStore();
+                       
+                       if (store == null) {
+                               return "N/A";
+                       }
+                       
+                       return String.format("%s - %s", 
store.getClass().getName(), store.getTotalSize());
+               });
+               storeLabel.setOutputMarkupId(true);
+               add(storeLabel);
+               
                final DropDownChoice<String> sessionsSelector = 
createSessionsSelector("sessions");
+               sessionsSelector.setOutputMarkupId(true);
                add(sessionsSelector);
 
-               final BrowserTable table = createTable("table", 
sessionsSelector.getModel());
+               final DataTable<IPersistedPage, String> table = 
createTable("table", sessionsSelector.getModel());
+               table.setOutputMarkupId(true);
                add(table);
 
                AjaxFallbackLink<Void> refreshLink = new 
AjaxFallbackLink<Void>("refresh")
@@ -68,7 +100,7 @@ public class BrowserPanel extends Panel
                        @Override
                        public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               
sessionsSelector.setModelObject(getCurrentSession().getObject());
+                               
sessionsSelector.setModelObject(getCurrentSessionIdentifier());
                                targetOptional.ifPresent(target -> 
target.add(sessionsSelector, table));
                        }
 
@@ -86,6 +118,18 @@ public class BrowserPanel extends Panel
                        @Override
                        protected void onUpdate(AjaxRequestTarget target)
                        {
+                               target.add(storeLabel);
+                               target.add(sessionsSelector);
+                               target.add(table);
+                       }
+               });
+
+               add(new AbstractAjaxTimerBehavior(Duration.seconds(5)) {
+
+                       @Override
+                       protected void onTimer(AjaxRequestTarget target)
+                       {
+                               target.add(storeLabel);
                                target.add(table);
                        }
                });
@@ -93,40 +137,65 @@ public class BrowserPanel extends Panel
 
        private DropDownChoice<String> createSessionsSelector(String id)
        {
-               IModel<String> defaultSession = getCurrentSession();
-
                DropDownChoice<String> sessionsSelector = new 
DropDownChoice<String>("sessions",
-                       defaultSession, new SessionsProviderModel());
-
+                       Model.of(getCurrentSessionIdentifier()), new 
SessionIdentifiersModel());
 
                return sessionsSelector;
        }
 
-       private IModel<String> getCurrentSession()
+       private String getCurrentSessionIdentifier()
        {
-               return Model.of(getSession().getId());
+               IPersistentPageStore store = 
PageStorePage.getPersistentPageStore();
+               if (store == null) {
+                       return null;
+               }
+
+               IPageContext context = new DefaultPageContext(Session.get());
+               
+               return store.getSessionIdentifier(context);
        }
 
-       private BrowserTable createTable(String id, IModel<String> sessionId)
+       private DataTable<IPersistedPage, String> createTable(String id, 
IModel<String> sessionId)
        {
-               PageWindowProvider provider = new PageWindowProvider(sessionId);
-
-               List<IColumn<PageWindowDescription, String>> columns = new 
ArrayList<>();
-
-               PageWindowColumn pageIdColumn = new 
PageWindowColumn(Model.of("Id"), "id");
-               columns.add(pageIdColumn);
+               PersistedPagesProvider provider = new 
PersistedPagesProvider(sessionId);
 
-               PageWindowColumn pageNameColumn = new 
PageWindowColumn(Model.of("Name"), "name");
-               columns.add(pageNameColumn);
+               List<IColumn<IPersistedPage, String>> columns = new 
ArrayList<>();
 
-               PageWindowColumn pageSizeColumn = new 
PageWindowColumn(Model.of("Size"), "size");
-               columns.add(pageSizeColumn);
+               columns.add(new AbstractColumn<IPersistedPage, 
String>(Model.of("Id"), "pageId")
+               {
+                       @Override
+                       public void 
populateItem(Item<ICellPopulator<IPersistedPage>> cellItem, String componentId, 
IModel<IPersistedPage> rowModel)
+                       {
+                               cellItem.add(new 
Link<IPersistedPage>(componentId, rowModel)
+                               {
+                                       @Override
+                                       protected void 
onComponentTag(ComponentTag tag)
+                                       {
+                                               tag.setName("a");
+                                               
+                                               super.onComponentTag(tag);
+                                       }
+                                       
+                                       @Override
+                                       public void 
onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
+                                       {
+                                               
replaceComponentTagBody(markupStream, openTag, "" + 
getModelObject().getPageId());
+                                       }
+                                       
+                                       @Override
+                                       public void onClick()
+                                       {
+                                               setResponsePage(new 
InspectorPage(new PageReference(getModelObject().getPageId())));
+                                       }
+                               });
+                       }
+               });
+               columns.add(new PropertyColumn<>(Model.of("Type"), "pageType", 
"pageType"));
+               columns.add(new PropertyColumn<>(Model.of("Size"), "pageSize", 
"pageSize"));
 
-               BrowserTable browserTable = new BrowserTable(id, columns, 
provider);
+               DefaultDataTable<IPersistedPage, String> browserTable = new 
DefaultDataTable<>(id, columns, provider, 20);
                browserTable.setOutputMarkupId(true);
 
-               browserTable.add(new 
AjaxSelfUpdatingTimerBehavior(Duration.seconds(5)));
-
                return browserTable;
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
deleted file mode 100644
index 264d88a..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import java.util.List;
-
-import 
org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-
-/**
- * A data table that shows the attributes of the recently stored pages in the 
data store. The last
- * used pages are rendered first.
- */
-class BrowserTable extends DefaultDataTable<PageWindowDescription, String>
-{
-
-       /**
-        * Construct.
-        * 
-        * @param id
-        *            the component id
-        * @param columns
-        *            the columns that show the page attributes
-        * @param provider
-        *            the provider of page descriptions
-        */
-       public BrowserTable(String id, List<IColumn<PageWindowDescription, 
String>> columns,
-               PageWindowProvider provider)
-       {
-               super(id, columns, provider, 20);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/DataStoreHelper.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/DataStoreHelper.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/DataStoreHelper.java
deleted file mode 100644
index ff4bf67..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/DataStoreHelper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.devutils.diskstore.DebugDiskDataStore;
-import org.apache.wicket.devutils.diskstore.DebugPageManagerProvider;
-
-/**
- * A helper to work with {@link DebugDiskDataStore}
- */
-public final class DataStoreHelper
-{
-
-       private DataStoreHelper()
-       {
-       }
-
-       /**
-        * @return the configured {@link DebugDiskDataStore}
-        */
-       public static DebugDiskDataStore getDataStore()
-       {
-               DebugPageManagerProvider pageManagerProvider = 
(DebugPageManagerProvider)Application.get()
-                       .getPageManagerProvider();
-               DebugDiskDataStore dataStore = 
pageManagerProvider.getDataStore();
-               return dataStore;
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowColumn.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowColumn.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowColumn.java
deleted file mode 100644
index ea21877..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowColumn.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.devutils.diskstore.DebugDiskDataStore;
-import org.apache.wicket.devutils.diskstore.DebugPageManagerProvider;
-import 
org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import 
org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.serialize.ISerializer;
-
-/**
- * A column that shows the page attributes (id, name, size)
- */
-class PageWindowColumn extends PropertyColumn<PageWindowDescription, String>
-{
-       /**
-        * Construct.
-        * 
-        * @param displayModel
-        *            the header
-        * @param propertyExpression
-        *            the page attribute
-        */
-       public PageWindowColumn(IModel<String> displayModel, String 
propertyExpression)
-       {
-               super(displayModel, propertyExpression);
-       }
-
-       @Override
-       public void populateItem(Item<ICellPopulator<PageWindowDescription>> 
cellItem,
-               String componentId, IModel<PageWindowDescription> rowModel)
-       {
-               String label;
-               PageWindowDescription windowDescription = rowModel.getObject();
-               if ("name".equals(getPropertyExpression()))
-               {
-                       int pageId = windowDescription.getId();
-                       DebugPageManagerProvider pageManagerProvider = 
(DebugPageManagerProvider)Application.get()
-                               .getPageManagerProvider();
-                       DebugDiskDataStore dataStore = 
pageManagerProvider.getDataStore();
-                       String sessionId = windowDescription.getSessionId();
-                       byte[] data = dataStore.getData(sessionId, pageId);
-                       ISerializer serializer = 
Application.get().getFrameworkSettings().getSerializer();
-                       Object page = serializer.deserialize(data);
-                       label = page.getClass().getName();
-               }
-               else if ("id".equals(getPropertyExpression()))
-               {
-                       label = Integer.toString(windowDescription.getId());
-               }
-               else if ("size".equals(getPropertyExpression()))
-               {
-                       label = Integer.toString(windowDescription.getSize());
-               }
-               else
-               {
-                       label = "unknown: " + getPropertyExpression();
-               }
-
-               cellItem.add(new Label(componentId, label));
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowDescription.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowDescription.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowDescription.java
deleted file mode 100644
index b07c005..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowDescription.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * A serializable representation of the page information
- */
-class PageWindowDescription implements IClusterable
-{
-       /** the page id */
-       private final int id;
-
-       /** the page size */
-       private final int size;
-
-       /** the id of the session for which this page has been used */
-       private final String sessionId;
-
-       PageWindowDescription(PageWindow pageWindow, String sessionId)
-       {
-               id = pageWindow.getPageId();
-               size = pageWindow.getFilePartSize();
-               this.sessionId = sessionId;
-       }
-
-       public String getSessionId()
-       {
-               return sessionId;
-       }
-
-       public int getId()
-       {
-               return id;
-       }
-
-       public int getSize()
-       {
-               return size;
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
deleted file mode 100644
index dd8397c..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.wicket.devutils.diskstore.DebugDiskDataStore;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState;
-import 
org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
-import org.apache.wicket.markup.repeater.data.IDataProvider;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
-
-/**
- * An {@link IDataProvider} that extracts the information about the stored 
pages
- */
-class PageWindowProvider implements 
ISortableDataProvider<PageWindowDescription, String>
-{
-       private static final int MAX_PAGES_TO_READ = 1000;
-
-       /**
-        * The model that brings the currently selected session id
-        */
-       private final IModel<String> sessionId;
-
-       PageWindowProvider(final IModel<String> sessionId)
-       {
-               this.sessionId = sessionId;
-       }
-
-       @Override
-       public Iterator<? extends PageWindowDescription> iterator(long first, 
long count)
-       {
-               List<PageWindow> lastPageWindows = getPageWindows();
-               List<PageWindow> subList = lastPageWindows.subList((int)first, 
(int)(first + count));
-               List<PageWindowDescription> pageDescriptions = new 
ArrayList<>();
-               for (PageWindow pw : subList)
-               {
-                       pageDescriptions.add(new PageWindowDescription(pw, 
sessionId.getObject()));
-               }
-
-               return pageDescriptions.iterator();
-       }
-
-       private List<PageWindow> getPageWindows()
-       {
-               List<PageWindow> lastPageWindows = new ArrayList<>();
-               if (sessionId != null && sessionId.getObject() != null)
-               {
-                       String sessId = sessionId.getObject();
-                       DebugDiskDataStore dataStore = 
DataStoreHelper.getDataStore();
-                       List<PageWindow> pageWindows = 
dataStore.getLastPageWindows(sessId, MAX_PAGES_TO_READ);
-                       lastPageWindows.addAll(pageWindows);
-               }
-               return lastPageWindows;
-       }
-
-       @Override
-       public long size()
-       {
-               return getPageWindows().size();
-       }
-
-       /**
-        * @param description
-        * 
-        *            {@inheritDoc}
-        */
-       @Override
-       public IModel<PageWindowDescription> model(PageWindowDescription 
description)
-       {
-               return new Model<>(description);
-       }
-
-       @Override
-       public void detach()
-       {
-               sessionId.detach();
-       }
-
-       /*
-        * No sort state for now. The provider is ISortableDataProvider just 
because we use
-        * DefaultDataTable
-        */
-       @Override
-       public ISortState<String> getSortState()
-       {
-               return null;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PersistedPagesProvider.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PersistedPagesProvider.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PersistedPagesProvider.java
new file mode 100644
index 0000000..a93e60f
--- /dev/null
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PersistedPagesProvider.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.devutils.diskstore.browser;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.wicket.core.util.lang.PropertyResolver;
+import org.apache.wicket.devutils.diskstore.PageStorePage;
+import 
org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.pageStore.IPersistedPage;
+import org.apache.wicket.pageStore.IPersistentPageStore;
+import org.apache.wicket.util.lang.Objects;
+
+/**
+ * An {@link IDataProvider} that extracts the information about {@link 
IPersistedPage}s.
+ */
+class PersistedPagesProvider extends SortableDataProvider<IPersistedPage, 
String>
+{
+       /**
+        * The model that brings the currently selected session id
+        */
+       private final IModel<String> sessionId;
+
+       private List<IPersistedPage> pages;
+
+       PersistedPagesProvider(final IModel<String> sessionId)
+       {
+               this.sessionId = sessionId;
+       }
+
+       @Override
+       public Iterator<? extends IPersistedPage> iterator(long first, long 
count)
+       {
+               List<IPersistedPage> pages = getPages();
+
+               if (getSort() != null) {
+                       Collections.sort(pages, new SortComparator());
+               }
+
+               return pages.iterator();
+       }
+
+       private List<IPersistedPage> getPages()
+       {
+               if (pages == null)
+               {
+                       pages = new ArrayList<>();
+
+                       if (sessionId.getObject() != null)
+                       {
+                               String sessId = sessionId.getObject();
+
+                               IPersistentPageStore dataStore = 
PageStorePage.getPersistentPageStore();
+
+                               if (dataStore != null)
+                               {
+                                       
pages.addAll(dataStore.getPersistentPages(sessId));
+                               }
+                       }
+               }
+
+               return pages;
+       }
+
+       @Override
+       public long size()
+       {
+               return getPages().size();
+       }
+
+       /**
+        * @param description
+        * 
+        *            {@inheritDoc}
+        */
+       @Override
+       public IModel<IPersistedPage> model(IPersistedPage description)
+       {
+               return new Model<>(description);
+       }
+
+       @Override
+       public void detach()
+       {
+               sessionId.detach();
+
+               pages = null;
+       }
+
+       private class SortComparator implements Comparator<IPersistedPage>
+       {
+
+               @Override
+               public int compare(IPersistedPage page0, IPersistedPage page1)
+               {
+                       Object value0 = 
PropertyResolver.getValue(getSort().getProperty(), page0);
+                       Object value1 = 
PropertyResolver.getValue(getSort().getProperty(), page1);
+
+                       int c = Objects.compareWithConversion(value0, value1);
+
+                       if (getSort().isAscending() == false)
+                       {
+                               c = c * -1;
+                       }
+
+                       return c;
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionIdentifiersModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionIdentifiersModel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionIdentifiersModel.java
new file mode 100644
index 0000000..5a39804
--- /dev/null
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionIdentifiersModel.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.devutils.diskstore.browser;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.wicket.Session;
+import org.apache.wicket.devutils.diskstore.PageStorePage;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.pageStore.DefaultPageContext;
+import org.apache.wicket.pageStore.DiskPageStore;
+import org.apache.wicket.pageStore.IPageContext;
+import org.apache.wicket.pageStore.IPersistentPageStore;
+
+/**
+ * A model that collects the keys from the {@link DiskPageStore} folder
+ */
+public class SessionIdentifiersModel extends 
LoadableDetachableModel<List<String>>
+{
+
+       @Override
+       protected List<String> load()
+       {
+               IPersistentPageStore store = 
PageStorePage.getPersistentPageStore();
+               if (store == null)
+               {
+                       return Collections.emptyList();
+               }
+
+               ArrayList<String> identifiers = new 
ArrayList<>(store.getSessionIdentifiers());
+
+               IPageContext context = new DefaultPageContext(Session.get());
+               String current = store.getSessionIdentifier(context);
+               if (identifiers.contains(current) == false)
+               {
+                       // identifiers of the store seem no to match their 
sessions ids,
+                       // thus add the default identifier so the select works 
properly  
+                       identifiers.add(current);
+               }
+
+               return identifiers;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionsProviderModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionsProviderModel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionsProviderModel.java
deleted file mode 100644
index 6638303..0000000
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/SessionsProviderModel.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore.browser;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.devutils.diskstore.DebugDiskDataStore;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.pageStore.DiskDataStore;
-
-/**
- * A model that collects the session ids from the {@link DiskDataStore} folder
- */
-public class SessionsProviderModel extends 
LoadableDetachableModel<List<String>>
-{
-
-       @Override
-       protected List<String> load()
-       {
-               List<String> sessionIds = new ArrayList<>();
-               if (Application.exists())
-               {
-                       DebugDiskDataStore dataStore = 
DataStoreHelper.getDataStore();
-                       File appStoreFolder = dataStore.getStoreFolder();
-                       if (appStoreFolder.isDirectory())
-                       {
-                               String[] sessionIdFileNames = 
appStoreFolder.list();
-                               if (sessionIdFileNames != null)
-                               {
-                                       for (String sessionId : 
sessionIdFileNames)
-                                       {
-                                               sessionIds.add(sessionId);
-                                       }
-                               }
-                       }
-               }
-
-               return sessionIds;
-       }
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
index 50856ed..fef1826 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
@@ -86,42 +86,13 @@ public final class EnhancedPageView extends 
GenericPanel<Page>
         * 
         * @param id
         *            See Component
-        * @param page
+        * @param model
         *            The page to be analyzed
         */
-       public EnhancedPageView(String id, Page page)
+       public EnhancedPageView(String id, IModel<Page> model)
        {
-               this(id, getModelFor(page == null ? null : 
page.getPageReference()));
-       }
-
-       private static IModel<Page> getModelFor(final PageReference pageRef)
-       {
-               return new LoadableDetachableModel<Page>()
-               {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected Page load()
-                       {
-                               if (pageRef == null)
-                                       return null;
-                               Page page = pageRef.getPage();
-                               return page;
-                       }
-               };
-       }
-
-       /**
-        * Constructor.
-        * 
-        * @param id
-        *            See Component
-        * @param pageModel
-        *            The page to be analyzed
-        */
-       public EnhancedPageView(String id, IModel<Page> pageModel)
-       {
-               super(id, pageModel);
+               super(id, model);
+               
                expandState = new ExpandState();
                expandState.expandAll();
                showStatefulAndParentsOnly = false;

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/InspectorPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/InspectorPage.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/InspectorPage.java
index 023583d..0ab7837 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/InspectorPage.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/InspectorPage.java
@@ -18,15 +18,15 @@ package org.apache.wicket.devutils.inspector;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
 import org.apache.wicket.Session;
 import org.apache.wicket.devutils.DevUtilsPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.image.Image;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.util.string.StringValueConversionException;
 
 
 /**
@@ -47,23 +47,19 @@ public final class InspectorPage extends DevUtilsPage
         */
        public InspectorPage(final PageParameters parameters)
        {
+               this(new PageReference(parameters.get("pageId").toInt()));
+       }
+
+       public InspectorPage(PageReference reference)
+       {
                add(new ApplicationView("application", Application.get()));
                add(new SessionView("session", Session.get()));
-               IManageablePage page = null;
-               try
-               {
-                       final int pageId = parameters.get("pageId").toInt();
-                       page = Session.get().getPageManager().getPage(pageId);
-               }
-               catch (StringValueConversionException e)
-               {
-                       // Ignore
-               }
-               catch (NullPointerException e)
-               {
-                       // Ignore
-               }
-               add(new EnhancedPageView("page", (Page)page));
+               
+               IModel<Page> page = () -> {
+                       return reference.getPage();
+               };
+               
+               add(new EnhancedPageView("page", page));
                add(new Image("bug", new 
PackageResourceReference(InspectorPage.class, "bug.png")));
                add(new BookmarkablePageLink<>("allsessions", 
LiveSessionsPage.class));
                add(new Label("wicketVersion", 
getApplication().getFrameworkSettings().getVersion()));

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
index 3896404..f557a59 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.examples.frames;
 
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.request.IRequestHandler;
 
 
 /**
@@ -41,7 +41,7 @@ public class BodyFrame extends WebPage
        {
                // create a new page instance, passing this 'master page' as an 
argument
                LeftFrame leftFrame = new LeftFrame(this);
-               getSession().getPageManager().touchPage(leftFrame);
+               getSession().getPageManager().addPage(leftFrame);
                // get the url to that page
                IRequestHandler leftFrameHandler = new 
RenderPageRequestHandler(new PageProvider(leftFrame));
                // and create a simple component that modifies it's src 
attribute to

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-examples/src/test/java/org/apache/wicket/examples/StartExamples.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/test/java/org/apache/wicket/examples/StartExamples.java 
b/wicket-examples/src/test/java/org/apache/wicket/examples/StartExamples.java
index 18e6c26..9f08961 100644
--- 
a/wicket-examples/src/test/java/org/apache/wicket/examples/StartExamples.java
+++ 
b/wicket-examples/src/test/java/org/apache/wicket/examples/StartExamples.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.examples;
 
+import java.io.File;
 import java.lang.management.ManagementFactory;
 
 import javax.management.MBeanServer;
@@ -28,6 +29,8 @@ import org.eclipse.jetty.server.SecureRequestCustomizer;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.SslConnectionFactory;
+import org.eclipse.jetty.server.session.DefaultSessionCache;
+import org.eclipse.jetty.server.session.FileSessionDataStore;
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.eclipse.jetty.webapp.WebAppContext;
@@ -97,12 +100,18 @@ public class StartExamples
                bb.setContextPath("/");
                bb.setWar("src/main/webapp");
 
+               // uncomment next lines if you want to test with session 
persistence
+//             DefaultSessionCache sessionCache = new 
DefaultSessionCache(bb.getSessionHandler());
+//             FileSessionDataStore sessionStore = new FileSessionDataStore();
+//             sessionStore.setStoreDir(new File("./jetty-session-data"));
+//             sessionCache.setSessionDataStore(sessionStore);
+//             bb.getSessionHandler().setSessionCache(sessionCache);
+               
                ServerContainer serverContainer = 
WebSocketServerContainerInitializer.configureContext(bb);
                serverContainer.addEndpoint(new WicketServerEndpointConfig());
 
                // uncomment next line if you want to test with JSESSIONID 
encoded in the urls
-               // ((AbstractSessionManager)
-               // 
bb.getSessionHandler().getSessionManager()).setUsingCookies(false);
+//             ((AbstractSessionManager) 
bb.getSessionHandler().getSessionManager()).setUsingCookies(false);
 
                server.setHandler(bb);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
index a8a70ef..8302650 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.extensions.ajax.markup.html.modal;
 
-import com.github.openjson.JSONObject;
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
@@ -45,6 +44,8 @@ import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.util.lang.EnumeratedType;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 
+import com.github.openjson.JSONObject;
+
 /**
  * Modal window component.
  * <p>
@@ -1043,7 +1044,7 @@ public class ModalWindow extends Panel
                        CharSequence pageUrl;
                        RequestCycle requestCycle = RequestCycle.get();
 
-                       page.getSession().getPageManager().touchPage(page);
+                       page.getSession().getPageManager().addPage(page);
                        if (page.isPageStateless())
                        {
                                pageUrl = requestCycle.urlFor(page.getClass(), 
page.getPageParameters());

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
----------------------------------------------------------------------
diff --git 
a/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java 
b/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
index 7f40a26..4e18730 100644
--- a/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
@@ -16,8 +16,7 @@
  */
 package org.apache.wicket.jmx;
 
-import org.apache.wicket.pageStore.DiskDataStore;
-import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.pageStore.DiskPageStore;
 
 /**
  * JMX MBean for Application's StoreSettings
@@ -26,19 +25,13 @@ public interface StoreSettingsMBean
 {
 
        /**
-        * @return the number of page instances which will be stored in the 
http session for faster
-        *         retrieval
-        */
-       int getInmemoryCacheSize();
-
-       /**
-        * @return maximum page size. After this size is exceeded, the {@link 
DiskDataStore} will start
+        * @return maximum page size. After this size is exceeded, the {@link 
DiskPageStore} will start
         *         saving the pages at the beginning of file.
         */
        long getMaxSizePerSession();
 
        /**
-        * @return the location of the folder where {@link DiskDataStore} will 
store the files with page
+        * @return the location of the folder where {@link DiskPageStore} will 
store the files with page
         *         instances per session
         */
        String getFileStoreFolder();

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-jmx/src/main/java/org/apache/wicket/jmx/wrapper/StoreSettings.java
----------------------------------------------------------------------
diff --git 
a/wicket-jmx/src/main/java/org/apache/wicket/jmx/wrapper/StoreSettings.java 
b/wicket-jmx/src/main/java/org/apache/wicket/jmx/wrapper/StoreSettings.java
index 9a658fd..b40793e 100644
--- a/wicket-jmx/src/main/java/org/apache/wicket/jmx/wrapper/StoreSettings.java
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/wrapper/StoreSettings.java
@@ -37,12 +37,6 @@ public class StoreSettings implements StoreSettingsMBean
        }
 
        @Override
-       public int getInmemoryCacheSize()
-       {
-               return application.getStoreSettings().getInmemoryCacheSize();
-       }
-
-       @Override
        public long getMaxSizePerSession()
        {
                return 
application.getStoreSettings().getMaxSizePerSession().bytes();

http://git-wip-us.apache.org/repos/asf/wicket/blob/bcf76f51/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
----------------------------------------------------------------------
diff --git 
a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
 
b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
index ca3569d..d3c9d4f 100644
--- 
a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
+++ 
b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
@@ -300,7 +300,7 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
                        {
                                if (Session.exists())
                                {
-                                       
Session.get().getPageManager().commitRequest();
+                                       Session.get().getPageManager().detach();
                                }
                        }
                });

Reply via email to