You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2010/02/24 01:21:15 UTC

svn commit: r915613 - in /wicket/trunk: ./ testing/wicket-threadtest/ wicket-auth-roles/src/main/java/org/apache/wicket/authentication/ wicket-examples/ wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/ wicket-examples/src/main/...

Author: knopp
Date: Wed Feb 24 00:21:13 2010
New Revision: 915613

URL: http://svn.apache.org/viewvc?rev=915613&view=rev
Log:
RestartResponseOnInterceptPageException
Upgraded jetty

Added:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java   (with props)
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java   (with props)
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java   (with props)
Modified:
    wicket/trunk/pom.xml
    wicket/trunk/testing/wicket-threadtest/pom.xml
    wicket/trunk/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/AuthenticatedWebApplication.java
    wicket/trunk/wicket-examples/pom.xml
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/SignInApplication.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignIn2Application.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignOut.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseException.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockRequestParameters.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockWebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestHandlerStack.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/IPageProvider.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageProvider.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/AbstractBookmarkableMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/AuthorizationTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/LocalizedErrorMessageTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/border/TestHomePage.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePageTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java

Modified: wicket/trunk/pom.xml
URL: http://svn.apache.org/viewvc/wicket/trunk/pom.xml?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/pom.xml (original)
+++ wicket/trunk/pom.xml Wed Feb 24 00:21:13 2010
@@ -362,15 +362,15 @@
 				<version>2.5.6</version>
 			</dependency>
 			<dependency>
-				<groupId>org.mortbay.jetty</groupId>
+				<groupId>org.eclipse.jetty</groupId>
 				<artifactId>jetty</artifactId>
-				<version>6.1.21</version>
+				<version>7.0.1.v20091125</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>
-				<groupId>org.mortbay.jetty</groupId>
+				<groupId>org.eclipse.jetty</groupId>
 				<artifactId>servlet-api-2.5</artifactId>
-				<version>6.1.21</version>
+				<version>7.0.1.v20091125</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>
@@ -380,15 +380,15 @@
 				<scope>provided</scope>
 			</dependency>
 			<dependency>
-				<groupId>org.mortbay.jetty</groupId>
+				<groupId>org.eclipse.jetty</groupId>
 				<artifactId>jetty-util</artifactId>
-				<version>6.1.21</version>
+				<version>7.0.1.v20091125</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>
-				<groupId>org.mortbay.jetty</groupId>
+				<groupId>org.eclipse.jetty</groupId>
 				<artifactId>jetty-management</artifactId>
-				<version>6.1.21</version>
+				<version>7.0.1.v20091125</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>

Modified: wicket/trunk/testing/wicket-threadtest/pom.xml
URL: http://svn.apache.org/viewvc/wicket/trunk/testing/wicket-threadtest/pom.xml?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/testing/wicket-threadtest/pom.xml (original)
+++ wicket/trunk/testing/wicket-threadtest/pom.xml Wed Feb 24 00:21:13 2010
@@ -43,11 +43,11 @@
 		</dependency>
 
 		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
+			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
+			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-util</artifactId>
 		</dependency>
 

Modified: wicket/trunk/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/AuthenticatedWebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/AuthenticatedWebApplication.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/AuthenticatedWebApplication.java (original)
+++ wicket/trunk/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/AuthenticatedWebApplication.java Wed Feb 24 00:21:13 2010
@@ -22,6 +22,7 @@
 import org.apache.wicket.Page;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener;
@@ -90,8 +91,7 @@
 			if (!AuthenticatedWebSession.get().isSignedIn())
 			{
 				// Redirect to intercept page to let the user sign in
-				// TODO NG
-				// throw new RestartResponseAtInterceptPageException(getSignInPageClass());
+				throw new RestartResponseAtInterceptPageException(getSignInPageClass());
 			}
 			else
 			{

Modified: wicket/trunk/wicket-examples/pom.xml
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/pom.xml?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/pom.xml (original)
+++ wicket/trunk/wicket-examples/pom.xml Wed Feb 24 00:21:13 2010
@@ -91,15 +91,15 @@
 			<artifactId>httpunit</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
+			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
+			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-util</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
+			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-management</artifactId>
 		</dependency>
 		<dependency>

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/SignInApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/SignInApplication.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/SignInApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication1/SignInApplication.java Wed Feb 24 00:21:13 2010
@@ -20,6 +20,7 @@
 import org.apache.wicket.Page;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
 import org.apache.wicket.Session;
 import org.apache.wicket.authorization.Action;
 import org.apache.wicket.authorization.IAuthorizationStrategy;
@@ -90,8 +91,7 @@
 					// Invoke Component.continueToOriginalDestination() after successful logon to
 					// continue with the target remembered.
 
-					// TODO (NG)
-// throw new RestartResponseAtInterceptPageException(SignIn.class);
+					throw new RestartResponseAtInterceptPageException(SignIn.class);
 				}
 
 				// okay to proceed

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignIn2Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignIn2Application.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignIn2Application.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignIn2Application.java Wed Feb 24 00:21:13 2010
@@ -20,6 +20,7 @@
 import org.apache.wicket.Page;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
 import org.apache.wicket.Session;
 import org.apache.wicket.authorization.Action;
 import org.apache.wicket.authorization.IAuthorizationStrategy;
@@ -91,8 +92,7 @@
 					// Intercept the request, but remember the target for later.
 					// Invoke Component.continueToOriginalDestination() after successful logon to
 					// continue with the target remembered.
-					// TODO (NG)
-// throw new RestartResponseAtInterceptPageException(SignIn2.class);
+					throw new RestartResponseAtInterceptPageException(SignIn2.class);
 				}
 
 				// okay to proceed

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignOut.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignOut.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignOut.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/authentication2/SignOut.java Wed Feb 24 00:21:13 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.examples.authentication2;
 
