Author: knopp
Date: Mon Apr  6 11:20:48 2009
New Revision: 762279

URL: http://svn.apache.org/viewvc?rev=762279&view=rev
Log: (empty)

Added:
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java
   (contents, props changed)
      - copied, changed from r762271, 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/AbstractPageManager.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java
   (with props)
Removed:
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/AbstractPageManager.java
Modified:
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Session.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PersistentPageManager.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/SessionStore.java

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
 Mon Apr  6 11:20:48 2009
@@ -62,6 +62,7 @@
                                RequestCycle.get().setResponsePage(new 
TestPage2());
                        }
                };
+       //      l3.setBookmarkable(true);
                l3.setLabel("Link 3 - Go to Test Page 2 - Not mounted, Not 
bookmarkable");
                add(l3);
                

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
 Mon Apr  6 11:20:48 2009
@@ -59,6 +59,8 @@
 
        public void destroy()
        {
+               pageManager.destroy();
+               sessionStore.destroy();
                applications.remove(name);
        }
 

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Session.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Session.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Session.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Session.java
 Mon Apr  6 11:20:48 2009
@@ -73,22 +73,23 @@
                return getSessionStore().getSessionId(getRequest(), false);
        }
        
-       public void hasBeenBound()
+       
+       public void bind()
        {
-               if (temporarySessionAttributes != null)
+               if (isTemporary())
                {
-                       for (Map.Entry<String, Serializable> entry : 
temporarySessionAttributes.entrySet())
+                       getSessionStore().getSessionId(getRequest(), true);
+                       getSessionStore().bind(getRequest(), this);
+                       
+                       if (temporarySessionAttributes != null)
                        {
-                               getSessionStore().setAttribute(getRequest(), 
entry.getKey(), entry.getValue());
+                               for (Map.Entry<String, Serializable> entry : 
temporarySessionAttributes.entrySet())
+                               {
+                                       
getSessionStore().setAttribute(getRequest(), entry.getKey(), entry.getValue());
+                               }
+                               temporarySessionAttributes = null;
                        }
-                       temporarySessionAttributes = null;
-               }
-       }
-       
-       public void bind()
-       {
-               getSessionStore().getSessionId(getRequest(), true);
-               getSessionStore().bind(getRequest(), this);
+               }               
        }
        
        protected void setAttribute(String name, Serializable value)

Copied: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java
 (from r762271, 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/AbstractPageManager.java)
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java?p2=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java&p1=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/AbstractPageManager.java&r1=762271&r2=762279&rev=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/AbstractPageManager.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java
 Mon Apr  6 11:20:48 2009
@@ -1,10 +1,9 @@
-package org.apache.wicket.page;
+package org.apache.wicket.page.common;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.page.PageManagerContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -25,6 +24,12 @@
        {
        }
        
