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
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0b770b05 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0b770b05 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0b770b05 Branch: refs/heads/wicket-6.x Commit: 0b770b05e0f7b86cbe647a155dfe1a82f1bccc3a Parents: e841383 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 09:45:29 2014 +0200 ---------------------------------------------------------------------- .../wicket/atmosphere/AtmosphereBehavior.java | 21 ++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/0b770b05/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 f41e91f..35c1ed8 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; @@ -196,11 +195,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) { @@ -209,6 +206,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
