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);
}