You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2008/09/18 13:12:22 UTC
svn commit: r696631 - in /wicket/sandbox/knopp/experimental/wicket/src:
main/java/org/apache/_wicket/request/Url.java
test/java/org/apache/_wicket/request/UrlTest.java
Author: knopp
Date: Thu Sep 18 04:12:22 2008
New Revision: 696631
URL: http://svn.apache.org/viewvc?rev=696631&view=rev
Log: (empty)
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/Url.java
wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/UrlTest.java
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/Url.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/Url.java?rev=696631&r1=696630&r2=696631&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/Url.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/_wicket/request/Url.java Thu Sep 18 04:12:22 2008
@@ -19,12 +19,13 @@
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
-import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.protocol.http.WicketURLDecoder;
+import org.apache.wicket.protocol.http.WicketURLEncoder;
import org.apache.wicket.util.lang.Objects;
import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.string.Strings;
@@ -278,11 +279,11 @@
public String toString()
{
StringBuilder result = new StringBuilder();
- result.append(encode(getName()));
+ result.append(encodeParameter(getName()));
if (!Strings.isEmpty(getValue()))
{
result.append('=');
- result.append(encode(getValue()));
+ result.append(encodeParameter(getValue()));
}
return result.toString();
}
@@ -311,33 +312,24 @@
return Objects.hashCode(getSegments(), getQueryParameters());
}
- private static String encode(String string)
+ private static String encodeSegment(String string)
{
- try
- {
- String s = URLEncoder.encode(string, "UTF-8");
-
- // According to http://www.rfc-editor.org/rfc/rfc1738.txt
- // ! doesn't have to be encoded
- s = s.replace("%21", "!");
- return s;
- }
- catch (UnsupportedEncodingException e)
- {
- throw new WicketRuntimeException(e);
- }
+ return WicketURLEncoder.PATH_INSTANCE.encode(string);
}
+
+ private static String decodeSegment(String string)
+ {
+ return WicketURLDecoder.PATH_INSTANCE.decode(string);
+ }
- private static String decode(String string)
+ private static String encodeParameter(String string)
{
- try
- {
- return URLDecoder.decode(string, "UTF-8");
- }
- catch (UnsupportedEncodingException e)
- {
- throw new WicketRuntimeException(e);
- }
+ return WicketURLEncoder.QUERY_INSTANCE.encode(string);
+ }
+
+ private static String decodeParameter(String string)
+ {
+ return WicketURLDecoder.QUERY_INSTANCE.decode(string);
}
@Override
@@ -350,7 +342,7 @@
{
result.append('/');
}
- result.append(encode(s));
+ result.append(encodeSegment(s));
}
boolean first = true;
@@ -376,7 +368,7 @@
{
if (qp.indexOf('=') == -1)
{
- return new QueryParameter(decode(qp), "");
+ return new QueryParameter(decodeParameter(qp), "");
}
String parts[] = qp.split("=");
if (parts.length == 0)
@@ -385,11 +377,11 @@
}
else if (parts.length == 1)
{
- return new QueryParameter("", decode(parts[0]));
+ return new QueryParameter("", decodeParameter(parts[0]));
}
else
{
- return new QueryParameter(decode(parts[0]), decode(parts[1]));
+ return new QueryParameter(decodeParameter(parts[0]), decodeParameter(parts[1]));
}
}
@@ -447,7 +439,7 @@
{
if (s != null)
{
- result.segments.add(decode(s));
+ result.segments.add(decodeSegment(s));
}
}
}
Modified: wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/UrlTest.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/UrlTest.java?rev=696631&r1=696630&r2=696631&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/UrlTest.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/test/java/org/apache/_wicket/request/UrlTest.java Thu Sep 18 04:12:22 2008
@@ -159,7 +159,7 @@
url.setQueryParameter("a", "b");
url.setQueryParameter("x?&4", "y=z");
- assertEquals("foo/b%3Dr/b%26z/x%3F?a=b&x%3F%264=y%3Dz", url.toString());
+ assertEquals("foo/b=r/b&z/x%3F?a=b&x?%264=y%3Dz", url.toString());
}
}