WICKET-4401 Redirect after sign in with SignInPanel does not always reach homepage
Append slash if the generated url ends with '..'. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/19bc50d0 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/19bc50d0 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/19bc50d0 Branch: refs/heads/wicket-1.5.x Commit: 19bc50d01996ebafa45d974f4274cf5b1f075bfc Parents: 72b6f63 Author: martin-g <[email protected]> Authored: Fri Feb 24 08:39:47 2012 +0100 Committer: martin-g <[email protected]> Committed: Fri Feb 24 08:40:37 2012 +0100 ---------------------------------------------------------------------- .../wicket/request/cycle/UrlRendererTest.java | 12 ++++++++++ .../org/apache/wicket/request/UrlRenderer.java | 17 +++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/19bc50d0/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java index 8e30778..4a3f6f7 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java @@ -148,4 +148,16 @@ public class UrlRendererTest extends TestCase UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("?0"))); assertEquals(".", r1.renderUrl(Url.parse(""))); } + + /** + * https://issues.apache.org/jira/browse/WICKET-4401 + * + * A Url should not ends with '..' because some web containers do not handle it + * properly. Using '../' works better. + */ + public void test13() + { + UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar"))); + assertEquals("../", r1.renderUrl(Url.parse(""))); + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/19bc50d0/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java b/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java index d636450..f762aef 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java @@ -225,7 +225,6 @@ public class UrlRenderer } else { - for (int i = common + 1; i < baseUrlSize; ++i) { newSegments.add(".."); @@ -234,7 +233,21 @@ public class UrlRenderer newSegments.addAll(urlSegments); String renderedUrl = new Url(newSegments, url.getQueryParameters()).toString(); - return Strings.isEmpty(renderedUrl) ? "." : renderedUrl; + String result; + if (Strings.isEmpty(renderedUrl)) + { + result = "."; + } + else if (renderedUrl.endsWith("..")) + { + // WICKET-4401 + result = renderedUrl + '/'; + } + else + { + result = renderedUrl; + } + return result; } }
