Updated Branches:
  refs/heads/wicket-1.5.x 23a59ea6d -> c073f4b2c

WICKET-4789 url rendering regression: keep trailing empty segment if base still 
has segments but relative has not

Merge 6f0863f431747e71b7a39a2c2ee44900955a858d from master


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c073f4b2
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c073f4b2
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c073f4b2

Branch: refs/heads/wicket-1.5.x
Commit: c073f4b2cb2fd5212b77065d96eac7fe0f5d846a
Parents: 23a59ea
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Oct 3 11:49:42 2012 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Oct 3 11:49:42 2012 +0300

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/request/Url.java   |   12 +++++--
 .../java/org/apache/wicket/request/UrlTest.java    |   29 ++++++++++++++-
 2 files changed, 36 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c073f4b2/wicket-request/src/main/java/org/apache/wicket/request/Url.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java 
b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index 8d190ae..8393d7d 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -79,14 +79,15 @@ public class Url implements Serializable
         * 
         * @author igor
         */
-       public static enum StringMode {
+       public static enum StringMode
+    {
                /** local urls are rendered without the host name */
                LOCAL,
                /**
                 * full urls are written with hostname. if the hostname is not 
set or one of segments is
                 * {@literal ..} an {@link IllegalStateException} is thrown.
                 */
-               FULL;
+               FULL
        }
 
        /**
@@ -982,7 +983,7 @@ public class Url implements Serializable
        {
                if (getSegments().size() > 0)
                {
-                       // strip the first non-folder segment
+                       // strip the first non-folder segment (if it is not 
empty)
                        getSegments().remove(getSegments().size() - 1);
                }
 
@@ -1012,6 +1013,11 @@ public class Url implements Serializable
                        }
                }
 
+               if (!getSegments().isEmpty() && 
relative.getSegments().isEmpty())
+               {
+                       getSegments().add("");
+               }
+
                // append the remaining relative segments
                getSegments().addAll(relative.getSegments());
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/c073f4b2/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java 
b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
index 0dbed56..527d4a8 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
@@ -492,6 +492,32 @@ public class UrlTest extends Assert
        }
 
        /**
+        * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-4789";>WICKET-4789</a>
+        */
+       @Test
+       public void resolveRelative_EmptyTrailingSegmentInBase()
+       {
+               Url relative = Url.parse("./?0-1.ILinkListener-link");
+               Url baseUrl = Url.parse("Home/");
+               baseUrl.resolveRelative(relative);
+
+               assertEquals("Home/?0-1.ILinkListener-link", 
baseUrl.toString());
+       }
+
+       /**
+        * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-4789";>WICKET-4789</a>
+        */
+       @Test
+       public void resolveRelative_EmptyTrailingSegmentInBase2()
+       {
+               Url relative = Url.parse("./foo/?0-1.ILinkListener-link");
+               Url baseUrl = Url.parse("Home/");
+               baseUrl.resolveRelative(relative);
+
+               assertEquals("Home/foo/?0-1.ILinkListener-link", 
baseUrl.toString());
+       }
+
+       /**
         * Tries to resolve a relative url against a base that has no segments
         */
        @Test
@@ -545,8 +571,7 @@ public class UrlTest extends Assert
                Url baseUrl = Url.parse("bar/baz");
                baseUrl.resolveRelative(relative);
 
-               assertEquals("bar?a=b", baseUrl.toString());
-               assertEquals("no empty segment", 1, 
baseUrl.getSegments().size());
+               assertEquals("bar/?a=b", baseUrl.toString());
        }
 
        /**

Reply via email to