WICKET-5452 Make Wicket-Atmosphere testable - AtmosphereTester

Fix the callback url to the AtmosphereBehavior. It should be an Ajax one to 
prevent incrementing of the page id/renderCount

(cherry picked from commit 0b770b05e0f7b86cbe647a155dfe1a82f1bccc3a)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ccd7ec35
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ccd7ec35
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ccd7ec35

Branch: refs/heads/master
Commit: ccd7ec35a546f2ae5d257a67874aa5cbd7b9e5ae
Parents: 1037c69
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Aug 13 12:18:28 2014 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Fri Aug 15 10:11:34 2014 +0200

----------------------------------------------------------------------
 .../wicket/atmosphere/AtmosphereBehavior.java   | 21 ++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ccd7ec35/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
 
b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
index d2fe7e6..0cfb9bc 100644
--- 
a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
+++ 
b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
@@ -24,13 +24,12 @@ import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.json.JSONException;
 import org.apache.wicket.ajax.json.JSONObject;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.behavior.IBehaviorListener;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.resource.CoreLibrariesContributor;
 import org.atmosphere.cpr.AtmosphereRequest;
 import org.atmosphere.cpr.AtmosphereResource;
@@ -218,11 +217,9 @@ public class AtmosphereBehavior extends 
AbstractAjaxBehavior
 
                        
response.render(JavaScriptHeaderItem.forReference(JQueryWicketAtmosphereResourceReference.get()));
                        JSONObject options = 
findEventBus().getParameters().toJSON();
-                       options.put("url",
-                               component.urlFor(this, 
IBehaviorListener.INTERFACE, new PageParameters())
-                                       .toString());
+                       options.put("url", getCallbackUrl());
                        response.render(OnDomReadyHeaderItem.forScript("$('#" + 
component.getMarkupId() +
-                               "').wicketAtmosphere(" + options.toString() + 
")"));
+                                       "').wicketAtmosphere(" + 
options.toString() + ")"));
                }
                catch (JSONException e)
                {
@@ -231,6 +228,18 @@ public class AtmosphereBehavior extends 
AbstractAjaxBehavior
        }
 
        /**
+        * Make it look like a normal Ajax call so the page id/renderCount are 
not incremented when Atmosphere makes
+        * the "upgrade" request
+        *
+        * @return the url to this behavior's listener interface
+        */
+       @Override
+       public CharSequence getCallbackUrl()
+       {
+               return super.getCallbackUrl() + "&" + WebRequest.PARAM_AJAX + 
"=true&" + WebRequest.PARAM_AJAX_BASE_URL + "=.";
+       }
+
+       /**
         * Find the Atmosphere UUID for the suspended connection for the given 
page (if any).
         * 
         * @param page

Reply via email to