Updated Branches: refs/heads/master f837632cf -> 0be7422c7
WICKET-4338 reverted, post parameters don't belong to page parameters, change signature IPageParametersEncoder#decodePageParameters(Url) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0be7422c Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0be7422c Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0be7422c Branch: refs/heads/master Commit: 0be7422c7df1fe1b92b7456a19dffd7f55be6255 Parents: f837632 Author: Sven Meier <[email protected]> Authored: Thu Feb 23 23:51:57 2012 +0100 Committer: Sven Meier <[email protected]> Committed: Thu Feb 23 23:51:57 2012 +0100 ---------------------------------------------------------------------- .../wicket/request/mapper/AbstractMapper.java | 2 +- .../mapper/parameter/IPageParametersEncoder.java | 7 +- .../mapper/parameter/PageParametersEncoder.java | 20 +--- .../parameter/UrlPathPageParametersEncoder.java | 8 +- .../parameter/PageParametersEncoderTest.java | 90 +-------------- .../UrlPathPageParametersEncoderTest.java | 58 +--------- 6 files changed, 25 insertions(+), 160 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java index 31e713a..266c10e 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java @@ -149,7 +149,7 @@ public abstract class AbstractMapper implements IRequestMapper removeMetaParameter(urlCopy); } - return encoder.decodePageParameters(request.cloneWithUrl(urlCopy)); + return encoder.decodePageParameters(urlCopy); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParametersEncoder.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParametersEncoder.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParametersEncoder.java index 35d3ec8..cef8f50 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParametersEncoder.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParametersEncoder.java @@ -17,7 +17,6 @@ package org.apache.wicket.request.mapper.parameter; import org.apache.wicket.request.IRequestHandler; -import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; /** @@ -32,6 +31,7 @@ public interface IPageParametersEncoder * the URL generated for {@link IRequestHandler}. * * @param pageParameters + * parameters to encode * @return Url generated from the page parameters */ Url encodePageParameters(PageParameters pageParameters); @@ -40,8 +40,9 @@ public interface IPageParametersEncoder * Decodes the given URL to {@link PageParameters}. The URL will have all * {@link IRequestHandler} specified segments/parameters stripped. * - * @param request + * @param url + * url to decode * @return {@link PageParameters} instance or <code>null</code> if empty */ - PageParameters decodePageParameters(Request request); + PageParameters decodePageParameters(Url url); } http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java index 5687a71..53bdbcf 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java @@ -16,13 +16,8 @@ */ package org.apache.wicket.request.mapper.parameter; -import java.util.List; - -import org.apache.wicket.request.IRequestParameters; -import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; import org.apache.wicket.request.Url.QueryParameter; -import org.apache.wicket.util.string.StringValue; /** * Simple encoder with direct indexed/named parameters mapping. @@ -41,25 +36,20 @@ public class PageParametersEncoder implements IPageParametersEncoder /** * @see org.apache.wicket.request.mapper.parameter.IPageParametersEncoder#decodePageParameters(org.apache.wicket.request.Request) */ - public PageParameters decodePageParameters(final Request request) + public PageParameters decodePageParameters(final Url url) { PageParameters parameters = new PageParameters(); int i = 0; - for (String s : request.getUrl().getSegments()) + for (String s : url.getSegments()) { parameters.set(i, s); ++i; } - - IRequestParameters requestParameters = request.getRequestParameters(); - for (String paramName : requestParameters.getParameterNames()) + + for (QueryParameter p : url.getQueryParameters()) { - List<StringValue> parameterValues = requestParameters.getParameterValues(paramName); - for (StringValue paramValue : parameterValues) - { - parameters.add(paramName, paramValue); - } + parameters.add(p.getName(), p.getValue()); } return parameters.isEmpty() ? null : parameters; http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java index f31f5c1..5ac4628 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java @@ -18,7 +18,6 @@ package org.apache.wicket.request.mapper.parameter; import java.util.Iterator; -import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.string.Strings; @@ -30,7 +29,8 @@ import org.apache.wicket.util.string.Strings; * {@link PageParametersEncoder}. The parameters are encoded in the following format: * {@code /param1Name/param1Value/param2Name/param2Value}. * </p> - * <strong>Note</strong>: Because of the nature of the encoder it doesn't support POST request parameters. + * <strong>Note</strong>: Because of the nature of the encoder it doesn't support POST request + * parameters. * <p> * This used to be the default way of encoding page parameters in 1.4.x applications. Newer 1.5.x+ * applications use the query string, by default. This class facilitates backwards compatibility and @@ -64,11 +64,11 @@ public class UrlPathPageParametersEncoder implements IPageParametersEncoder return url; } - public PageParameters decodePageParameters(Request request) + public PageParameters decodePageParameters(Url url) { PageParameters params = new PageParameters(); - for (Iterator<String> segment = request.getUrl().getSegments().iterator(); segment.hasNext();) + for (Iterator<String> segment = url.getSegments().iterator(); segment.hasNext();) { String key = segment.next(); if (Strings.isEmpty(key)) http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoderTest.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoderTest.java b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoderTest.java index e07439f..0490d0c 100644 --- a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoderTest.java +++ b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoderTest.java @@ -16,19 +16,7 @@ */ package org.apache.wicket.request.mapper.parameter; -import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import org.apache.wicket.request.IRequestParameters; -import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; -import org.apache.wicket.util.string.StringValue; import org.junit.Assert; import org.junit.Test; @@ -38,89 +26,21 @@ import org.junit.Test; public class PageParametersEncoderTest extends Assert { /** - * Tests that PageParametersEncoder decodes both GET and POST parameters + * Tests that PageParametersEncoder decodes parameters + * * @throws Exception */ @Test - public void decodePostParameters() throws Exception + public void decodeParameters() throws Exception { PageParametersEncoder encoder = new PageParametersEncoder(); - Request request = new Request() - { - @Override - public Url getUrl() - { - return Url.parse("idx1/idx2?named1=value1&named2=value2"); - } - - @Override - public Url getClientUrl() - { - return null; - } - - @Override - public Locale getLocale() - { - return null; - } - - @Override - public Charset getCharset() - { - return null; - } - @Override - public Object getContainerRequest() - { - return null; - } + Url url = Url.parse("idx1/idx2?named1=value1&named2=value2"); - @Override - public IRequestParameters getPostParameters() - { - return new PostParameters(); - } - }; - - PageParameters pageParameters = encoder.decodePageParameters(request); + PageParameters pageParameters = encoder.decodePageParameters(url); assertEquals("idx1", pageParameters.get(0).toOptionalString()); assertEquals("idx2", pageParameters.get(1).toOptionalString()); assertEquals("value1", pageParameters.get("named1").toOptionalString()); assertEquals("value2", pageParameters.get("named2").toOptionalString()); - assertEquals("1", pageParameters.get("postOne").toOptionalString()); - assertEquals("2", pageParameters.getValues("postTwo").get(0).toOptionalString()); - assertEquals("2.1", pageParameters.getValues("postTwo").get(1).toOptionalString()); - } - - /** - * Mock IRequestParameters that provides static POST parameters - */ - private static class PostParameters implements IRequestParameters - { - private final Map<String, List<StringValue>> params = new HashMap<String, List<StringValue>>(); - { - params.put("postOne", Arrays.asList(StringValue.valueOf("1"))); - params.put("postTwo", Arrays.asList(StringValue.valueOf("2"), StringValue.valueOf("2.1"))); - } - - public Set<String> getParameterNames() - { - return params.keySet(); - } - - public StringValue getParameterValue(String name) - { - List<StringValue> values = params.get(name); - return (values != null && !values.isEmpty()) ? values.get(0) - : StringValue.valueOf((String)null); - } - - public List<StringValue> getParameterValues(String name) - { - List<StringValue> values = params.get(name); - return values != null ? Collections.unmodifiableList(values) : null; - } } } http://git-wip-us.apache.org/repos/asf/wicket/blob/0be7422c/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoderTest.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoderTest.java b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoderTest.java index a1a2534..9eca67c 100644 --- a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoderTest.java +++ b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoderTest.java @@ -16,10 +16,6 @@ */ package org.apache.wicket.request.mapper.parameter; -import java.nio.charset.Charset; -import java.util.Locale; - -import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; import org.junit.Assert; import org.junit.Test; @@ -85,10 +81,9 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrl() { Url url = Url.parse("name1/value1/name2/value2"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -103,10 +98,9 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrlWithTrailingSlash() { Url url = Url.parse("name1/value1/name2/value2/"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -121,10 +115,9 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrlWithTrailingSlashAfterName() { Url url = Url.parse("name1/value1/name2/value2/name3"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -138,10 +131,9 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrlWithLeadingSlash() { Url url = Url.parse("/name1/value1/name2/value2"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -156,10 +148,9 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrlWithSlashesInTheMiddle() { Url url = Url.parse("name1/value1////name2/value2"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -174,49 +165,12 @@ public class UrlPathPageParametersEncoderTest extends Assert public void decodeUrlWithSlashesInTheMiddleAndEmptyValue() { Url url = Url.parse("name1/value1////name2//"); - Request request = getRequest(url); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(request); + PageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); assertEquals("", parameters.get("name2").toString()); } - - private Request getRequest(final Url url) - { - return new Request() - { - @Override - public Url getUrl() - { - return url; - } - - @Override - public Locale getLocale() - { - return null; - } - - @Override - public Object getContainerRequest() - { - return null; - } - - @Override - public Url getClientUrl() - { - return url; - } - - @Override - public Charset getCharset() - { - return null; - } - }; - } }
