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


Reply via email to