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 <[email protected]> Authored: Wed May 1 18:31:45 2013 +0200 Committer: Cedric Gatay <[email protected]> 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() {
