You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/08 13:05:33 UTC

git commit: WICKET-5131 Problems with cookies disabled when using 301/302 and also 303 (even with cookies)

Updated Branches:
  refs/heads/master 6dd0fe21b -> 4b7367ef2


WICKET-5131 Problems with cookies disabled when using 301/302 and also 303 (even with cookies)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4b7367ef
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4b7367ef
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4b7367ef

Branch: refs/heads/master
Commit: 4b7367ef2dd030d988cb0e8c9cdac8b7b699c565
Parents: 6dd0fe2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Apr 8 14:05:13 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Apr 8 14:05:13 2013 +0300

----------------------------------------------------------------------
 .../http/handler/RedirectRequestHandler.java       |   15 ++++++----
 .../http/handler/RedirectRequestHandlerTest.java   |   20 +++++++++++++++
 2 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/4b7367ef/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java b/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
index e21856f..13c99fa 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
@@ -59,9 +59,10 @@ public class RedirectRequestHandler implements IRequestHandler
 	public RedirectRequestHandler(final String redirectUrl, final int status)
 	{
 		if ((status != HttpServletResponse.SC_MOVED_PERMANENTLY) &&
-			(status != HttpServletResponse.SC_MOVED_TEMPORARILY))
+			(status != HttpServletResponse.SC_MOVED_TEMPORARILY) &&
+			(status != HttpServletResponse.SC_SEE_OTHER))
 		{
-			throw new IllegalStateException("Status must be either 301 or 302, but was: " + status);
+			throw new IllegalStateException("Status must be either 301, 302 or 303, but was: " + status);
 		}
 		this.redirectUrl = redirectUrl;
 		this.status = status;
@@ -93,17 +94,19 @@ public class RedirectRequestHandler implements IRequestHandler
 	{
 		final String location;
 
-		if (redirectUrl.startsWith("/"))
+		final String url = getRedirectUrl();
+
+		if (url.charAt(0) == '/')
 		{
 			// context-absolute url
-			location = requestCycle.getUrlRenderer().renderContextRelativeUrl(redirectUrl);
+			location = requestCycle.getUrlRenderer().renderContextRelativeUrl(url);
 		}
 		else
 		{
 			// if relative url, servlet container will translate to absolute as
 			// per the servlet spec
 			// if absolute url still do the same
-			location = redirectUrl;
+			location = url;
 		}
 
 		WebResponse response = (WebResponse)requestCycle.getResponse();
@@ -114,7 +117,7 @@ public class RedirectRequestHandler implements IRequestHandler
 		}
 		else
 		{
-			response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
+			response.setStatus(status);
 			response.setHeader("Location", location);
 		}
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/4b7367ef/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java b/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
index 3e76a1f..d6239dc 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
@@ -69,4 +69,24 @@ public class RedirectRequestHandlerTest
 
 		Mockito.verify(webResponse).sendRedirect(REDIRECT_URL);
 	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5131
+	 */
+	@Test
+	public void seeOtherShouldSetLocationHeader()
+	{
+		RedirectRequestHandler handler = new RedirectRequestHandler(REDIRECT_URL,
+				HttpServletResponse.SC_SEE_OTHER);
+
+		IRequestCycle requestCycle = Mockito.mock(IRequestCycle.class);
+		WebResponse webResponse = Mockito.mock(WebResponse.class);
+
+		Mockito.when(requestCycle.getResponse()).thenReturn(webResponse);
+
+		handler.respond(requestCycle);
+
+		Mockito.verify(webResponse).setStatus(HttpServletResponse.SC_SEE_OTHER);
+		Mockito.verify(webResponse).setHeader("Location", REDIRECT_URL);
+	}
 }