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