+       protected abstract RequestAdapter newRequestAdapter(PageManagerContext 
context);
+
+       public abstract boolean supportsVersioning();
+       
+       public abstract void sessionExpired(String sessionId);
+       
        public void setContext(PageManagerContext context)
        {
                this.context = context;
@@ -34,139 +39,7 @@
        {
                return context;
        };
-
-       /**
-        * Request scoped helper class for {...@link PageManager}.
-        * 
-        * @author Matej Knopp
-        */
-       protected abstract class RequestAdapter
-       {
-               private final PageManagerContext context;
-
-               public RequestAdapter(PageManagerContext context)
-               {
-                       this.context = context;
-               }
-
-               /**
-                * Returns the page with specified id. The page is then cached 
by {...@link RequestAdapter}
-                * during the rest of request processing.
-                * 
-                * @param id
-                * @return page instance or <code>null</code> if the page does 
not exist.
-                */
-               protected abstract IPage getPage(int id);
-
-               /**
-                * Store the list of pages.
-                * 
-                * @param touchedPages
-                */
-               protected abstract void storeTouchedPages(List<IPage> 
touchedPages);
-               
-               /**
-                * Notification on new session being created.
-                */
-               protected abstract void newSessionCreated();
-
-               /**
-                * Bind the session
-                */
-               protected void bind()
-               {
-                       context.bind();
-               }               
-               
-               public void setSessionAttribute(String key, Serializable value)
-               {
-                       context.setSessionAttribute(key, value);
-               }
-
-               public Serializable getSessionAttribute(String key)
-               {
-                       return context.getSessionAttribute(key);
-               }
-
-               public String getSessionId()
-               {
-                       return context.getSessionId();
-               }
-
-               protected final IPage getPageInternal(int id)
-               {
-                       IPage page = findPage(id);
-                       if (page == null)
-                       {
-                               page = getPage(id);
-                       }
-                       if (page != null)
-                       {
-                               pages.add(page);        
-                       }                       
-                       return page;
-               }
-
-               private IPage findPage(int id)
-               {
-                       for (IPage page : pages)
-                       {
-                               if (page.getPageId() == id)
-                               {
-                                       return page;
-                               }
-                       }
-                       return null;
-               }
-
-               protected void touch(IPage page)
-               {
-                       if (findPage(page.getPageId()) == null)
-                       {
-                               pages.add(page);
-                       }
-                       for (IPage p : touchedPages)
-                       {
-                               if (p.getPageId() == page.getPageId())
-                               {
-                                       return;
-                               }
-                       }
-                       touchedPages.add(page);
-               }
-
-               protected void commitRequest()
-               {
-                       for (IPage page : pages)
-                       {
-                               try
-                               {
-                                       page.detach();
-                               }
-                               catch (Exception e)
-                               {
-                                       logger.error("Error detaching page", e);
-                               }
-                       }
-                       
-                       // store pages that are not stateless
-                       List<IPage> statefulPages = new 
ArrayList<IPage>(touchedPages.size());
-                       for (IPage page : touchedPages)
-                       {
-                               if (!page.isPageStateless())
-                               {
-                                       statefulPages.add(page);
-                               }
-                       }
-                       storeTouchedPages(statefulPages);
-               }
-
-               List<IPage> touchedPages = new ArrayList<IPage>();
-               List<IPage> pages = new ArrayList<IPage>();
-       };
-
-       protected abstract RequestAdapter newRequestAdapter(PageManagerContext 
context);
-
+       
        protected RequestAdapter getRequestAdapter()
        {
                RequestAdapter adapter = (RequestAdapter) 
getContext().getRequestData();
@@ -201,8 +74,6 @@
                adapter.newSessionCreated();
        }
 
-       public abstract boolean supportsVersioning();
-
        public void touchPage(IPage page)
        {
                if (!page.isPageStateless())
@@ -213,5 +84,5 @@
                adapter.touch(page);
        }
 
-       private static Logger logger = 
LoggerFactory.getLogger(AbstractPageManager.class);
+       static Logger logger = 
LoggerFactory.getLogger(AbstractPageManager.class);
 }

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/AbstractPageManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java?rev=762279&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java
 Mon Apr  6 11:20:48 2009
