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;
                }
        }
 

Reply via email to