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


Reply via email to