Updated Branches: refs/heads/wicket-4774 [created] 665a3e800
http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java index a342bd5..b6e9242 100644 --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java @@ -18,11 +18,6 @@ package org.apache.wicket.core.request.mapper; import org.apache.wicket.MockPage; import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler; -import org.apache.wicket.markup.html.link.ILinkListener; -import org.apache.wicket.request.IRequestHandler; -import org.apache.wicket.request.Url; -import org.apache.wicket.request.component.IRequestableComponent; -import org.apache.wicket.request.component.IRequestablePage; import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler; import org.apache.wicket.core.request.handler.IPageProvider; import org.apache.wicket.core.request.handler.IPageRequestHandler; @@ -31,6 +26,12 @@ import org.apache.wicket.core.request.handler.PageAndComponentProvider; import org.apache.wicket.core.request.handler.PageProvider; import org.apache.wicket.core.request.handler.RenderPageRequestHandler; import org.apache.wicket.core.request.mapper.PackageMapperTest.OuterPage.InnerPage; +import org.apache.wicket.markup.html.link.ILinkListener; +import org.apache.wicket.request.IRequestHandler; +import org.apache.wicket.request.Url; +import org.apache.wicket.request.component.IRequestableComponent; +import org.apache.wicket.request.component.IRequestablePage; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.lang.PackageName; import org.junit.Test; @@ -123,7 +124,7 @@ public class PackageMapperTest extends AbstractMapperTest IRequestablePage page = ((RenderPageRequestHandler)handler).getPage(); assertEquals(PAGE_CLASS_NAME, page.getClass().getSimpleName()); - PageParameters p = page.getPageParameters(); + IPageParameters p = page.getPageParameters(); assertEquals(1, p.getIndexedCount()); assertEquals("indexed1", p.get(0).toString()); @@ -159,7 +160,7 @@ public class PackageMapperTest extends AbstractMapperTest IRequestablePage page = ((RenderPageRequestHandler)handler).getPage(); checkPage(page, 15); - PageParameters p = page.getPageParameters(); + IPageParameters p = page.getPageParameters(); assertEquals(0, p.getIndexedCount()); assertEquals(0, p.getNamedKeys().size()); @@ -204,7 +205,7 @@ public class PackageMapperTest extends AbstractMapperTest assertEquals(ILinkListener.INTERFACE, h.getListenerInterface()); assertEquals("foo:bar", h.getComponent().getPageRelativePath()); - PageParameters p = page.getPageParameters(); + IPageParameters p = page.getPageParameters(); assertEquals(0, p.getIndexedCount()); assertEquals(0, p.getNamedKeys().size()); @@ -337,10 +338,11 @@ public class PackageMapperTest extends AbstractMapperTest public void encode4() { MockPage page = new MockPage(15); - page.getPageParameters().set(0, "i1"); - page.getPageParameters().set(1, "i2"); - page.getPageParameters().set("a", "b"); - page.getPageParameters().set("b", "c"); + PageParameters parameters = page.getPageParameters().mutable(); + parameters.set(0, "i1"); + parameters.set(1, "i2"); + parameters.set("a", "b"); + parameters.set("b", "c"); page.setCreatedBookmarkable(true); IPageProvider provider = new PageProvider(page); @@ -357,10 +359,11 @@ public class PackageMapperTest extends AbstractMapperTest public void encode5() { MockPage page = new MockPage(15); - page.getPageParameters().set(0, "i1"); - page.getPageParameters().set(1, "i2"); - page.getPageParameters().set("a", "b"); - page.getPageParameters().set("b", "c"); + PageParameters pageParameters = page.getPageParameters().mutable(); + pageParameters.set(0, "i1"); + pageParameters.set(1, "i2"); + pageParameters.set("a", "b"); + pageParameters.set("b", "c"); page.setCreatedBookmarkable(false); @@ -381,10 +384,11 @@ public class PackageMapperTest extends AbstractMapperTest public void encode6() { MockPage page = new MockPage(15); - page.getPageParameters().set(0, "i1"); - page.getPageParameters().set(1, "i2"); - page.getPageParameters().set("a", "b"); - page.getPageParameters().set("b", "c"); + PageParameters parameters = page.getPageParameters().mutable(); + parameters.set(0, "i1"); + parameters.set(1, "i2"); + parameters.set("a", "b"); + parameters.set("b", "c"); // shouldn't make any difference for BookmarkableListenerInterfaceRequestHandler, // as this explicitely says the url must be bookmarkable @@ -408,10 +412,11 @@ public class PackageMapperTest extends AbstractMapperTest public void encode7() { MockPage page = new MockPage(15); - page.getPageParameters().set(0, "i1"); - page.getPageParameters().set(1, "i2"); - page.getPageParameters().set("a", "b"); - page.getPageParameters().set("b", "c"); + PageParameters parameters = page.getPageParameters().mutable(); + parameters.set(0, "i1"); + parameters.set(1, "i2"); + parameters.set("a", "b"); + parameters.set("b", "c"); // shouldn't make any difference for BookmarkableListenerInterfaceRequestHandler, // as this explicitely says the url must be bookmarkable http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java index a0e3512..64cd303 100644 --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java @@ -26,7 +26,7 @@ import org.apache.wicket.request.IRequestMapper; import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler; -import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.request.resource.IResource; import org.apache.wicket.request.resource.ResourceReference; import org.apache.wicket.request.resource.SharedResourceReference; @@ -138,7 +138,7 @@ public class ResourceMapperTest extends WicketTestCase assertEquals(request.getUrl(), mapper.mapHandler(requestHandler)); tester.processRequest(requestHandler); - PageParameters params = resource.pageParameters; + IPageParameters params = resource.pageParameters; assertNotNull(params); assertEquals(0, params.getAllNamed().size()); assertEquals(2, params.getIndexedCount()); @@ -165,7 +165,7 @@ public class ResourceMapperTest extends WicketTestCase assertEquals(request.getUrl(), mapper.mapHandler(requestHandler)); tester.processRequest(requestHandler); - PageParameters params = resource.pageParameters; + IPageParameters params = resource.pageParameters; assertNotNull(params); assertEquals(3, params.getAllNamed().size()); assertEquals(2, params.getIndexedCount()); @@ -200,7 +200,7 @@ public class ResourceMapperTest extends WicketTestCase assertEquals(request.getUrl(), mapperWithPlaceholder.mapHandler(requestHandler)); tester.processRequest(requestHandler); - PageParameters params = resource.pageParameters; + IPageParameters params = resource.pageParameters; assertNotNull(params); assertEquals(3, params.getAllNamed().size()); assertEquals(2, params.getIndexedCount()); @@ -237,7 +237,7 @@ public class ResourceMapperTest extends WicketTestCase assertNotNull(handler); tester.processRequest(handler); - PageParameters params = resource.pageParameters; + IPageParameters params = resource.pageParameters; assertNotNull(params); assertEquals(2, params.getAllNamed().size()); assertEquals(2, params.getIndexedCount()); @@ -266,7 +266,7 @@ public class ResourceMapperTest extends WicketTestCase { private static final long serialVersionUID = -3130204487473856574L; - public PageParameters pageParameters; + public IPageParameters pageParameters; @Override public void respond(Attributes attributes) http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java index b3e137a..b5a5eab 100644 --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java @@ -19,6 +19,7 @@ package org.apache.wicket.core.request.mapper; import org.apache.wicket.MockPage; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.WicketRuntimeException; +import org.apache.wicket.core.request.handler.PageProvider; import org.apache.wicket.markup.MarkupParser; import org.apache.wicket.page.IPageManagerContext; import org.apache.wicket.page.PageStoreManager; @@ -27,8 +28,7 @@ import org.apache.wicket.pageStore.IDataStore; import org.apache.wicket.pageStore.IPageStore; import org.apache.wicket.pageStore.memory.DummyPageManagerContext; import org.apache.wicket.request.component.IRequestablePage; -import org.apache.wicket.core.request.handler.PageProvider; -import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.request.resource.ResourceReference; import org.apache.wicket.request.resource.ResourceReference.Key; import org.apache.wicket.request.resource.ResourceReferenceRegistry; @@ -180,7 +180,7 @@ public class TestMapperContext implements IMapperContext @Override public IRequestablePage newPageInstance(Class<? extends IRequestablePage> pageClass, - PageParameters pageParameters) + IPageParameters pageParameters) { try { @@ -191,7 +191,7 @@ public class TestMapperContext implements IMapperContext page.setCreatedBookmarkable(true); if (pageParameters != null) { - page.getPageParameters().overwriteWith(pageParameters); + page.getPageParameters().mutable().overwriteWith(pageParameters); } return page; } http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/MapperDemoResourceReference.java ---------------------------------------------------------------------- diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/MapperDemoResourceReference.java b/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/MapperDemoResourceReference.java index 867aa11..2a039c7 100644 --- a/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/MapperDemoResourceReference.java +++ b/wicket-examples/src/main/java/org/apache/wicket/examples/requestmapper/MapperDemoResourceReference.java @@ -18,7 +18,7 @@ package org.apache.wicket.examples.requestmapper; import java.util.Locale; -import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.request.resource.AbstractResource; import org.apache.wicket.request.resource.IResource; import org.apache.wicket.request.resource.ResourceReference; @@ -53,7 +53,7 @@ public class MapperDemoResourceReference extends ResourceReference { ResourceResponse resourceResponse = new ResourceResponse(); - PageParameters parameters = attributes.getParameters(); + IPageParameters parameters = attributes.getParameters(); StringValue sheetParam = parameters.get("sheet"); StringValue formatParam = parameters.get("format"); final String responseText = String.format( http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java ---------------------------------------------------------------------- diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java b/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java index 311764f..d650eca 100644 --- a/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java +++ b/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java @@ -78,7 +78,7 @@ public class StatelessPage3 extends WicketExamplePage info("Submitted text: " + field.getDefaultModelObject()); // store the value in page parameters - getPage().getPageParameters().set(PARAMETER_NAME, number); + getPage().getPageParameters().mutable().set(PARAMETER_NAME, number); } }; http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java index 8151480..90b4369 100644 --- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java +++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java @@ -32,7 +32,7 @@ import org.apache.wicket.request.IRequestCycle; import org.apache.wicket.request.Response; import org.apache.wicket.request.component.IRequestablePage; import org.apache.wicket.request.http.WebRequest; -import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.visit.IVisit; @@ -248,7 +248,7 @@ public class WebSocketRequestHandler implements AjaxRequestTarget, IWebSocketReq } @Override - public PageParameters getPageParameters() + public IPageParameters getPageParameters() { return page.getPageParameters(); } http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 5af0fb0..6f7f7f4 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 @@ -20,6 +20,7 @@ import org.apache.wicket.request.IRequestMapper; import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; import org.apache.wicket.request.Url.QueryParameter; +import org.apache.wicket.request.mapper.parameter.IPageParameters; import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.lang.Args; @@ -129,7 +130,7 @@ public abstract class AbstractMapper implements IRequestMapper * @param encoder * @return PageParameters instance */ - protected PageParameters extractPageParameters(final Request request, int segmentsToSkip, + protected IPageParameters extractPageParameters(final Request request, int segmentsToSkip, final IPageParametersEncoder encoder) { Args.notNull(request, "request"); @@ -175,7 +176,7 @@ public abstract class AbstractMapper implements IRequestMapper * @param encoder * @return URL with encoded parameters */ - protected Url encodePageParameters(Url url, PageParameters pageParameters, + protected Url encodePageParameters(Url url, IPageParameters pageParameters, final IPageParametersEncoder encoder) { Args.notNull(url, "url"); http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IIndexedParameters.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IIndexedParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IIndexedParameters.java index 073fe34..78e9420 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IIndexedParameters.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IIndexedParameters.java @@ -26,7 +26,6 @@ import org.apache.wicket.util.string.StringValue; */ public interface IIndexedParameters { - /** * Sets the indexed parameter on given index * @@ -44,7 +43,7 @@ public interface IIndexedParameters /** * Removes indexed parameter on given index - * + * * @param index * @return this */ @@ -52,9 +51,13 @@ public interface IIndexedParameters /** * Removes all indexed parameters. - * + * * @return this */ IIndexedParameters clearIndexed(); + /** + * @return count of indexed parameters + */ + int getIndexedCount(); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java index 004f020..344d707 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java @@ -49,7 +49,7 @@ public interface INamedParameters */ public NamedPair(final String key, final String value) { - this.key = Args.notNull(key, "key");; + this.key = Args.notNull(key, "key"); this.value = Args.notNull(value, "value"); } @@ -132,7 +132,7 @@ public interface INamedParameters /** * Removes named parameter with given name. - * + * * @param name * the name of the parameter to remove * @param values @@ -144,7 +144,7 @@ public interface INamedParameters /** * Adds value to named parameter with given name. - * + * * @param name * @param value * @return this http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParameters.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParameters.java new file mode 100644 index 0000000..064f67f --- /dev/null +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/IPageParameters.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.mapper.parameter; + +import java.util.List; +import java.util.Set; + +import org.apache.wicket.util.string.StringValue; + +/** + * Contains only the accessor methods of PageParameters. + * Used as protection of accidental modifications of Page's PageParameters (page#getPageParameters()). + * + * When such modification is really needed {@linkplain #mutable()} method should be used: + * <code>parameters.mutable().add("name", "value");</code> + */ +public interface IPageParameters +{ + /** + * Return set of all named parameter names. + * + * @return named parameter names + */ + Set<String> getNamedKeys(); + + /** + * Returns parameter value of named parameter with given name + * + * @param name + * @return parameter value + */ + StringValue get(final String name); + + /** + * Return list of all values for named parameter with given name + * + * @param name + * @return list of parameter values + */ + List<StringValue> getValues(final String name); + + /** + * @return All named parameters in exact order. + */ + List<INamedParameters.NamedPair> getAllNamed(); + + /** + * Returns the position of a named parameter. + * + * @param name + * the name of the parameter to look for + * @return the position of the parameter. {@code -1} if there is no parameter with that name. + */ + int getPosition(String name); + + /** + * @param index + * @return indexed parameter on given index + */ + StringValue get(final int index); + + /** + * @return count of indexed parameters + */ + int getIndexedCount(); + + /** + * @return <code>true</code> if the parameters are empty, <code>false</code> otherwise. + */ + boolean isEmpty(); + + PageParameters mutable(); + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 cef8f50..c58fef7 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 @@ -34,7 +34,7 @@ public interface IPageParametersEncoder * parameters to encode * @return Url generated from the page parameters */ - Url encodePageParameters(PageParameters pageParameters); + Url encodePageParameters(IPageParameters pageParameters); /** * Decodes the given URL to {@link PageParameters}. The URL will have all @@ -44,5 +44,5 @@ public interface IPageParametersEncoder * url to decode * @return {@link PageParameters} instance or <code>null</code> if empty */ - PageParameters decodePageParameters(Url url); + IPageParameters decodePageParameters(Url url); } http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java index 956ea75..f1a91b0 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java @@ -45,7 +45,7 @@ import org.apache.wicket.util.string.StringValue; * * @author Matej Knopp */ -public class PageParameters implements IClusterable, IIndexedParameters, INamedParameters +public class PageParameters implements IClusterable, IPageParameters, IIndexedParameters, INamedParameters { private static class Entry implements IClusterable { @@ -110,25 +110,15 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP * * @param copy */ - public PageParameters(final PageParameters copy) + public PageParameters(final IPageParameters copy) { - if (copy != null) - { - if (copy.indexedParameters != null) - { - indexedParameters = new ArrayList<String>(copy.indexedParameters); - } - - if (copy.namedParameters != null) - { - namedParameters = new ArrayList<Entry>(copy.namedParameters); - } - } + overwriteWith(copy); } /** * @return count of indexed parameters */ + @Override public int getIndexedCount() { return indexedParameters != null ? indexedParameters.size() : 0; @@ -350,10 +340,10 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP if (namedParameters == null) { - namedParameters = new ArrayList<Entry>(1); + namedParameters = new ArrayList<>(1); } - List<String> values = new ArrayList<String>(); + List<String> values = new ArrayList<>(); if (value instanceof String[]) { values.addAll(Arrays.asList((String[])value)); @@ -435,12 +425,39 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP * @param other * @return this */ - public PageParameters overwriteWith(final PageParameters other) + public PageParameters overwriteWith(final IPageParameters other) { if (this != other) { - indexedParameters = other.indexedParameters; - namedParameters = other.namedParameters; + if (other != null) + { + int indexedCount = other.getIndexedCount(); + if (indexedCount > 0) + { + indexedParameters = new ArrayList<>(indexedCount); + for (int i = 0; i < indexedCount; i++) + { + indexedParameters.add(other.get(i).toString()); + } + } + + Set<String> namedKeys = other.getNamedKeys(); + if (namedKeys.isEmpty() == false) + { + namedParameters = new ArrayList<>(namedKeys.size()); + for (String name : namedKeys) + { + List<StringValue> values = other.getValues(name); + for (StringValue value : values) + { + Entry entry = new Entry(); + entry.key = name; + entry.value = value.toString(); + namedParameters.add(entry); + } + } + } + } } return this; } @@ -451,7 +468,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP * @param other * @return this */ - public PageParameters mergeWith(final PageParameters other) + public PageParameters mergeWith(final IPageParameters other) { if (this != other) { @@ -538,12 +555,19 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP /** * @return <code>true</code> if the parameters are empty, <code>false</code> otherwise. */ + @Override public boolean isEmpty() { return (getIndexedCount() == 0) && getNamedKeys().isEmpty(); } @Override + public PageParameters mutable() + { + return this; + } + + @Override public String toString() { StringBuilder str = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 8139460..18476c9 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 @@ -37,7 +37,7 @@ public class PageParametersEncoder implements IPageParametersEncoder * @see IPageParametersEncoder#decodePageParameters(org.apache.wicket.request.Url) */ @Override - public PageParameters decodePageParameters(final Url url) + public IPageParameters decodePageParameters(final Url url) { PageParameters parameters = new PageParameters(); @@ -57,10 +57,10 @@ public class PageParametersEncoder implements IPageParametersEncoder } /** - * @see org.apache.wicket.request.mapper.parameter.IPageParametersEncoder#encodePageParameters(org.apache.wicket.request.mapper.parameter.PageParameters) + * @see org.apache.wicket.request.mapper.parameter.IPageParametersEncoder#encodePageParameters(org.apache.wicket.request.mapper.parameter.IPageParameters) */ @Override - public Url encodePageParameters(final PageParameters pageParameters) + public Url encodePageParameters(final IPageParameters pageParameters) { Url url = new Url(); http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 03740d7..fab72f0 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 @@ -46,7 +46,7 @@ import org.apache.wicket.util.string.Strings; public class UrlPathPageParametersEncoder implements IPageParametersEncoder { @Override - public Url encodePageParameters(PageParameters params) + public Url encodePageParameters(IPageParameters params) { Args.notNull(params, "params"); Args.isTrue(params.getIndexedCount() == 0, @@ -65,7 +65,7 @@ public class UrlPathPageParametersEncoder implements IPageParametersEncoder } @Override - public PageParameters decodePageParameters(Url url) + public IPageParameters decodePageParameters(Url url) { PageParameters params = new PageParameters(); http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 0490d0c..4a66e83 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 @@ -37,7 +37,7 @@ public class PageParametersEncoderTest extends Assert Url url = Url.parse("idx1/idx2?named1=value1&named2=value2"); - PageParameters pageParameters = encoder.decodePageParameters(url); + IPageParameters pageParameters = encoder.decodePageParameters(url); assertEquals("idx1", pageParameters.get(0).toOptionalString()); assertEquals("idx2", pageParameters.get(1).toOptionalString()); assertEquals("value1", pageParameters.get("named1").toOptionalString()); http://git-wip-us.apache.org/repos/asf/wicket/blob/665a3e80/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 9eca67c..6e2f460 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 @@ -83,7 +83,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("name1/value1/name2/value2"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -100,7 +100,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("name1/value1/name2/value2/"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -117,7 +117,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("name1/value1/name2/value2/name3"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -133,7 +133,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("/name1/value1/name2/value2"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -150,7 +150,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("name1/value1////name2/value2"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString()); @@ -167,7 +167,7 @@ public class UrlPathPageParametersEncoderTest extends Assert Url url = Url.parse("name1/value1////name2//"); UrlPathPageParametersEncoder decoder = new UrlPathPageParametersEncoder(); - PageParameters parameters = decoder.decodePageParameters(url); + IPageParameters parameters = decoder.decodePageParameters(url); assertEquals(2, parameters.getAllNamed().size()); assertEquals("value1", parameters.get("name1").toString());