+import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.ng.request.component.PageParameters;
 
 /**
@@ -23,7 +24,7 @@
  * 
  * @author Jonathan Locke
  */
-public class SignOut extends AuthenticatedWebPage
+public class SignOut extends WicketExamplePage
 {
 	/**
 	 * Constructor

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Wed Feb 24 00:21:13 2010
@@ -50,8 +50,9 @@
 import org.apache.wicket.ng.request.component.IRequestableComponent;
 import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
-import org.apache.wicket.ng.request.handler.PageProvider;
 import org.apache.wicket.ng.request.handler.PageAndComponentProvider;
+import org.apache.wicket.ng.request.handler.PageProvider;
+import org.apache.wicket.ng.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.BookmarkablePageRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.ListenerInterfaceRequestHandler;
 import org.apache.wicket.ng.request.handler.resource.ResourceReferenceRequestHandler;
@@ -1076,9 +1077,7 @@
 	 */
 	public final boolean continueToOriginalDestination()
 	{
-		// TODO WICKET-NG
-		return false;
-		// return getPage().getPageMap().continueToOriginalDestination();
+		return RestartResponseAtInterceptPageException.continueToOriginalDestination();
 	}
 
 	/**
@@ -2217,8 +2216,7 @@
 	 */
 	public final void redirectToInterceptPage(final Page page)
 	{
-		// TODO WICKET-NG
-		// getPage().getPageMap().redirectToInterceptPage(page);
+		throw new RestartResponseAtInterceptPageException(page);
 	}
 
 	/**
@@ -3210,8 +3208,8 @@
 	public final <C extends Page> CharSequence urlFor(final Class<C> pageClass,
 		final PageParameters parameters)
 	{
-		IRequestHandler handler = new BookmarkablePageRequestHandler(new PageProvider(
-			pageClass, parameters));
+		IRequestHandler handler = new BookmarkablePageRequestHandler(new PageProvider(pageClass,
+			parameters));
 		return getRequestCycle().renderUrlFor(handler);
 	}
 
@@ -3230,7 +3228,15 @@
 	{
 		PageAndComponentProvider provider = new PageAndComponentProvider(getPage(), this);
 		int index = getBehaviors().indexOf(behaviour);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, listener, index);
+		IRequestHandler handler;
+		if (getPage().isPageStateless())
+		{
+			handler = new BookmarkableListenerInterfaceRequestHandler(provider, listener, index);
+		}
+		else
+		{
+			handler = new ListenerInterfaceRequestHandler(provider, listener, index);
+		}
 		return getRequestCycle().renderUrlFor(handler);
 	}
 
@@ -3259,7 +3265,15 @@
 	public final CharSequence urlFor(final RequestListenerInterface listener)
 	{
 		PageAndComponentProvider provider = new PageAndComponentProvider(getPage(), this);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, listener);
+		IRequestHandler handler;
+		if (getPage().isPageStateless())
+		{
+			handler = new BookmarkableListenerInterfaceRequestHandler(provider, listener);
+		}
+		else
+		{
+			handler = new ListenerInterfaceRequestHandler(provider, listener);
+		}
 		return getRequestCycle().renderUrlFor(handler);
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java Wed Feb 24 00:21:13 2010
@@ -39,9 +39,20 @@
 	public abstract Url getUrl();
 
 	/**
+	 * In case this request has been created using {@link #requestWithUrl(Url)}, this method should
+	 * return the original URL.
+	 * 
+	 * @return original URL
+	 */
+	public Url getOriginalUrl()
+	{
+		return getUrl();
+	}
+
+	/**
 	 * @return POST request parameters for this request.
 	 */
-	public IRequestParameters getPostRequestParameters()
+	public IRequestParameters getPostParameters()
 	{
 		return EmptyRequestParameters.INSTANCE;
 	}
@@ -49,7 +60,7 @@
 	/**
 	 * @return GET request parameters for this request.
 	 */
-	public IRequestParameters getGetRequestParameters()
+	public IRequestParameters getQueryParameters()
 	{
 		return new UrlRequestParametersAdapter(getUrl());
 	}
@@ -59,8 +70,8 @@
 	 */
 	public IRequestParameters getRequestParameters()
 	{
-		return new CombinedRequestParametersAdapter(getGetRequestParameters(),
-			getPostRequestParameters());
+		return new CombinedRequestParametersAdapter(getQueryParameters(),
+			getPostParameters());
 	}
 
 	/**
@@ -88,15 +99,21 @@
 			}
 
 			@Override
+			public Url getOriginalUrl()
+			{
+				return Request.this.getOriginalUrl();
+			}
+
+			@Override
 			public Locale getLocale()
 			{
 				return Request.this.getLocale();
 			}
 
 			@Override
-			public IRequestParameters getPostRequestParameters()
+			public IRequestParameters getPostParameters()
 			{
-				return Request.this.getPostRequestParameters();
+				return Request.this.getPostParameters();
 			}
 		};
 	}

Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java?rev=915613&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java Wed Feb 24 00:21:13 2010
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.wicket.ng.request.IRequestMapper;
+import org.apache.wicket.ng.request.IWritableRequestParameters;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.ng.request.handler.PageProvider;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.request.target.basic.RedirectRequestHandler;
+import org.apache.wicket.util.string.StringValue;
+
+public class RestartResponseAtInterceptPageException extends AbstractRestartResponseException
+{
+
+	public RestartResponseAtInterceptPageException(Page interceptPage)
+	{
+		super(new RenderPageRequestHandler(new PageProvider(interceptPage)));
+		SessionData.set();
+	}
+
+	public RestartResponseAtInterceptPageException(Class<? extends Page> interceptPageClass)
+	{
+		super(new RenderPageRequestHandler(new PageProvider(interceptPageClass)));
+		SessionData.set();
+	}
+
+	private static class SessionData implements Serializable
+	{
+		private Url originalUrl;
+		private Map<String, List<StringValue>> postParameters;
+		private boolean continueOk;
+
+		public static void set()
+		{
+			Session session = Session.get();
+			session.bind();
+			SessionData data = new SessionData();
+			Request request = RequestCycle.get().getRequest();
+			data.originalUrl = request.getOriginalUrl();
+			data.postParameters = new HashMap<String, List<StringValue>>();
+			for (String s : request.getPostParameters().getParameterNames())
+			{
+				data.postParameters.put(s, new ArrayList<StringValue>(request.getPostParameters()
+					.getParameterValues(s)));
+			}
+			data.continueOk = false;
+			session.setMetaData(key, data);
+		}
+
+		public static SessionData get()
+		{
+			Session session = Session.get();
+			if (session != null)
+			{
+				return session.getMetaData(key);
+			}
+			else
+			{
+				return null;
+			}
+		}
+
+		public static void clear()
+		{
+			Session session = Session.get();
+			if (session != null)
+			{
+				session.setMetaData(key, null);
+			}
+		}
+
+		private static MetaDataKey<SessionData> key = new MetaDataKey<SessionData>()
+		{
+			private static final long serialVersionUID = 1L;
+		};
+	};
+
+	static boolean continueToOriginalDestination()
+	{
+		SessionData data = SessionData.get();
+		if (data != null)
+		{
+			data.continueOk = true;
+			String url = RequestCycle.get().getUrlRenderer().renderUrl(data.originalUrl);
+			RequestCycle.get().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler(url));
+			return true;
+		}
+		return false;
+	}
+
+	public static IRequestMapper MAPPER = new IRequestMapper()
+	{
+		public int getCompatibilityScore(Request request)
+		{
+			return 0;
+		}
+
+		public Url mapHandler(IRequestHandler requestHandler)
+		{
+			return null;
+		}
+
+		public IRequestHandler mapRequest(Request request)
+		{
+			SessionData data = SessionData.get();
+			if (data != null)
+			{
+				if (data.originalUrl.equals(request.getOriginalUrl()))
+				{
+					if (data.postParameters.isEmpty() == false &&
+						request.getPostParameters() instanceof IWritableRequestParameters)
+					{
+						IWritableRequestParameters parameters = (IWritableRequestParameters)request.getPostParameters();
+						parameters.reset();
+						for (String s : data.postParameters.keySet())
+						{
+							parameters.setParameterValues(s, data.postParameters.get(s));
+						}
+					}
+					SessionData.clear();
+				}
+			}
+			return null;
+		}
+	};
+}

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseException.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseException.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseException.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RestartResponseException.java Wed Feb 24 00:21:13 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket;
 
+import org.apache.wicket.ng.request.component.IRequestablePage;
 import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.handler.PageProvider;
 import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
@@ -66,7 +67,7 @@
 	 * @param page
 	 *            redirect page
 	 */
-	public RestartResponseException(Page page)
+	public RestartResponseException(IRequestablePage page)
 	{
 		super(new RenderPageRequestHandler(new PageProvider(page)));
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockRequestParameters.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockRequestParameters.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockRequestParameters.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockRequestParameters.java Wed Feb 24 00:21:13 2010
@@ -24,6 +24,7 @@
 import java.util.Set;
 
 import org.apache.wicket.ng.request.IRequestParameters;
+import org.apache.wicket.ng.request.IWritableRequestParameters;
 import org.apache.wicket.util.string.StringValue;
 
 /**
@@ -31,7 +32,7 @@
  * 
  * @author Matej Knopp
  */
-public class MockRequestParameters implements IRequestParameters
+public class MockRequestParameters implements IWritableRequestParameters
 {
 	private final Map<String, List<StringValue>> parameters = new HashMap<String, List<StringValue>>();
 
@@ -88,4 +89,10 @@
 		}
 		list.add(StringValue.valueOf(value));
 	}
+
+	public void reset()
+	{
+		parameters.clear();
+	}
+
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockWebRequest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockWebRequest.java Wed Feb 24 00:21:13 2010
@@ -238,7 +238,7 @@
 
 
 	@Override
-	public MockRequestParameters getPostRequestParameters()
+	public MockRequestParameters getPostParameters()
 	{
 		return postRequestParameters;
 	}

Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java?rev=915613&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java Wed Feb 24 00:21:13 2010
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.ng.request;
+
+import java.util.List;
+
+import org.apache.wicket.util.string.StringValue;
+
+/**
+ * Request parameters that can be modified.
+ * 
+ * @author Matej Knopp
+ */
+public interface IWritableRequestParameters extends IRequestParameters
+{
+	/**
+	 * Clears all parameters.
+	 */
+	public void reset();
+
+	/**
+	 * Sets the values for given parameter.
+	 * 
+	 * @param key
+	 * @param values
+	 */
+	public void setParameterValues(String key, List<StringValue> values);
+}

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/IWritableRequestParameters.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java Wed Feb 24 00:21:13 2010
@@ -446,10 +446,10 @@
 	}
 
 	/**
-	 * 
+	 * @param segments
 	 * @return true if last segment is empty
 	 */
