Author: mgrigorov
Date: Sun Jan 16 12:35:52 2011
New Revision: 1059546

URL: http://svn.apache.org/viewvc?rev=1059546&view=rev
Log:
WICKET-3337 Url to the home page is not correct when the current base url has 
only one segment

Use './' when base url and target url have the same number of segments.
Changelist with updated test html expectations will be committed separately to 
not add noise to the actual diff for the fix.

Modified:
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
    
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java?rev=1059546&r1=1059545&r2=1059546&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
 Sun Jan 16 12:35:52 2011
@@ -26,7 +26,7 @@ import org.apache.wicket.request.UrlRend
 import org.mockito.Mockito;
 
 /**
- * @author MAtej Knopp
+ * @author Matej Knopp
  */
 public class UrlRendererTest extends TestCase
 {
@@ -36,8 +36,8 @@ public class UrlRendererTest extends Tes
        public void test1()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("foo/bar/baz?a=b"));
-               assertEquals("xyz?x=y", 
r1.renderUrl(Url.parse("foo/bar/xyz?x=y")));
-               assertEquals("baz/xyz?x=y", 
r1.renderUrl(Url.parse("foo/bar/baz/xyz?x=y")));
+               assertEquals("./xyz?x=y", 
r1.renderUrl(Url.parse("foo/bar/xyz?x=y")));
+               assertEquals("./baz/xyz?x=y", 
r1.renderUrl(Url.parse("foo/bar/baz/xyz?x=y")));
                assertEquals("../aaa/xyz?x=y", 
r1.renderUrl(Url.parse("foo/aaa/xyz?x=y")));
                assertEquals("../../bbb/aaa/xyz?x=y", 
r1.renderUrl(Url.parse("bbb/aaa/xyz?x=y")));
        }
@@ -67,7 +67,7 @@ public class UrlRendererTest extends Tes
        public void test5()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("url"));
-               assertEquals("url?1", r1.renderUrl(Url.parse("url?1")));
+               assertEquals("./url?1", r1.renderUrl(Url.parse("url?1")));
        }
 
        /**
@@ -76,7 +76,7 @@ public class UrlRendererTest extends Tes
        public void test6()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("url/"));
-               assertEquals("x?1", r1.renderUrl(Url.parse("url/x?1")));
+               assertEquals("./x?1", r1.renderUrl(Url.parse("url/x?1")));
        }
 
        /**
@@ -95,7 +95,7 @@ public class UrlRendererTest extends Tes
        public void test8()
        {
                UrlRenderer r1 = new 
UrlRenderer(Url.parse("en/first-test-page?16-1.ILinkListener-l1"));
-               assertEquals("first-test-page/indexed1/indexed2/indexed3?p1=v1",
+               
assertEquals("./first-test-page/indexed1/indexed2/indexed3?p1=v1",
                        
r1.renderUrl(Url.parse("en/first-test-page/indexed1/indexed2/indexed3?p1=v1")));
        }
 
@@ -137,4 +137,13 @@ public class UrlRendererTest extends Tes
                        assertTrue(true);
                }
        }
+
+       /**
+        * <a 
href="https://issues.apache.org/jira/browse/WICKET-3337";>WICKET-3337</a>
+        */
+       public void test11()
+       {
+               UrlRenderer r1 = new UrlRenderer(Url.parse("a"));
+               assertEquals(".", r1.renderUrl(Url.parse("")));
+       }
 }

Modified: 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java?rev=1059546&r1=1059545&r2=1059546&view=diff
==============================================================================
--- 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
 (original)
+++ 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
 Sun Jan 16 12:35:52 2011
@@ -124,9 +124,18 @@ public class UrlRenderer
                                urlSegments.add(0, last);
                        }
 
-                       for (int i = common + 1; i < baseUrlSegments.size(); 
++i)
+                       int baseUrlSize = baseUrlSegments.size();
+                       if (common + 1 == baseUrlSize)
                        {
-                               newSegments.add("..");
+                               newSegments.add(".");
+                       }
+                       else
+                       {
+
+                               for (int i = common + 1; i < baseUrlSize; ++i)
+                               {
+                                       newSegments.add("..");
+                               }
                        }
                        newSegments.addAll(urlSegments);
 
@@ -151,7 +160,7 @@ public class UrlRenderer
                }
 
                PrependingStringBuffer buffer = new PrependingStringBuffer(url);
-               for (int i = 0; i < baseUrl.getSegments().size() - 1; ++i)
+               for (int i = 0; i < getBaseUrl().getSegments().size() - 1; ++i)
                {
                        buffer.prepend("../");
                }


Reply via email to