You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/01/22 16:12:30 UTC
svn commit: r1062172 - in /wicket/trunk:
wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java
wicket-request/src/main/java/org/apache/wicket/request/Url.java
Author: mgrigorov
Date: Sat Jan 22 15:12:30 2011
New Revision: 1062172
URL: http://svn.apache.org/viewvc?rev=1062172&view=rev
Log:
WICKET-3363 forminput examle: switching locales does not have the desired effect.
Properly handle './' segments when resolving relative url.
'./' is the current segment/folder, so they must be dropped.
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java?rev=1062172&r1=1062171&r2=1062172&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/UrlTest.java Sat Jan 22 15:12:30 2011
@@ -22,7 +22,6 @@ import java.util.List;
import junit.framework.TestCase;
-import org.apache.wicket.request.Url;
import org.apache.wicket.request.Url.QueryParameter;
/**
@@ -322,4 +321,40 @@ public class UrlTest extends TestCase
url.concatSegments(Arrays.asList("..", ".."));
assertEquals(Url.parse("fff/"), url);
}
+
+ /**
+ * @see <a href="https://issues.apache.org/jira/browse/WICKET-3363">WICKET-3363</a>
+ */
+ public void testResolveRelative1()
+ {
+ Url relative = Url.parse("./a/b?p1=v1");
+ Url baseUrl = Url.parse("c/d?p2=v2");
+ baseUrl.resolveRelative(relative);
+
+ assertEquals("c/a/b?p1=v1", baseUrl.toString());
+ }
+
+ /**
+ * @see <a href="https://issues.apache.org/jira/browse/WICKET-3363">WICKET-3363</a>
+ */
+ public void testResolveRelative2()
+ {
+ Url relative = Url.parse("a/b?p1=v1");
+ Url baseUrl = Url.parse("c/d?p2=v2");
+ baseUrl.resolveRelative(relative);
+
+ assertEquals("c/a/b?p1=v1", baseUrl.toString());
+ }
+
+ /**
+ * @see <a href="https://issues.apache.org/jira/browse/WICKET-3363">WICKET-3363</a>
+ */
+ public void testResolveRelative3()
+ {
+ Url relative = Url.parse("../a/b?p1=v1");
+ Url baseUrl = Url.parse("c/d");
+ baseUrl.resolveRelative(relative);
+
+ assertEquals("a/b?p1=v1", baseUrl.toString());
+ }
}
Modified: wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java?rev=1062172&r1=1062171&r2=1062172&view=diff
==============================================================================
--- wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java (original)
+++ wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java Sat Jan 22 15:12:30 2011
@@ -770,8 +770,15 @@ public final class Url implements Serial
// strip the first non-folder segment
getSegments().remove(getSegments().size() - 1);
+ // remove all './' (current folder) from the relative url
+ if (!relative.getSegments().isEmpty() && ".".equals(relative.getSegments().get(0)))
+ {
+ relative.getSegments().remove(0);
+ }
+
// process any ../ segments in the relative url
- while (!relative.getSegments().isEmpty() && "".equals(relative.getSegments().get(0)))
+ while (!relative.getSegments().isEmpty() &&
+ ("".equals(relative.getSegments().get(0)) || "..".equals(relative.getSegments().get(0))))
{
relative.getSegments().remove(0);
getSegments().remove(getSegments().size() - 1);