-	private boolean isLastSegmentEmpty()
+	private boolean isLastSegmentEmpty(List<String> segments)
 	{
 		if (segments.isEmpty())
 		{
@@ -459,6 +459,23 @@
 		return last.length() == 0;
 	}
 
+	private boolean isLastSegmentEmpty()
+	{
+		return isLastSegmentEmpty(segments);
+	}
+
+	private boolean isAtLeastOnSegmentReal(List<String> segments)
+	{
+		for (String s : segments)
+		{
+			if (s.length() > 0 && !".".equals(s) && !"..".equals(s))
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+
 	/**
 	 * Concatenate the specified segments; The segments can be relative - begin with "." or "..".
 	 * 
@@ -468,13 +485,19 @@
 	{
 		boolean checkedLastSegment = false;
 
+		if (!isAtLeastOnSegmentReal(segments) && !isLastSegmentEmpty(segments))
+		{
+			segments = new ArrayList<String>(segments);
+			segments.add("");
+		}
+
 		for (String s : segments)
 		{
 			if (".".equals(s))
 			{
 				continue;
 			}
-			else if ("..".equals(s) && isLastSegmentReal())
+			else if ("..".equals(s) && !this.segments.isEmpty())
 			{
 				this.segments.remove(this.segments.size() - 1);
 			}
@@ -491,19 +514,11 @@
 				this.segments.add(s);
 			}
 		}
-	}
 
-	/**
-	 * 
-	 */
-	public void makeAbsolute()
-	{
-		if (isAbsolute())
+		if (this.segments.size() == 1 && this.segments.get(0).length() == 0)
 		{
-			return;
+			this.segments.clear();
 		}
-
-		segments.add(null);
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java Wed Feb 24 00:21:13 2010
@@ -405,7 +405,7 @@
 		Url url = urlFor(handler);
 		if (url != null)
 		{
-			return getUrlRenderer().renderUrl(url);
+			return getResponse().encodeURL(getUrlRenderer().renderUrl(url));
 		}
 		else
 		{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestHandlerStack.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestHandlerStack.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestHandlerStack.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestHandlerStack.java Wed Feb 24 00:21:13 2010
@@ -22,6 +22,7 @@
 
 import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Response;
+import org.apache.wicket.WicketRuntimeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -226,7 +227,7 @@
 	 * 
 	 * @author Matej Knopp
 	 */
-	public static class ReplaceHandlerException extends RuntimeException
+	public static class ReplaceHandlerException extends WicketRuntimeException
 	{
 		private static final long serialVersionUID = 1L;
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/IPageProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/IPageProvider.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/IPageProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/IPageProvider.java Wed Feb 24 00:21:13 2010
@@ -38,7 +38,7 @@
 	 * @return page instance
 	 * @throws StalePageException
 	 *             if render count has been specified in constructor and the render count of page
-	 *             does not match the valeu
+	 *             does not match the value
 	 * @throw {@link PageExpiredException} if the specified page could not have been found and the
 	 *        constructor used did not provide enough information to create new page instance
 	 */
@@ -52,6 +52,15 @@
 	PageParameters getPageParameters();
 
 	/**
+	 * Returns whether calling getPageInstance() will result in creating new page instance or
+	 * whether it will be an existing intance (even though it might be pulled from page store).
+	 * 
+	 * @return <code>true</code> if calling {@link #getPageInstance()} will create new page
+	 *         instance, <code>false</code> otherwise.
+	 */
+	boolean isNewPageInstance();
+
+	/**
 	 * Returns class of the page.
 	 * 
 	 * @return page class

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageProvider.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageProvider.java Wed Feb 24 00:21:13 2010
@@ -36,12 +36,12 @@
  * Purpose of this class is to reduce complexity of both {@link IRequestMapper}s and
  * {@link IRequestHandler}s. {@link IRequestMapper} examines the URL, gathers all relevant
  * information about the page in the URL (combination of page id, page class, page parameters and
- * render count), creates {@link PageProvider} object and creates a {@link IRequestHandler}
- * instance that can use the {@link PageProvider} to access the page.
+ * render count), creates {@link PageProvider} object and creates a {@link IRequestHandler} instance
+ * that can use the {@link PageProvider} to access the page.
  * <p>
- * Apart from simplifying {@link IRequestMapper}s and {@link IRequestHandler}s
- * {@link PageProvider} also helps performance because creating or obtaining page from
- * {@link IPageManager} is delayed until the {@link IRequestHandler} actually requires the page.
+ * Apart from simplifying {@link IRequestMapper}s and {@link IRequestHandler}s {@link PageProvider}
+ * also helps performance because creating or obtaining page from {@link IPageManager} is delayed
+ * until the {@link IRequestHandler} actually requires the page.
  * 
  * @author Matej Knopp
  */
@@ -186,6 +186,11 @@
 		}
 	}
 
+	public boolean isNewPageInstance()
+	{
+		return pageInstance == null && pageId == null;
+	}
+
 	/**
 	 * @see org.apache.wicket.ng.request.handler.IPageProvider#getPageClass()
 	 */

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=915613&r1=915612&r2=915613&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 Wed Feb 24 00:21:13 2010
@@ -194,7 +194,9 @@
 		}
 		else if (!targetUrl.equals(currentUrl) //
 			&&
-			(getRedirectPolicy() == RedirectPolicy.ALWAYS_REDIRECT || isRedirectToRender()))
+			(getRedirectPolicy() == RedirectPolicy.ALWAYS_REDIRECT || // 
+				isRedirectToRender() || //
+			(getPage().isPageStateless() && Session.get().isTemporary())))
 		{
 			// if target URL is different
 			// and render policy is always-redirect or it's redirect-to-render

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java Wed Feb 24 00:21:13 2010
@@ -258,13 +258,24 @@
 			// but only allowed if the page was created by bookamarkable URL
 
 			RenderPageRequestHandler handler = (RenderPageRequestHandler)requestHandler;
-			IRequestablePage page = handler.getPage();
 
-			if (!checkPageClass(page.getClass()))
+			if (!checkPageClass(handler.getPageClass()))
 			{
 				return null;
 			}
 
+			if (handler.getPageProvider().isNewPageInstance())
+			{
+				// no existing page instance available, don't bother creating new page instance
+				PageInfo info = new PageInfo();
+				UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(info, null),
+					handler.getPageClass(), handler.getPageParameters());
+
+				return buildUrl(urlInfo);
+			}
+
+			IRequestablePage page = handler.getPage();
+
 			if (!pageMustHaveBeenCreatedBookmarkable() || page.wasCreatedBookmarkable())
 			{
 				PageInfo info = null;

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java Wed Feb 24 00:21:13 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.RestartResponseAtInterceptPageException;
+
 
 /**
  * Mapper that encapsulates mappers that are necessary for Wicket to function.
@@ -30,6 +32,7 @@
 	 */
 	public SystemMapper()
 	{
+		register(RestartResponseAtInterceptPageException.MAPPER);
 		register(new HomePageMapper());
 		register(new PageInstanceMapper());
 		register(new BookmarkableMapper());

Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java?rev=915613&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java Wed Feb 24 00:21:13 2010
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.protocol.http;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Response that keeps headers in buffers but writes the content directly to the response.
+ * 
+ * This is necessary to get {@link #reset()} working without removing the JSESSIONID cookie. When
+ * {@link HttpServletResponse#reset()} is called it removes all cookies, including the JSESSIONID
+ * cookie.
+ * 
+ * Calling {@link #reset()} on this response only clears the buffered headers. If there is any
+ * content written to response it throws {@link IllegalStateException}.
+ * 
+ * @author Matej Knopp
+ */
+class HeaderBufferingWebResponse extends WebResponse
+{
+	private final WebResponse originalResponse;
+	private final BufferedWebResponse bufferedResponse;
+
+	public HeaderBufferingWebResponse(WebResponse originalResponse)
+	{
+		this.originalResponse = originalResponse;
+		bufferedResponse = new BufferedWebResponse()
+		{
+			@Override
+			public String encodeURL(CharSequence url)
+			{
+				return HeaderBufferingWebResponse.this.encodeURL(url);
+			}
+		};
+	}
+
+	private boolean bufferedWritten = false;
+
+	private void writeBuffered()
+	{
+		if (!bufferedWritten)
+		{
+			bufferedResponse.writeTo(originalResponse);
+			bufferedWritten = true;
+		}
+	}
+
+	private void checkHeader()
+	{
+		if (bufferedWritten)
+		{
+			throw new IllegalStateException("Header was already written to response!");
+		}
+	}
+
+	@Override
+	public void addCookie(Cookie cookie)
+	{
+		checkHeader();
+		bufferedResponse.addCookie(cookie);
+	}
+
+	@Override
+	public void clearCookie(Cookie cookie)
+	{
+		checkHeader();
+		bufferedResponse.clearCookie(cookie);
+	}
+
+	private boolean flushed = false;
+
+	@Override
+	public void flush()
+	{
+		if (!bufferedWritten)
+		{
+			bufferedResponse.writeTo(originalResponse);
+			bufferedResponse.reset();
+		}
+		originalResponse.flush();
+		flushed = true;
+	}
+
+	@Override
+	public boolean isRedirect()
+	{
+		return bufferedResponse.isRedirect();
+	}
+
+	@Override
+	public void sendError(int sc, String msg)
+	{
+		checkHeader();
+		bufferedResponse.sendError(sc, msg);
+	}
+
+	@Override
+	public void sendRedirect(String url)
+	{
+		checkHeader();
+		bufferedResponse.sendRedirect(url);
+	}
+
+	@Override
+	public void setContentLength(long length)
+	{
+		checkHeader();
+		bufferedResponse.setContentLength(length);
+	}
+
+	@Override
+	public void setContentType(String mimeType)
+	{
+		checkHeader();
+		bufferedResponse.setContentType(mimeType);
+	}
+
+	@Override
+	public void setDateHeader(String name, long date)
+	{
+		checkHeader();
+		bufferedResponse.setDateHeader(name, date);
+	}
+
+	@Override
+	public void setHeader(String name, String value)
+	{
+		checkHeader();
+		bufferedResponse.setHeader(name, value);
+	}
+
+	@Override
+	public void setStatus(int sc)
+	{
+		checkHeader();
+		bufferedResponse.setStatus(sc);
+	}
+
+	@Override
+	public String encodeURL(CharSequence url)
+	{
+		return originalResponse.encodeURL(url);
+	}
+
+	@Override
+	public void write(CharSequence sequence)
+	{
+		writeBuffered();
+		originalResponse.write(sequence);
+	}
+
+	@Override
+	public void write(byte[] array)
+	{
+		writeBuffered();
+		originalResponse.write(array);
+	}
+
+	@Override
+	public void reset()
+	{
+		if (flushed)
+		{
+			throw new IllegalStateException("Response has already been flushed!");
+		}
+		checkHeader();
+		bufferedResponse.reset();
+	}
+}

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java Wed Feb 24 00:21:13 2010
@@ -136,9 +136,9 @@
 			}
 
 			@Override
-			public IRequestParameters getPostRequestParameters()
+			public IRequestParameters getPostParameters()
 			{
-				return WebRequest.this.getPostRequestParameters();
+				return WebRequest.this.getPostParameters();
 			}
 
 			@Override

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Wed Feb 24 00:21:13 2010
@@ -165,7 +165,8 @@
 
 				req = new ServletWebRequest(httpServletRequest, filterPath);
 
-				WebResponse resp = new ServletWebResponse(httpServletResponse);
+				WebResponse resp = new HeaderBufferingWebResponse(new ServletWebResponse(
+					httpServletRequest, httpServletResponse));
 
 				RequestCycle requestCycle = webApplication.createRequestCycle(req, resp);
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java Wed Feb 24 00:21:13 2010
@@ -75,9 +75,9 @@
 			}
 
 			@Override
-			public IRequestParameters getPostRequestParameters()
+			public IRequestParameters getPostParameters()
 			{
-				return MultipartServletWebRequest.this.getPostRequestParameters();
+				return MultipartServletWebRequest.this.getPostParameters();
 			}
 		};
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Wed Feb 24 00:21:13 2010
@@ -33,6 +33,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.ng.request.IRequestParameters;
+import org.apache.wicket.ng.request.IWritableRequestParameters;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.Url.QueryParameter;
 import org.apache.wicket.protocol.http.WebRequest;
@@ -233,7 +234,7 @@
 		return postParameters;
 	}
 
-	private Map<String, List<StringValue>> getPostParameters()
+	private Map<String, List<StringValue>> getPostRequestParameters()
 	{
 		if (postParameters == null)
 		{
@@ -242,16 +243,26 @@
 		return postParameters;
 	}
 
-	private final IRequestParameters postRequestParameters = new IRequestParameters()
+	private final IRequestParameters postRequestParameters = new IWritableRequestParameters()
 	{
+		public void reset()
+		{
+			getPostRequestParameters().clear();
+		}
+
+		public void setParameterValues(String key, List<StringValue> values)
+		{
+			getPostRequestParameters().put(key, values);
+		}
+
 		public Set<String> getParameterNames()
 		{
-			return Collections.unmodifiableSet(getPostParameters().keySet());
+			return Collections.unmodifiableSet(getPostRequestParameters().keySet());
 		}
 
 		public StringValue getParameterValue(String name)
 		{
-			List<StringValue> values = getPostParameters().get(name);
+			List<StringValue> values = getPostRequestParameters().get(name);
 			if (values == null || values.isEmpty())
 			{
 				return StringValue.valueOf((String)null);
@@ -264,7 +275,7 @@
 
 		public List<StringValue> getParameterValues(String name)
 		{
-			List<StringValue> values = getPostParameters().get(name);
+			List<StringValue> values = getPostRequestParameters().get(name);
 			if (values != null)
 			{
 				values = Collections.unmodifiableList(values);
@@ -274,7 +285,7 @@
 	};
 
 	@Override
-	public IRequestParameters getPostRequestParameters()
+	public IRequestParameters getPostParameters()
 	{
 		return postRequestParameters;
 	}
@@ -291,10 +302,10 @@
 		return new ServletWebRequest(httpServletRequest, filterPrefix, url)
 		{
 			@Override
-			public IRequestParameters getPostRequestParameters()
+			public IRequestParameters getPostParameters()
 			{
 				// don't parse post parameters again
-				return ServletWebRequest.this.getPostRequestParameters();
+				return ServletWebRequest.this.getPostParameters();
 			}
 		};
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java Wed Feb 24 00:21:13 2010
@@ -19,9 +19,11 @@
 import java.io.IOException;
 
 import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.util.lang.Checks;
 
@@ -33,17 +35,22 @@
 public class ServletWebResponse extends WebResponse
 {
 	private final HttpServletResponse httpServletResponse;
+	private final HttpServletRequest httpServletRequest;
 
 	/**
 	 * Construct.
 	 * 
+	 * @param httpServletRequest
 	 * @param httpServletResponse
 	 */
-	public ServletWebResponse(HttpServletResponse httpServletResponse)
+	public ServletWebResponse(HttpServletRequest httpServletRequest,
+		HttpServletResponse httpServletResponse)
 	{
+		Checks.argumentNotNull(httpServletRequest, "httpServletRequest");
 		Checks.argumentNotNull(httpServletResponse, "httpServletResponse");
 
 		this.httpServletResponse = httpServletResponse;
+		this.httpServletRequest = httpServletRequest;
 	}
 
 	/**
@@ -177,13 +184,46 @@
 		return httpServletResponse.encodeURL(null);
 	}
 
+	private String getAbsolutePrefix()
+	{
+		String port = "";
+		if (("http".equals(httpServletRequest.getScheme()) && httpServletRequest.getServerPort() != 80) ||
+			("https".equals(httpServletRequest.getScheme()) && httpServletRequest.getServerPort() != 443))
+		{
+			port = ":" + httpServletRequest.getServerPort();
+		}
+		return httpServletRequest.getScheme() + "://" + httpServletRequest.getServerName() + port;
+	}
+
+	private String getAbsoluteURL(String url)
+	{
+		if (url.startsWith("http://") || url.startsWith("https://"))
+		{
+			return url;
+		}
+		else if (url.startsWith("/"))
+		{
+			return getAbsolutePrefix() + url;
+		}
+		else
+		{
+			Url current = Url.parse(httpServletRequest.getRequestURI());
+			Url append = Url.parse(url);
+			current.concatSegments(append.getSegments());
+			Url result = new Url(current.getSegments(), append.getQueryParameters());
+			return getAbsolutePrefix() + result.toString();
+		}
+	}
+
 	private boolean redirect = false;
 
 	@Override
 	public void sendRedirect(String url)
 	{
 		redirect = true;
+		url = getAbsoluteURL(url);
 		url = httpServletResponse.encodeRedirectURL(url);
+
 		try
 		{
 			httpServletResponse.sendRedirect(url);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Wed Feb 24 00:21:13 2010
@@ -254,7 +254,6 @@
 // super(application, path);
 // }
 
-
 	public Session getSession()
 	{
 		return session;
@@ -537,6 +536,11 @@
 				return null;
 			}
 
+			public boolean isNewPageInstance()
+			{
+				return false;
+			}
+
 			public IRequestablePage getPageInstance()
 			{
 				return testPageSource.getTestPage();
@@ -1004,7 +1008,7 @@
 			SubmitLink submitLink = (SubmitLink)linkComponent;
 
 			String pageRelativePath = submitLink.getInputName();
-			request.getPostRequestParameters().setParameterValue(pageRelativePath, "x");
+			request.getPostParameters().setParameterValue(pageRelativePath, "x");
 
 			submitForm(submitLink.getForm().getPageRelativePath());
 		}
@@ -1436,7 +1440,6 @@
 // }
 // return requestCycle;
 // }
-
 	/**
 	 * Retrieves a <code>TagTester</code> based on a <code>wicket:id</code>. If more
 	 * <code>Component</code>s exist with the same <code>wicket:id</code> in the markup, only the

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java Wed Feb 24 00:21:13 2010
@@ -739,7 +739,7 @@
 		if (parameterExist(formComponent))
 		{
 			List<StringValue> values = tester.getRequest()
-				.getPostRequestParameters()
+				.getPostParameters()
 				.getParameterValues(formComponent.getInputName());
 			// remove duplicated
 
@@ -755,7 +755,7 @@
 			{
 				values.add(StringValue.valueOf(val));
 			}
-			tester.getRequest().getPostRequestParameters().setParameterValues(
+			tester.getRequest().getPostParameters().setParameterValues(
 				formComponent.getInputName(), values);
 		}
 		else
@@ -787,7 +787,7 @@
 	private boolean parameterExist(FormComponent<?> formComponent)
 	{
 		String parameter = tester.getRequest()
-			.getPostRequestParameters()
+			.getPostParameters()
 			.getParameterValue(formComponent.getInputName())
 			.toString();
 		return parameter != null && parameter.trim().length() > 0;
@@ -803,7 +803,7 @@
 	 */
 	private void setFormComponentValue(FormComponent<?> formComponent, String value)
 	{
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			formComponent.getInputName(), value);
 	}
 
@@ -817,7 +817,7 @@
 	 */
 	private void setFormSubmittingComponentValue(IFormSubmittingComponent component, String value)
 	{
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			component.getInputName(), value);
 	}
 

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/AuthorizationTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/AuthorizationTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/AuthorizationTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/AuthorizationTest.java Wed Feb 24 00:21:13 2010
@@ -131,7 +131,7 @@
 
 		tester.startPage(AuthTestPage1.class);
 		tester.assertRenderedPage(AuthTestPage1.class);
-		tester.getRequest().getPostRequestParameters().setParameterValue("stringInput", "test");
+		tester.getRequest().getPostParameters().setParameterValue("stringInput", "test");
 		tester.submitForm("form");
 		tester.assertRenderedPage(AuthTestPage1.class);
 		AuthTestPage1 page = (AuthTestPage1)tester.getLastRenderedPage();
@@ -169,7 +169,7 @@
 		tester.startPage(AuthTestPage1.class);
 		tester.assertRenderedPage(AuthTestPage1.class);
 		tester.getRequest()
-			.getPostRequestParameters()
+			.getPostParameters()
 			.setParameterValue("form:stringInput", "test");
 		try
 		{

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java Wed Feb 24 00:21:13 2010
@@ -50,7 +50,7 @@
 		HomePage homePage = (HomePage)tester.getLastRenderedPage();
 		TestForm testForm = homePage.getForm();
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			homePage.getForm().getSubmitButton().getInputName(), "x");
 		tester.executeAjaxEvent(testForm.getSubmitButton(), "onclick");
 	}

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTest.java Wed Feb 24 00:21:13 2010
@@ -71,7 +71,7 @@
 			"border:myForm:border_body:name");
 		assertEquals("", input.getDefaultModelObjectAsString());
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(input.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(input.getInputName(),
 			"jdo");
 		tester.submitForm(form.getPageRelativePath());
 

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java Wed Feb 24 00:21:13 2010
@@ -159,13 +159,13 @@
 		assertTrue("running with nothing selected - model must be empty", modelObject.getProp1()
 			.size() == 0);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
 			String.valueOf(choice1.getValue()));
 		form.onFormSubmitted();
 		assertTrue("running with choice1 selected - model must only contain value of check1",
 			modelObject.getProp1().size() == 1 && modelObject.getProp1().contains(check1));
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
 			String.valueOf(choice2.getValue()));
 		form.onFormSubmitted();
 		assertTrue("running with choice2 selected - model must only contain value of check2",
@@ -174,11 +174,11 @@
 		// throw in some nulls into the request param to make sure they are
 		// ignored
 		tester.getRequest()
-			.getPostRequestParameters()
+			.getPostParameters()
 			.addParameterValue(group.getInputName(), null);
-		tester.getRequest().getPostRequestParameters().addParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().addParameterValue(group.getInputName(),
 			String.valueOf(choice1.getValue()));
-		tester.getRequest().getPostRequestParameters().addParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().addParameterValue(group.getInputName(),
 			String.valueOf(choice2.getValue()));
 
 		form.onFormSubmitted();
@@ -188,7 +188,7 @@
 			modelObject.getProp1().size() == 2 && modelObject.getProp1().contains(check2) &&
 				modelObject.getProp1().contains(check1));
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
 			"some weird choice uuid to test error");
 		try
 		{

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/LocalizedErrorMessageTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/LocalizedErrorMessageTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/LocalizedErrorMessageTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/LocalizedErrorMessageTest.java Wed Feb 24 00:21:13 2010
@@ -36,7 +36,7 @@
 		LocalizedMessagePage page = new LocalizedMessagePage();
 		tester.startPage(page);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			page.integerField.getInputName(), "foo");
 		tester.submitForm(page.form);
 
@@ -48,7 +48,7 @@
 		page = new LocalizedMessagePage();
 		tester.startPage(page);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			page.integerField.getInputName(), "foo");
 
 		tester.submitForm(page.form);
@@ -70,7 +70,7 @@
 		LocalizedMessagePage page = new LocalizedMessagePage();
 		tester.startPage(page);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			page.integerField.getInputName(), "foo");
 
 		tester.submitForm(page.form);
@@ -83,7 +83,7 @@
 		page = new LocalizedMessagePage();
 		tester.startPage(page);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			page.integerField.getInputName(), "foo");
 
 		tester.submitForm(page.form);

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java Wed Feb 24 00:21:13 2010
@@ -148,9 +148,9 @@
 		assertTrue("group2: running with nothing selected - model must be set to null",
 			model.getObject() == null);
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
 			choice1.getValue());
