You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2012/04/06 13:41:56 UTC
git commit: WICKET-4260 remove leading dot in sendRedirect()
Updated Branches:
refs/heads/wicket-1.5.x c19a60713 -> b5f330360
WICKET-4260 remove leading dot in sendRedirect()
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b5f33036
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b5f33036
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b5f33036
Branch: refs/heads/wicket-1.5.x
Commit: b5f3303608a48c19ae2fccea941694102bcd461c
Parents: c19a607
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 6 13:41:23 2012 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Apr 6 13:41:23 2012 +0200
----------------------------------------------------------------------
.../protocol/http/servlet/ServletWebResponse.java | 8 ++++++
.../wicket/protocol/http/WicketFilterTest.java | 9 +++++++
.../http/servlet/ServletWebResponseTest.java | 18 +++++++-------
3 files changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b5f33036/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
index 27b52b1..2296e34 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
@@ -227,6 +227,14 @@ public class ServletWebResponse extends WebResponse
}
else
{
+ if (url.startsWith("./"))
+ {
+ /*
+ * WICKET-4260 Tomcat does not canonalize urls, which leads to problems with IE
+ * when url is relative and starts with a dot
+ */
+ url = url.substring(2);
+ }
httpServletResponse.sendRedirect(url);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/b5f33036/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
index 55f6690..1250682 100644
--- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
@@ -62,6 +62,8 @@ import org.junit.Assert;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import org.xml.sax.SAXException;
/**
@@ -364,6 +366,13 @@ public class WicketFilterTest extends Assert
.thenReturn("/contextPath/servlet/wicket/bookmarkable/" + DummyHomePage.class.getName());
when(request.getContextPath()).thenReturn("/contextPath");
HttpServletResponse response = mock(HttpServletResponse.class);
+ when(response.encodeRedirectURL(Matchers.anyString())).thenAnswer(new Answer<String>()
+ {
+ public String answer(InvocationOnMock invocation) throws Throwable
+ {
+ return (String)invocation.getArguments()[0];
+ }
+ });
FilterChain chain = mock(FilterChain.class);
// execute 3 requests - 1 for bla.js, 1 for bla.css and 1 for bla.img
http://git-wip-us.apache.org/repos/asf/wicket/blob/b5f33036/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebResponseTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebResponseTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebResponseTest.java
index a51f283..81d149f 100644
--- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebResponseTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebResponseTest.java
@@ -27,8 +27,6 @@ import java.io.StringWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
-import org.apache.wicket.util.time.Time;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Matchers;
@@ -49,7 +47,7 @@ public class ServletWebResponseTest extends Assert
@Test
public void sendRedirectAjax() throws IOException
{
- final String url = "relative/path";
+ final String url = "./relative/path";
ServletWebRequest webRequest = mock(ServletWebRequest.class);
when(webRequest.isAjax()).thenReturn(Boolean.TRUE);
@@ -69,7 +67,7 @@ public class ServletWebResponseTest extends Assert
verify(httpServletResponse).addHeader("Ajax-Location", url);
verify(httpServletResponse).setContentType("text/xml;charset=UTF-8");
assertEquals(
- "<ajax-response><redirect><![CDATA[relative/path]]></redirect></ajax-response>",
+ "<ajax-response><redirect><![CDATA[./relative/path]]></redirect></ajax-response>",
writer.toString());
assertTrue(webResponse.isRedirect());
@@ -81,12 +79,16 @@ public class ServletWebResponseTest extends Assert
* Redirects in normal (non-Ajax) requests should call HttpServletResponse's sendRedirect()
* which cares to make the url absolute
*
+ * https://issues.apache.org/jira/browse/WICKET-4260
+ *
+ * Redirect to relative url should be stripped of leading dot
+ *
* @throws IOException
*/
@Test
public void sendRedirect() throws IOException
{
- final String url = "relative/path";
+ final String url = "./relative/path";
ServletWebRequest webRequest = mock(ServletWebRequest.class);
when(webRequest.isAjax()).thenReturn(Boolean.FALSE);
@@ -97,9 +99,7 @@ public class ServletWebResponseTest extends Assert
ServletWebResponse webResponse = new ServletWebResponse(webRequest, httpServletResponse);
webResponse.sendRedirect(url);
- verify(httpServletResponse).sendRedirect(url);
+ verify(httpServletResponse).sendRedirect("relative/path");
assertTrue(webResponse.isRedirect());
-
}
-
-}
+}
\ No newline at end of file