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