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());
+ }
+}