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
                {

Reply via email to