-		tester.getRequest().getPostRequestParameters().setParameterValue(group2.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group2.getInputName(),
 			choice3.getValue());
 		form.onFormSubmitted();
 		assertEquals("group: running with choice1 selected - model must be set to value of radio1",
@@ -159,13 +159,13 @@
 			"group2: running with choice3 selected - model must be set to value of radio1",
 			model.getObject(), choice3.getDefaultModelObject());
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
 			choice2.getValue());
 		form.onFormSubmitted();
 		assertEquals("group: running with choice2 selected - model must be set to value of radio2",
 			modelObject.getProp1(), choice2.getDefaultModelObject());
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(group2.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(group2.getInputName(),
 			choice1.getValue());
 		try
 		{

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/border/TestHomePage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/border/TestHomePage.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/border/TestHomePage.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/border/TestHomePage.java Wed Feb 24 00:21:13 2010
@@ -45,18 +45,18 @@
 		// formTester.setValue("..:textfield1", "testxxx");
 		TextField<String> textfield = (TextField<String>)tester.getLastRenderedPage().get(
 			"border:form:border_body:textfield");
-		tester.getRequest().getPostRequestParameters().setParameterValue(textfield.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(textfield.getInputName(),
 			"abcde");
 
 		MyTextField datefield = (MyTextField)tester.getLastRenderedPage().get(
 			"border:form:border_body:datefield");
-		tester.getRequest().getPostRequestParameters().setParameterValue(datefield.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(datefield.getInputName(),
 			"aaabbb");
 
 		MyDateField datefield2 = (MyDateField)tester.getLastRenderedPage().get(
 			"border:form:border_body:datefield2");
 		TextField<String> date = (TextField<String>)datefield2.get("date");
-		tester.getRequest().getPostRequestParameters().setParameterValue(date.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(date.getInputName(),
 			"abcdef");
 
 		formTester.submit();

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java Wed Feb 24 00:21:13 2010
@@ -26,7 +26,7 @@
 		tester.startPage(HomePage.class);
 		tester.assertRenderedPage(HomePage.class);
 		HomePage home = (HomePage)tester.getLastRenderedPage();
-		tester.getRequest().getPostRequestParameters().setParameterValue("form:text", "Hello");
+		tester.getRequest().getPostParameters().setParameterValue("form:text", "Hello");
 		tester.clickLink("form:link");
 		assertEquals("Hello", home.getText());
 		assertTrue("Form.onSubmit() has not been called!", home.isSubmitted());
@@ -38,9 +38,9 @@
 		tester.startPage(HomePage.class);
 		tester.assertRenderedPage(HomePage.class);
 		HomePage home = (HomePage)tester.getLastRenderedPage();
-		tester.getRequest().getPostRequestParameters().setParameterValue("form:text", "Hello");
+		tester.getRequest().getPostParameters().setParameterValue("form:text", "Hello");
 		// Pretend we clicked on "link"
-		tester.getRequest().getPostRequestParameters().setParameterValue("link", "");
+		tester.getRequest().getPostParameters().setParameterValue("link", "");
 		tester.submitForm("form");
 		assertEquals("Hello", home.getText());
 		assertTrue("Form.onSubmit() has not been called!", home.isSubmitted());

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePageTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePageTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePageTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePageTest.java Wed Feb 24 00:21:13 2010
@@ -80,7 +80,7 @@
 	{
 		TextField textfield = (TextField)tester.getLastRenderedPage().get(
 			"border:form2:border_body:textfield1");
-		tester.getRequest().getPostRequestParameters().setParameterValue(textfield.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(textfield.getInputName(),
 			"abcde");
 		tester.executeAjaxEvent("border:form2:submit", "onclick");
 		tester.assertNoErrorMessage();

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java Wed Feb 24 00:21:13 2010
@@ -227,7 +227,7 @@
 
 		page.reset();
 		FormTester formTester = tester.newFormTester("form");
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			((CheckBox)page.get("form:input")).getInputName(), "true");
 		page.get("form:label").setVisible(true);
 		formTester.submit();
@@ -238,7 +238,7 @@
 		assertTrue(page.labelOnBeforeRender);
 
 		page.reset();
-		tester.getRequest().getPostRequestParameters().setParameterValue(
+		tester.getRequest().getPostParameters().setParameterValue(
 			((CheckBox)page.get("form:input")).getInputName(), "true");
 		page.get("form:label").setVisible(false);
 		tester.submitForm("form");

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java Wed Feb 24 00:21:13 2010
@@ -279,4 +279,46 @@
 		url.concatSegments(Arrays.asList("xx", "yy"));
 		assertEquals(Url.parse("abc/efg/xx/yy"), url);
 	}
+
+	/**
+	 * 
+	 */
+	public void testConcat6()
+	{
+		Url url = Url.parse("abc/efg/");
+		url.concatSegments(Arrays.asList(".."));
+		assertEquals(Url.parse("abc/"), url);
+	}
+
+	/**
+	 * 
+	 */
+	public void testConcat7()
+	{
+		Url url = Url.parse("abc/efg/");
+		url.concatSegments(Arrays.asList("..", ".."));
+		assertEquals(Url.parse(""), url);
+	}
+
+
+	/**
+	 * 
+	 */
+	public void testConcat8()
+	{
+		Url url = Url.parse("fff/abc/efg/xxx");
+		url.concatSegments(Arrays.asList(".."));
+		assertEquals(Url.parse("fff/abc/"), url);
+	}
+
+
+	/**
+	 * 
+	 */
+	public void testConcat9()
+	{
+		Url url = Url.parse("fff/abc/efg/xxx");
+		url.concatSegments(Arrays.asList("..", ".."));
+		assertEquals(Url.parse("fff/"), url);
+	}
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java?rev=915613&r1=915612&r2=915613&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java Wed Feb 24 00:21:13 2010
@@ -488,7 +488,7 @@
 
 		assertFalse(page.isExecuted());
 
-		tester.getRequest().getPostRequestParameters().setParameterValue(name.getInputName(),
+		tester.getRequest().getPostParameters().setParameterValue(name.getInputName(),
 			"Mock name");
 
 		// Execute the ajax event