Author: mgrigorov Date: Mon Sep 12 13:50:18 2011 New Revision: 1169744 URL: http://svn.apache.org/viewvc?rev=1169744&view=rev Log: WICKET-4038 MountedMapper.mapHandler ruins Links inside mounted pages appending parameters wicket-ajax and wicket-ajax-baseurl
Do not propagate Ajax related request parameters to the next request. They will be set by wicket-ajax.js if needed. Added: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/UrlInfoTest.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java?rev=1169744&r1=1169743&r2=1169744&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java Mon Sep 12 13:50:18 2011 @@ -29,6 +29,7 @@ import org.apache.wicket.request.handler import org.apache.wicket.request.handler.PageAndComponentProvider; import org.apache.wicket.request.handler.PageProvider; import org.apache.wicket.request.handler.RenderPageRequestHandler; +import org.apache.wicket.request.http.WebRequest; import org.apache.wicket.request.mapper.info.ComponentInfo; import org.apache.wicket.request.mapper.info.PageComponentInfo; import org.apache.wicket.request.mapper.info.PageInfo; @@ -73,11 +74,31 @@ public abstract class AbstractBookmarkab Args.notNull(pageClass, "pageClass"); this.pageComponentInfo = pageComponentInfo; - this.pageParameters = pageParameters; + this.pageParameters = cleanPageParameters(pageParameters); + this.pageClass = pageClass; } /** + * Cleans the original parameters from entries used by Wicket internals. + * + * @param originalParameters + * the current request's non-modified parameters + * @return all parameters but Wicket internal ones + */ + private PageParameters cleanPageParameters(final PageParameters originalParameters) + { + PageParameters cleanParameters = new PageParameters(originalParameters); + + // WICKET-4038: Ajax related parameters are set by wicket-ajax.js when needed. + // They shouldn't be propagated to the next requests + cleanParameters.remove(WebRequest.PARAM_AJAX); + cleanParameters.remove(WebRequest.PARAM_AJAX_BASE_URL); + + return cleanParameters; + } + + /** * @return PageComponentInfo instance or <code>null</code> */ public PageComponentInfo getPageComponentInfo() Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java?rev=1169744&r1=1169743&r2=1169744&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java (original) +++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java Mon Sep 12 13:50:18 2011 @@ -31,6 +31,7 @@ import org.apache.wicket.request.handler import org.apache.wicket.request.handler.PageAndComponentProvider; import org.apache.wicket.request.handler.PageProvider; import org.apache.wicket.request.handler.RenderPageRequestHandler; +import org.apache.wicket.request.http.WebRequest; import org.apache.wicket.request.mapper.parameter.PageParameters; /** @@ -405,6 +406,11 @@ public class MountedMapperTest extends A page.getPageParameters().set(1, "i2"); page.getPageParameters().set("a", "b"); page.getPageParameters().set("b", "c"); + + // WICKET-4038 + page.getPageParameters().add(WebRequest.PARAM_AJAX, "true"); + page.getPageParameters().add(WebRequest.PARAM_AJAX_BASE_URL, "some/base/url"); + page.setRenderCount(4); // shouldn't make any difference for ListenerInterfaceRequestHandler, Added: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/UrlInfoTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/UrlInfoTest.java?rev=1169744&view=auto ============================================================================== --- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/UrlInfoTest.java (added) +++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/UrlInfoTest.java Mon Sep 12 13:50:18 2011 @@ -0,0 +1,45 @@ +/* + * 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; + +import org.apache.wicket.MockPage; +import org.apache.wicket.request.http.WebRequest; +import org.apache.wicket.request.mapper.AbstractBookmarkableMapper.UrlInfo; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests for {@link UrlInfo} + */ +public class UrlInfoTest extends Assert +{ + + /** + * WICKET-4038 + */ + @Test + public void wicket4038() + { + PageParameters parameters = new PageParameters(); + parameters.add(WebRequest.PARAM_AJAX, "true"); + parameters.add(WebRequest.PARAM_AJAX_BASE_URL, "base/url"); + + AbstractBookmarkableMapper.UrlInfo info = new UrlInfo(null, MockPage.class, parameters); + assertTrue(info.getPageParameters().isEmpty()); + } +}