You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2009/12/21 10:07:47 UTC
svn commit: r892735 - in
/wicket/trunk/wicket/src/main/java/org/apache/wicket: ./ ng/ ng/mock/
ng/request/handler/impl/render/ ng/request/mapper/ ng/session/
protocol/http/ session/
Author: jdonnerstag
Date: Mon Dec 21 09:07:46 2009
New Revision: 892735
URL: http://svn.apache.org/viewvc?rev=892735&view=rev
Log:
NG wip
- merged Session
Removed:
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Session.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Application.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/ThreadContext.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockSessionStore.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/impl/render/WebRenderPageRequestHandlerDelegate.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/HttpSessionStore.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/ISessionStore.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HttpSessionStore.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/session/ISessionStore.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java Mon Dec 21 09:07:46 2009
@@ -22,6 +22,7 @@
import java.util.Map.Entry;
import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.ng.request.IRequestHandler;
import org.apache.wicket.protocol.http.BufferedWebResponse;
import org.apache.wicket.protocol.http.IRequestLogger;
import org.apache.wicket.protocol.http.PageExpiredException;
@@ -1536,4 +1537,35 @@
{
set(null);
}
+
+ // -------------------------------------------------------------------------------------------
+ // NG Dummies
+ // -------------------------------------------------------------------------------------------
+
+ /**
+ * Custom callback invoked on request cycle detach. Detach callbacks are invoked after all
+ * {@link IRequestHandler}s are detached.
+ *
+ * @author Matej Knopp
+ */
+ public interface DetachCallback
+ {
+ /**
+ * Invoked on request cycle detach.
+ *
+ * @param requestCycle
+ */
+ public void onDetach(RequestCycle requestCycle);
+ };
+
+
+ /**
+ * Registers a callback to be invoked on {@link RequestCycle} detach. The callback will be
+ * invoked after all {@link IRequestHandler}s are detached.
+ *
+ * @param detachCallback
+ */
+ public void register(DetachCallback detachCallback)
+ {
+ }
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java Mon Dec 21 09:07:46 2009
@@ -23,7 +23,6 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Map.Entry;
import org.apache.wicket.application.IClassResolver;
import org.apache.wicket.authorization.IAuthorizationStrategy;
@@ -113,7 +112,6 @@
*/
public abstract class Session implements IClusterable
{
-
private static final long serialVersionUID = 1L;
/** Logging object */
@@ -285,7 +283,7 @@
* instance).
* </p>
*/
- private transient Map<String, Object> temporarySessionAttributes;
+ private transient Map<String, Serializable> temporarySessionAttributes;
/**
* Constructor. Note that {@link RequestCycle} is not available until this constructor returns.
@@ -340,7 +338,7 @@
if (temporarySessionAttributes != null)
{
- for (Entry<String, Object> entry : temporarySessionAttributes.entrySet())
+ for (Map.Entry<String, Serializable> entry : temporarySessionAttributes.entrySet())
{
store.setAttribute(request, String.valueOf(entry.getKey()), entry.getValue());
}
@@ -535,17 +533,31 @@
*/
public void invalidate()
{
+ if (sessionInvalidated == false)
+ {
+ RequestCycle.get().register(new RequestCycle.DetachCallback()
+ {
+ public void onDetach(final RequestCycle requestCycle)
+ {
+ destroy();
+ }
+ });
+ }
+
sessionInvalidated = true;
}
/**
- * Invalidates this session immediately. Calling this method will remove all Wicket components
- * from this session, which means that you will no longer be able to work with them.
+ * Invalidate and remove session store and page manager
*/
- public void invalidateNow()
+ private void destroy()
{
- invalidate();
- getSessionStore().invalidate(RequestCycle.get().getRequest());
+ if (sessionStore != null)
+ {
+ sessionStore.invalidate(RequestCycle.get().getRequest());
+ sessionStore = null;
+ }
+
if (pageManager != null)
{
pageManager.destroy();
@@ -554,6 +566,16 @@
}
/**
+ * Invalidates this session immediately. Calling this method will remove all Wicket components
+ * from this session, which means that you will no longer be able to work with them.
+ */
+ public void invalidateNow()
+ {
+ invalidate();
+ destroy();
+ }
+
+ /**
* Replaces the underlying (Web)Session, invalidating the current one and creating a new one. By
* calling {@link ISessionStore#invalidate(Request)} and {@link #bind()}
* <p>
@@ -563,13 +585,7 @@
*/
public void replaceSession()
{
- getSessionStore().invalidate(RequestCycle.get().getRequest());
- if (pageManager != null)
- {
- pageManager.destroy();
- pageManager = null;
- }
-
+ destroy();
bind();
}
@@ -614,7 +630,6 @@
dirty();
}
-
/**
* Set the locale for this session.
*
@@ -727,20 +742,19 @@
// revert
public final Serializable getAttribute(final String name)
{
- // TODO WICKET-NG remove serializable casts, maps should be <string,serializable>
if (!isTemporary())
{
RequestCycle cycle = RequestCycle.get();
if (cycle != null)
{
- return (Serializable)getSessionStore().getAttribute(cycle.getRequest(), name);
+ return getSessionStore().getAttribute(cycle.getRequest(), name);
}
}
else
{
if (temporarySessionAttributes != null)
{
- return (Serializable)temporarySessionAttributes.get(name);
+ return temporarySessionAttributes.get(name);
}
}
return null;
@@ -756,14 +770,16 @@
RequestCycle cycle = RequestCycle.get();
if (cycle != null)
{
- return getSessionStore().getAttributeNames(cycle.getRequest());
+ return Collections.unmodifiableList(getSessionStore().getAttributeNames(
+ cycle.getRequest()));
}
}
else
{
if (temporarySessionAttributes != null)
{
- return new ArrayList<String>(temporarySessionAttributes.keySet());
+ return Collections.unmodifiableList(new ArrayList<String>(
+ temporarySessionAttributes.keySet()));
}
}
return Collections.emptyList();
@@ -857,13 +873,12 @@
// session instance gets shared across threads
if (temporarySessionAttributes == null)
{
- temporarySessionAttributes = new HashMap<String, Object>(3);
+ temporarySessionAttributes = new HashMap<String, Serializable>(3);
}
temporarySessionAttributes.put(name, value);
}
}
-
// TODO remove after deprecation release
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Application.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Application.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/Application.java Mon Dec 21 09:07:46 2009
@@ -23,6 +23,7 @@
import org.apache.wicket.Page;
import org.apache.wicket.Request;
import org.apache.wicket.Response;
+import org.apache.wicket.Session;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ng.request.IRequestMapper;
import org.apache.wicket.ng.request.component.IRequestablePage;
@@ -45,6 +46,7 @@
import org.apache.wicket.pageStore.IPageManagerContext;
import org.apache.wicket.pageStore.IPageStore;
import org.apache.wicket.pageStore.PersistentPageManager;
+import org.apache.wicket.protocol.http.WebSession;
import org.apache.wicket.session.DefaultPageFactory;
import org.apache.wicket.settings.IApplicationSettings;
import org.apache.wicket.settings.IRequestCycleSettings;
@@ -291,7 +293,7 @@
protected Session newSession(RequestCycle requestCycle)
{
- return new Session(requestCycle);
+ return new WebSession(requestCycle.getRequest());
}
Session fetchCreateAndSetSession(RequestCycle requestCycle)
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/ThreadContext.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/ThreadContext.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/ThreadContext.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/ThreadContext.java Mon Dec 21 09:07:46 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.ng;
+import org.apache.wicket.Session;
import org.apache.wicket.ng.request.cycle.RequestCycle;
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockSessionStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockSessionStore.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockSessionStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockSessionStore.java Mon Dec 21 09:07:46 2009
@@ -25,7 +25,7 @@
import java.util.concurrent.CopyOnWriteArraySet;
import org.apache.wicket.Request;
-import org.apache.wicket.ng.Session;
+import org.apache.wicket.Session;
import org.apache.wicket.ng.session.ISessionStore;
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/impl/render/WebRenderPageRequestHandlerDelegate.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/impl/render/WebRenderPageRequestHandlerDelegate.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/impl/render/WebRenderPageRequestHandlerDelegate.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/impl/render/WebRenderPageRequestHandlerDelegate.java Mon Dec 21 09:07:46 2009
@@ -17,8 +17,8 @@
package org.apache.wicket.ng.request.handler.impl.render;
import org.apache.wicket.Response;
+import org.apache.wicket.Session;
import org.apache.wicket.ng.Application;
-import org.apache.wicket.ng.Session;
import org.apache.wicket.ng.protocol.http.BufferedWebResponse;
import org.apache.wicket.ng.protocol.http.WebApplication;
import org.apache.wicket.ng.request.Url;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java Mon Dec 21 09:07:46 2009
@@ -17,7 +17,7 @@
package org.apache.wicket.ng.request.mapper;
import org.apache.wicket.Request;
-import org.apache.wicket.ng.Session;
+import org.apache.wicket.Session;
import org.apache.wicket.ng.protocol.http.BufferedWebResponse;
import org.apache.wicket.ng.protocol.http.WebApplication;
import org.apache.wicket.ng.request.IRequestHandler;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/HttpSessionStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/HttpSessionStore.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/HttpSessionStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/HttpSessionStore.java Mon Dec 21 09:07:46 2009
@@ -28,8 +28,8 @@
import javax.servlet.http.HttpSessionBindingListener;
import org.apache.wicket.Request;
+import org.apache.wicket.Session;
import org.apache.wicket.ng.Application;
-import org.apache.wicket.ng.Session;
import org.apache.wicket.ng.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
import org.slf4j.Logger;
@@ -145,8 +145,7 @@
}
/**
- * @see org.apache.wicket.session.ISessionStore#bind(org.apache.wicket.ng.request.Request,
- * org.apache.wicket.ng.Session)
+ * @see org.apache.wicket.session.ISessionStore#bind(Request, Session)
*/
public final void bind(Request request, Session newSession)
{
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/ISessionStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/ISessionStore.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/ISessionStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/session/ISessionStore.java Mon Dec 21 09:07:46 2009
@@ -22,7 +22,7 @@
import javax.servlet.http.HttpSession;
import org.apache.wicket.Request;
-import org.apache.wicket.ng.Session;
+import org.apache.wicket.Session;
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HttpSessionStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HttpSessionStore.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HttpSessionStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HttpSessionStore.java Mon Dec 21 09:07:46 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.protocol.http;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
@@ -50,13 +51,14 @@
* @see org.apache.wicket.session.ISessionStore#getAttribute(org.apache.wicket.Request,
* java.lang.String)
*/
- public Object getAttribute(Request request, String name)
+ public Serializable getAttribute(Request request, String name)
{
WebRequest webRequest = toWebRequest(request);
HttpSession httpSession = getHttpSession(webRequest);
if (httpSession != null)
{
- return httpSession.getAttribute(getSessionAttributePrefix(webRequest) + name);
+ return (Serializable)httpSession.getAttribute(getSessionAttributePrefix(webRequest) +
+ name);
}
return null;
}
@@ -119,7 +121,7 @@
* @see org.apache.wicket.session.ISessionStore#setAttribute(Request,java.lang.String,
* java.lang.Object)
*/
- public void setAttribute(Request request, String name, Object value)
+ public void setAttribute(Request request, String name, Serializable value)
{
// ignore call if the session was marked invalid
if (!isSessionValid())
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/session/ISessionStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/session/ISessionStore.java?rev=892735&r1=892734&r2=892735&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/session/ISessionStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/session/ISessionStore.java Mon Dec 21 09:07:46 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.session;
+import java.io.Serializable;
import java.util.List;
import javax.servlet.http.HttpSession;
@@ -41,7 +42,7 @@
* The name of the attribute to store
* @return The value of the attribute
*/
- Object getAttribute(Request request, final String name);
+ Serializable getAttribute(Request request, final String name);
/**
* @param request
@@ -80,7 +81,7 @@
* @param value
* the value of the attribute
*/
- void setAttribute(Request request, String name, Object value);
+ void setAttribute(Request request, String name, Serializable value);
/**
* Get the session id for the provided request. If create is false and the creation of the