The commit diff looked like you renamed and removed the test for UrlDecoder.
Sorry. It is here.

I'll move the test for Url in -request.

On Sat, Jun 25, 2011 at 1:18 PM, Peter Ertl <[email protected]> wrote:
> Hi Martin,
>
> what test for URLDecoder are you talking about? To the best of my knowledge I 
> did not delete anything.
>
> I _copied_ from UrlEncoderTest but the file is still there.
>
> Merging UrlTest from wicket-core with UrlTest in wicket-request makes sense. 
> Did not realize there's another test case with the same name in another 
> module. Having them split is odd indeed.
>
> Am 25.06.2011 um 04:24 schrieb Martin Grigorov:
>
>> Why the hell the test for URLDecoder has been killed and replaced with
>> something else ?!?
>> We have tests for Url at org.apache.wicket.request.UrlTest in wicket-core.
>> I agree that it belongs to wicket-request and to be able to move it
>> there it should get rid of WicketObjects usage but this kind of
>> killing other tests is totally wrong!
>>
>> On Sat, Jun 25, 2011 at 4:22 AM,  <[email protected]> wrote:
>>> Author: pete
>>> Date: Sat Jun 25 01:22:07 2011
>>> New Revision: 1139477
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1139477&view=rev
>>> Log:
>>> WICKET-3834 WicketTester does not follow absolute redirects: make 
>>> Url.parse(..) capable of parsing absolute urls
>>>
>>> Added:
>>>    
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
>>>      - copied, changed from r1139453, 
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
>>> Modified:
>>>    
>>> wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Url.java
>>>
>>> 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=1139477&r1=1139476&r2=1139477&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 Jun 25 01:22:07 2011
>>> @@ -116,10 +116,11 @@ public final class Url implements Serial
>>>         * Parses the given URL string.
>>>         *
>>>         * @param url
>>> +        *           full absolute or relative url with query string
>>>         * @param charset
>>>         * @return Url object
>>>         */
>>> -       public static Url parse(final String url, Charset charset)
>>> +       public static Url parse(String url, Charset charset)
>>>        {
>>>                Args.notNull(url, "url");
>>>
>>> @@ -128,36 +129,79 @@ public final class Url implements Serial
>>>                // the url object resolved the charset, use that
>>>                charset = result.getCharset();
>>>
>>> -               String segments;
>>> -               String query;
>>> +               // extract query string part
>>> +               final String queryString;
>>> +               final String absoluteUrl;
>>>
>>> -               int qIndex = url.indexOf('?');
>>> +               int queryAt = url.indexOf('?');
>>>
>>> -               if (qIndex == -1)
>>> +               if (queryAt == -1)
>>>                {
>>> -                       segments = url;
>>> -                       query = "";
>>> +                       queryString = "";
>>> +                       absoluteUrl = url;
>>>                }
>>>                else
>>>                {
>>> -                       segments = url.substring(0, qIndex);
>>> -                       query = url.substring(qIndex + 1);
>>> +                       absoluteUrl = url.substring(0, queryAt);
>>> +                       queryString = url.substring(queryAt + 1);
>>>                }
>>> +
>>> +               // get absolute / relative part of url
>>> +               String relativeUrl;
>>>
>>> -               if (segments.length() > 0)
>>> +               // absolute urls contain a scheme://
>>> +               final int protocolAt = absoluteUrl.indexOf("://");
>>> +
>>> +               if (protocolAt != -1)
>>> +               {
>>> +                       result.protocol = absoluteUrl.substring(0, 
>>> protocolAt);
>>> +                       final String afterProto = 
>>> absoluteUrl.substring(protocolAt + 3);
>>> +                       final String hostAndPort;
>>> +
>>> +                       int relativeAt = afterProto.indexOf('/');
>>> +
>>> +                       if (relativeAt == -1)
>>> +                       {
>>> +                               relativeUrl = "";
>>> +                               hostAndPort = afterProto;
>>> +                       }
>>> +                       else
>>> +                       {
>>> +                               relativeUrl = 
>>> afterProto.substring(relativeAt);
>>> +                               hostAndPort = afterProto.substring(0, 
>>> relativeAt);
>>> +                       }
>>> +
>>> +                       int portAt = hostAndPort.indexOf(':');
>>> +
>>> +                       if (portAt == -1)
>>> +                       {
>>> +                               result.host = hostAndPort;
>>> +                               result.port = null;
>>> +                       }
>>> +                       else
>>> +                       {
>>> +                               result.host = hostAndPort.substring(0, 
>>> portAt);
>>> +                               result.port = 
>>> Integer.parseInt(hostAndPort.substring(portAt + 1));
>>> +                       }
>>> +               }
>>> +               else
>>>                {
>>> +                       relativeUrl = absoluteUrl;
>>> +               }
>>>
>>> +               if (relativeUrl.length() > 0)
>>> +               {
>>>                        boolean removeLast = false;
>>> -                       if (segments.endsWith("/"))
>>> +                       if (relativeUrl.endsWith("/"))
>>>                        {
>>>                                // we need to append something and remove it 
>>> after splitting
>>>                                // because otherwise the
>>>                                // trailing slashes will be lost
>>> -                               segments += "/x";
>>> +                               relativeUrl += "/x";
>>>                                removeLast = true;
>>>                        }
>>>
>>> -                       String segmentArray[] = Strings.split(segments, 
>>> '/');
>>> +                       String segmentArray[] = Strings.split(relativeUrl, 
>>> '/');
>>>
>>>                        if (removeLast)
>>>                        {
>>> @@ -173,9 +217,9 @@ public final class Url implements Serial
>>>                        }
>>>                }
>>>
>>> -               if (query.length() > 0)
>>> +               if (queryString.length() > 0)
>>>                {
>>> -                       String queryArray[] = Strings.split(query, '&');
>>> +                       String queryArray[] = Strings.split(queryString, 
>>> '&');
>>>                        for (String s : queryArray)
>>>                        {
>>>                                result.parameters.add(parseQueryParameter(s, 
>>> charset));
>>>
>>> Copied: 
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
>>>  (from r1139453, 
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java)
>>> URL: 
>>> http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java?p2=wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java&p1=wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java&r1=1139453&r2=1139477&rev=1139477&view=diff
>>> ==============================================================================
>>> --- 
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
>>>  (original)
>>> +++ 
>>> wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
>>>  Sat Jun 25 01:22:07 2011
>>> @@ -16,25 +16,67 @@
>>>  */
>>>  package org.apache.wicket.request;
>>>
>>> -import org.apache.wicket.util.crypt.CharEncoding;
>>> +import java.util.Arrays;
>>> +
>>>  import org.junit.Assert;
>>>  import org.junit.Test;
>>>
>>>  /**
>>> - * Tests for {@link UrlDecoder}
>>> + * Tests for {@link org.apache.wicket.request.Url}
>>>  */
>>> -public class UrlEncoderTest
>>> +public class UrlTest extends Assert
>>>  {
>>> +       @Test
>>> +       public void parseRelativeUrl()
>>> +       {
>>> +               Url url = Url.parse("foo");
>>> +               checkUrl(url, null, null, null, "foo");
>>> +               assertFalse(url.isAbsolute());
>>> +
>>> +               url = Url.parse("foo/bar/baz");
>>> +               checkUrl(url, null, null, null, "foo", "bar", "baz");
>>> +               assertFalse(url.isAbsolute());
>>> +
>>> +               url = Url.parse("?foobar");
>>> +               checkUrl(url, null, null, null);
>>> +               assertEquals("", 
>>> url.getQueryParameter("foobar").getValue());
>>> +               assertFalse(url.isAbsolute());
>>> +
>>> +               url = Url.parse("foo?a=123");
>>> +               checkUrl(url, null, null, null, "foo");
>>> +               assertEquals("123", url.getQueryParameter("a").getValue());
>>> +               assertFalse(url.isAbsolute());
>>> +
>>> +               url = Url.parse("/foo");
>>> +               checkUrl(url, null, null, null, "", "foo");
>>> +               assertTrue(url.isAbsolute());
>>> +       }
>>>
>>> -       /**
>>> -        * <a 
>>> href="https://issues.apache.org/jira/browse/WICKET-3721";>WICKET-3721</a> 
>>> Encode
>>> -        * apostrophes because otherwise they get XML encoded by 
>>> ComponentTag#writeOutput() to
>>> -        * &amp;#039; and eventually break links with javascript:
>>> -        */
>>>        @Test
>>> -       public void encodeApostrophe()
>>> +       public void parseAbsoluteUrl()
>>> +       {
>>> +               Url url = Url.parse("ftp://myhost:8081";);
>>> +               checkUrl(url, "ftp", "myhost", 8081);
>>> +               assertFalse(url.isAbsolute());
>>> +
>>> +               url = Url.parse("gopher://myhost:8081/foo";);
>>> +               checkUrl(url, "gopher", "myhost", 8081, "", "foo");
>>> +               assertTrue(url.isAbsolute());
>>> +
>>> +               url = Url.parse("https://myhost/foo";);
>>> +               checkUrl(url, "https", "myhost", null, "", "foo");
>>> +               assertTrue(url.isAbsolute());
>>> +
>>> +               url = Url.parse("https://myhost/foo:123";);
>>> +               checkUrl(url, "https", "myhost", null, "", "foo:123");
>>> +               assertTrue(url.isAbsolute());
>>> +       }
>>> +
>>> +       private void checkUrl(Url url, String protocol, String host, 
>>> Integer port, String... segments)
>>>        {
>>> -               Assert.assertEquals("someone%27s%20bad%20url",
>>> -                       UrlEncoder.FULL_PATH_INSTANCE.encode("someone's bad 
>>> url", CharEncoding.UTF_8));
>>> +               assertNotNull(url);
>>> +               assertEquals(host, url.getHost());
>>> +               assertEquals(port, url.getPort());
>>> +               assertEquals(Arrays.asList(segments), url.getSegments());
>>>        }
>>>  }
>>>
>>>
>>>
>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com
>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

Reply via email to