Author: knopp
Date: Mon Apr  6 11:46:19 2009
New Revision: 762292

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

Modified:
    
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/protocol/http/WebApplication.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/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=762292&r1=762291&r2=762292&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:46:19 2009
@@ -6,20 +6,23 @@
 
 import org.apache.wicket.application.ClassResolver;
 import org.apache.wicket.application.DefaultClassResolver;
-import org.apache.wicket.page.PageManagerContext;
 import org.apache.wicket.page.PageManager;
+import org.apache.wicket.page.PageManagerContext;
 import org.apache.wicket.page.persistent.DataStore;
 import org.apache.wicket.page.persistent.DefaultPageStore;
 import org.apache.wicket.page.persistent.PageStore;
 import org.apache.wicket.page.persistent.PersistentPageManager;
 import org.apache.wicket.page.persistent.disk.DiskDataStore;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
 import org.apache.wicket.session.HttpSessionStore;
 import org.apache.wicket.session.SessionStore;
+import org.apache.wicket.session.SessionStore.UnboundListener;
 import org.apache.wicket.settings.ApplicationSettings;
 import org.apache.wicket.settings.RequestCycleSettings;
 import org.apache.wicket.util.lang.Check;
 
-public class Application
+public abstract class Application implements UnboundListener
 {
        private String name;
 
@@ -30,6 +33,7 @@
        public void internalInit()
        {
                this.sessionStore = newSessionStore();
+               this.sessionStore.registerUnboundListener(this);
                this.pageManager = newPageManager();
                this.pageManager.setContext(getPageManagerContext());
        }
@@ -142,6 +146,23 @@
        {
                return applicationSettings;
        }
+       
+       // // Request cycle
+
+       protected abstract RequestCycle newRequestCycle(Request request, 
Response response);
+       
+       public final RequestCycle createRequestCycle(Request request, Response 
response)
+       {
+               RequestCycle requestCycle = newRequestCycle(request, response);
+               requestCycle.registerDetachCallback(new 
RequestCycle.DetachCallback()
+               {
+                       public void onDetach(RequestCycle requestCycle)
+                       {
+                               getPageManager().commitRequest();
+                       }
+               });
+               return requestCycle;
+       }       
 
        private static Map<String, Application> applications = new 
ConcurrentHashMap<String, Application>();
 
@@ -171,7 +192,7 @@
                return new Session(requestCycle);
        }
        
-       public Session fetchCreateAndSetSession(RequestCycle requestCycle)
+       Session fetchCreateAndSetSession(RequestCycle requestCycle)
        {
                Check.argumentNotNull(requestCycle, "requestCycle");
                                                
@@ -254,7 +275,7 @@
                return pageManager;
        }
        
-       public PageManagerContext getPageManagerContext()
+       protected PageManagerContext getPageManagerContext()
        {
                return pageManagerContext;
        }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=762292&r1=762291&r2=762292&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 Mon Apr  6 11:46:19 2009
@@ -99,24 +99,11 @@
                return null;
        };
 
-       public RequestCycle newRequestCycle(Request request, Response response)
+       protected RequestCycle newRequestCycle(Request request, Response 
response)
        {
                RequestCycleContext context = newRequestCycleContext();
                return new RequestCycle(request, response, context);
        };
-
-       public final RequestCycle createRequestCycle(Request request, Response 
response)
-       {
-               RequestCycle requestCycle = newRequestCycle(request, response);
-               requestCycle.registerDetachCallback(new 
RequestCycle.DetachCallback()
-               {
-                       public void onDetach(RequestCycle requestCycle)
-                       {
-                               getPageManager().commitRequest();
-                       }
-               });
-               return requestCycle;
-       }
        
        private RequestHandlerEncoderRegistry requestHandlerEncoderRegistry;
 

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=762292&r1=762291&r2=762292&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:46:19 2009
@@ -19,7 +19,9 @@
 import java.io.Serializable;
 import java.util.Enumeration;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -86,9 +88,10 @@
                {
                        log.debug("Session unbound: " + sessionId);
                        Application application = 
Application.get(applicationKey);
-                       if (application != null)
+                       HttpSessionStore sessionStore = (HttpSessionStore) 
application.getSessionStore();
+                       for (UnboundListener listener : 
sessionStore.unboundListeners)
                        {
-                               application.sessionUnbound(sessionId);
+                               listener.sessionUnbound(sessionId);
                        }
                }
        }
@@ -340,5 +343,15 @@
                }
        }
 
+       private List<UnboundListener> unboundListeners = new 
CopyOnWriteArrayList<UnboundListener>();
        
+       public void registerUnboundListener(UnboundListener listener)
+       {
+               unboundListeners.add(listener);
+       }
+       
+       public void unregisterUnboundListener(UnboundListener listener)
+       {
+               unboundListeners.remove(listener);
+       }
 }
\ No newline at end of file

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=762292&r1=762291&r2=762292&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:46:19 2009
@@ -125,4 +125,18 @@
         * Called when the WebApplication is destroyed.
         */
        void destroy();
+       
+       /**
+        * Listener invoked when session is unbound.
+        *  
+        * @author Matej Knopp
+        */
+       public interface UnboundListener
+       {
+               public void sessionUnbound(String sessionId);
+       };
+       
+       public void registerUnboundListener(UnboundListener listener);
+       
+       public void unregisterUnboundListener(UnboundListener listener);
 }


Reply via email to