@@ -0,0 +1,139 @@
+package org.apache.wicket.page.common;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.page.PageManagerContext;
+
+/**
+ * Request scoped helper class for {...@link PageManager}.
+ * 
+ * @author Matej Knopp
+ */
+public abstract class RequestAdapter
+{
+       private final PageManagerContext context;
+
+       public RequestAdapter(PageManagerContext context)
+       {
+               this.context = context;
+       }
+
+       /**
+        * Returns the page with specified id. The page is then cached by 
{...@link RequestAdapter}
+        * during the rest of request processing.
+        * 
+        * @param id
+        * @return page instance or <code>null</code> if the page does not 
exist.
+        */
+       protected abstract IPage getPage(int id);
+
+       /**
+        * Store the list of pages.
+        * 
+        * @param touchedPages
+        */
+       protected abstract void storeTouchedPages(List<IPage> touchedPages);
+       
+       /**
+        * Notification on new session being created.
+        */
+       protected abstract void newSessionCreated();
+
+       /**
+        * Bind the session
+        */
+       protected void bind()
+       {
+               context.bind();
+       }               
+       
+       public void setSessionAttribute(String key, Serializable value)
+       {
+               context.setSessionAttribute(key, value);
+       }
+
+       public Serializable getSessionAttribute(String key)
+       {
+               return context.getSessionAttribute(key);
+       }
+
+       public String getSessionId()
+       {
+               return context.getSessionId();
+       }
+
+       protected final IPage getPageInternal(int id)
+       {
+               IPage page = findPage(id);
+               if (page == null)
+               {
+                       page = getPage(id);
+               }
+               if (page != null)
+               {
+                       pages.add(page);        
+               }                       
+               return page;
+       }
+
+       private IPage findPage(int id)
+       {
+               for (IPage page : pages)
+               {
+                       if (page.getPageId() == id)
+                       {
+                               return page;
+                       }
+               }
+               return null;
+       }
+
+       protected void touch(IPage page)
+       {
+               if (findPage(page.getPageId()) == null)
+               {
+                       pages.add(page);
+               }
+               for (IPage p : touchedPages)
+               {
+                       if (p.getPageId() == page.getPageId())
+                       {
+                               return;
+                       }
+               }
+               touchedPages.add(page);
+       }
+
+       protected void commitRequest()
+       {
+               for (IPage page : pages)
+               {
+                       try
+                       {
+                               page.detach();
+                       }
+                       catch (Exception e)
+                       {
+                               AbstractPageManager.logger.error("Error 
detaching page", e);
+                       }
+               }
+               
+               // store pages that are not stateless
+               List<IPage> statefulPages = new 
ArrayList<IPage>(touchedPages.size());
+               for (IPage page : touchedPages)
+               {
+                       if (!page.isPageStateless())
+                       {
+                               statefulPages.add(page);
+                       }
+               }
+               storeTouchedPages(statefulPages);
+       }
+
+       List<IPage> touchedPages = new ArrayList<IPage>();
+       List<IPage> pages = new ArrayList<IPage>();
+}
\ No newline at end of file

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/common/RequestAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PersistentPageManager.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PersistentPageManager.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PersistentPageManager.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PersistentPageManager.java
 Mon Apr  6 11:20:48 2009
@@ -8,23 +8,30 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.wicket.IPage;
-import org.apache.wicket.page.AbstractPageManager;
 import org.apache.wicket.page.PageManagerContext;
+import org.apache.wicket.page.common.AbstractPageManager;
+import org.apache.wicket.page.common.RequestAdapter;
 
 public class PersistentPageManager extends AbstractPageManager
 {
        private final PageStore pageStore;
        private final String applicationName;
-       
+
        public PersistentPageManager(String applicationName, PageStore 
pageStore)
        {
                this.applicationName = applicationName;
                this.pageStore = pageStore;
                managers.put(applicationName, this);
        }
-       
+
        private static Map<String, PersistentPageManager> managers = new 
ConcurrentHashMap<String, PersistentPageManager>();
 
+       /**
+        * Represents entry for single session. This is stored as session 
attribute and caches pages
+        * between requests.
+        * 
+        * @author Matej Knopp
+        */
        private static class SessionEntry implements Serializable
        {
                private static final long serialVersionUID = 1L;
@@ -48,6 +55,11 @@
                        return manager.pageStore;
                }
 
+               /**
+                * Add the page to cached pages if page with same id is not 
already there 
+                * 
+                * @param page
+                */
                private void addPage(IPage page)
                {
                        if (page != null)
@@ -62,8 +74,11 @@
                        }
                        pages.add(page);
                }
-               
-               
+
+               /**
+                * If the pages are stored in temporary state (after 
deserialization) this method
+                * convert them to list of "real" pages 
+                */
                private void convertAfterReadObjects()
                {
                        if (pages == null)
@@ -76,16 +91,19 @@
                                IPage page = getPageStore().convertToPage(o);
                                addPage(page);
                        }
-               
+
                        afterReadObject = null;
                }
 
                public synchronized IPage getPage(int id)
                {
+                       // check if pages are in deserialized state
                        if (afterReadObject != null && 
afterReadObject.isEmpty() == false)
                        {
                                convertAfterReadObjects();
                        }
+                       
+                       // try to find page with same id
                        if (pages != null)
                        {
                                for (IPage page : pages)
@@ -96,21 +114,26 @@
                                        }
                                }
                        }
