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 2013/05/03 10:58:21 UTC

[02/27] git commit: Complement for WICKET-4664

Complement for WICKET-4664

Update on Url#getQueryString(), the result is now on par with the ones returned by HttpServletRequest :

  * does not contain the leading "?"
  * returns null when no query parameter is present


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ff4ebd89
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ff4ebd89
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ff4ebd89

Branch: refs/heads/wicket-4774
Commit: ff4ebd898e1f6a88979fb5a5bb078498e391adaa
Parents: 96832b4
Author: Cedric Gatay <ce...@gatay.fr>
Authored: Wed May 1 18:31:45 2013 +0200
Committer: Cedric Gatay <ce...@gatay.fr>
Committed: Wed May 1 18:31:45 2013 +0200

----------------------------------------------------------------------
 .../http/mock/MockHttpServletRequestTest.java      |   20 ++++++++-
 .../main/java/org/apache/wicket/request/Url.java   |   31 ++++++++++----
 2 files changed, 39 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ff4ebd89/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
index f8d7dc7..46e12d3 100755
--- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
@@ -50,7 +50,7 @@ public class MockHttpServletRequestTest extends WicketTestCase
 		assertEquals("myhost.mydomain.org", url.getHost());
 		assertEquals(new Integer(1234), url.getPort());
 		assertEquals("/foo/bar/baz.html", url.getPath());
-		assertEquals("?a=123&b=456", url.getQueryString());
+		assertEquals("a=123&b=456", url.getQueryString());
 
 		String pathInfo = request.getPathInfo();
 		assertEquals("/foo/bar/baz.html", pathInfo);
@@ -75,7 +75,7 @@ public class MockHttpServletRequestTest extends WicketTestCase
 		assertEquals("localhost", url.getHost());
 		assertEquals(new Integer(80), url.getPort());
 		assertEquals("/foo/bar/baz.html", url.getPath());
-		assertEquals("?a=123&b=456", url.getQueryString());
+		assertEquals("a=123&b=456", url.getQueryString());
 
 		String pathInfo = request.getPathInfo();
 		assertEquals("/foo/bar/baz.html", pathInfo);
@@ -100,11 +100,25 @@ public class MockHttpServletRequestTest extends WicketTestCase
 		assertEquals("localhost", url.getHost());
 		assertEquals(new Integer(80), url.getPort());
 		assertEquals(request.getContextPath() + request.getServletPath() + "/foo/bar/baz.html", url.getPath());
-		assertEquals("?a=123&b=456", url.getQueryString());
+		assertEquals("a=123&b=456", url.getQueryString());
 
 		String pathInfo = request.getPathInfo();
 		assertEquals("/foo/bar/baz.html", pathInfo);
 	}
+
+    /**
+     * WICKET-4664 - no query string returns null as per HttpServletRequest
+     */
+    @Test
+    public void testNoQueryString_returnsNull()
+    {
+        WicketTester tester = new WicketTester();
+        MockHttpServletRequest request = tester.getRequest();
+        request.setURL("my/servlet/without/query/param");
+        
+        Url url = request.getUrl();
+        assertNull(url.getQueryString());
+    }
 	
 	@Test
 	public void getSessionFromNonMockHttpSession()

http://git-wip-us.apache.org/repos/asf/wicket/blob/ff4ebd89/wicket-request/src/main/java/org/apache/wicket/request/Url.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index 5297857..c9ddc69 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -1125,27 +1125,40 @@ public class Url implements Serializable
 	 * 
 	 * @param charset
 	 *            character set for encoding
-	 * 
-	 * @return query string
+	 * @since Wicket 7 
+     *            the return value does not contain any "?" and could be null
+	 * @return query string (null if empty)
 	 */
 	public String getQueryString(Charset charset)
 	{
 		Args.notNull(charset, "charset");
 
-		StringBuilder query = new StringBuilder();
+		String queryString = null;
+		List<QueryParameter> queryParameters = getQueryParameters();
 
-		for (QueryParameter parameter : getQueryParameters())
+		if (queryParameters.size() != 0)
 		{
-			query.append(query.length() == 0 ? '?' : '&');
-			query.append(parameter.toString(charset));
+			StringBuilder query = new StringBuilder();
+
+			for (QueryParameter parameter : queryParameters)
+			{
+				if (query.length() != 0)
+				{
+					query.append('&');
+				}
+				query.append(parameter.toString(charset));
+			}
+			queryString = query.toString();
 		}
-		return query.toString();
+		return queryString;
 	}
 
 	/**
 	 * return query string part of url in original encoding
-	 * 
-	 * @return query string
+     * 
+     * @since Wicket 7 
+     *              the return value does not contain any "?" and could be null
+	 * @return query string (null if empty)
 	 */
 	public String getQueryString()
 	{