Repository: wicket Updated Branches: refs/heads/master 61d6264b2 -> c572210a6
WICKET-5774 UrlRenderer should render full and absolute urls in their canonical form Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c572210a Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c572210a Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c572210a Branch: refs/heads/master Commit: c572210a66025611973fa581d3890d5b31023448 Parents: 61d6264 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Nov 24 19:33:44 2014 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Nov 24 19:34:20 2014 +0100 ---------------------------------------------------------------------- .../wicket/request/cycle/UrlRendererTest.java | 36 ++++++++++++++++++++ .../org/apache/wicket/request/UrlRenderer.java | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/c572210a/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 3fecf79..e142fdf 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 @@ -583,4 +583,40 @@ public class UrlRendererTest extends Assert String rendered = renderer.renderRelativeUrl(Url.parse("/filter;jsessionid=1234")); assertEquals("../", rendered); } + + /** + * https://issues.apache.org/jira/browse/WICKET-5774 + */ + @Test + public void renderFullUrlWithNoOpLeadingSegments() + { + UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("any/thing"))); + + String fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/./../one/two/three")); + assertEquals("http://www.example.com:8888/one/two/three", fullUrl); + + fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/.././one/two/three")); + assertEquals("http://www.example.com:8888/one/two/three", fullUrl); + + fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/one/.././two/three")); + assertEquals("http://www.example.com:8888/two/three", fullUrl); + } + + /** + * https://issues.apache.org/jira/browse/WICKET-5774 + */ + @Test + public void renderContextAbsoluteUrlWithNoOpLeadingSegments() + { + UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("any/thing"))); + + String fullUrl = renderer.renderFullUrl(Url.parse("/./../one/two/three")); + assertEquals("/one/two/three", fullUrl); + + fullUrl = renderer.renderFullUrl(Url.parse("/.././one/two/three")); + assertEquals("/one/two/three", fullUrl); + + fullUrl = renderer.renderFullUrl(Url.parse("/one/.././two/three")); + assertEquals("/two/three", fullUrl); + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/c572210a/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 0c83d82..e31991d 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 @@ -141,7 +141,7 @@ public class UrlRenderer final String path; if (url.isFull() || url.isContextAbsolute()) { - path = url.toString(); + path = url.canonical().toString(); } else {
