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