+                       
+                       // not found, ask pagestore for the page
                        return getPageStore().getPage(sessionId, id);
                }
 
+               // set the list of pages to remember after the request
                public synchronized void setPages(List<IPage> pages)
                {
                        this.pages = new ArrayList<IPage>(pages);
                        afterReadObject = null;
-               }       
+               }
 
                private transient List<IPage> pages;
                private transient List<Object> afterReadObject;
-               
+
                private void writeObject(java.io.ObjectOutputStream s) throws 
IOException
                {
                        s.defaultWriteObject();
+                       
+                       // prepare for serialization and store the pages
                        List<Serializable> l = new ArrayList<Serializable>();
                        for (IPage p : pages)
                        {
@@ -118,23 +141,30 @@
                        }
                        s.writeObject(l);
                }
-               
+
                @SuppressWarnings("unchecked")
                private void readObject(java.io.ObjectInputStream s) throws 
IOException, ClassNotFoundException
                {
                        s.defaultReadObject();
-                       
+
                        List<Serializable> l = (List<Serializable>) 
s.readObject();
-                       
+
+                       // convert to temporary state after deserialization 
(will need to be processed
+                       // by convertAfterReadObject before the pages can be 
accessed)
                        for (Serializable ser : l)
                        {
                                
afterReadObject.add(getPageStore().restoreAfterSerialization(ser));
                        }
-                       
+
                        afterReadObject = new ArrayList<Object>();
                }
        };
 
+       /**
+        * {...@link RequestAdapter} for {...@link PersistentPageManager}
+        * 
+        * @author Matej Knopp
+        */
        protected class PersitentRequestAdapter extends RequestAdapter
        {
                public PersitentRequestAdapter(PageManagerContext context)
@@ -145,11 +175,12 @@
                @Override
                protected IPage getPage(int id)
                {
-                       SessionEntry entry = getSessionEntry(false);            
        
-                       IPage page = entry != null ? entry.getPage(id) : null;
-                       if (page != null)
+                       // try to get session entry for this session
+                       SessionEntry entry = getSessionEntry(false);
+                       
+                       if (entry != null)
                        {
-                               return page;
+                               return entry.getPage(id);
                        }
                        else
                        {
@@ -164,8 +195,8 @@
                        SessionEntry entry = (SessionEntry) 
getSessionAttribute(ATTRIBUTE_NAME);
                        if (entry == null && create)
                        {
-                               bind(); 
-                               entry = new SessionEntry(applicationName, 
getSessionId());                              
+                               bind();
+                               entry = new SessionEntry(applicationName, 
getSessionId());
                        }
                        if (entry != null)
                        {
@@ -181,6 +212,7 @@
                @Override
                protected void newSessionCreated()
                {
+                       // if the session is not temporary bind a session entry 
to it
                        if (getSessionId() != null)
                        {
                                getSessionEntry(true);
@@ -222,6 +254,6 @@
        public void destroy()
        {
                managers.remove(applicationName);
-       }       
+       }
 
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
 Mon Apr  6 11:20:48 2009
@@ -158,9 +158,7 @@
                                        applicationKey, httpSession.getId()));
        
                        // register the session object itself
-                       setAttribute(request, SESSION_ATTRIBUTE_NAME, 
newSession);
-                       
-                       newSession.hasBeenBound();
+                       setAttribute(request, SESSION_ATTRIBUTE_NAME, 
newSession);                      
                }
        }
 

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/SessionStore.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/SessionStore.java?rev=762279&r1=762278&r2=762279&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/SessionStore.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/SessionStore.java
 Mon Apr  6 11:20:48 2009
@@ -27,6 +27,8 @@
 
 /**
  * The actual store that is used by {...@link org.apache.wicket.Session} to 
store its attributes.
+ * <p>
+ * This class is intended for internal framework use.
  * 
  * @author Eelco Hillenius
  * @author Johan Compagner


Reply via email to