diff options
author | Artur Signell <artur@vaadin.com> | 2015-09-24 10:20:29 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-09-24 08:50:05 +0000 |
commit | ca3c460cbd6edb801f7919d046a3323f5f8babf1 (patch) | |
tree | ea92827f99254f2fe6d02b2184c2b463b7f0cfc7 | |
parent | c426c779a76168a8cb239b494ffa498960054f16 (diff) | |
download | vaadin-framework-ca3c460cbd6edb801f7919d046a3323f5f8babf1.tar.gz vaadin-framework-ca3c460cbd6edb801f7919d046a3323f5f8babf1.zip |
Adds support for defining the URL to use for push requests (#18989)
Change-Id: I12afaf7e5c5c385f3a19c7dab60f044d8721e082
3 files changed, 46 insertions, 4 deletions
diff --git a/client/src/com/vaadin/client/communication/AtmospherePushConnection.java b/client/src/com/vaadin/client/communication/AtmospherePushConnection.java index 8276bf68bb..158638a5ec 100644 --- a/client/src/com/vaadin/client/communication/AtmospherePushConnection.java +++ b/client/src/com/vaadin/client/communication/AtmospherePushConnection.java @@ -130,6 +130,11 @@ public class AtmospherePushConnection implements PushConnection { */ private Command pendingDisconnectCommand; + /** + * The url to use for push requests + */ + private String url; + public AtmospherePushConnection() { } @@ -173,7 +178,12 @@ public class AtmospherePushConnection implements PushConnection { config.setStringValue(param, pushConfiguration.parameters.get(param)); } - + if (pushConfiguration.pushUrl != null) { + url = pushConfiguration.pushUrl; + } else { + url = ApplicationConstants.APP_PROTOCOL_PREFIX + + ApplicationConstants.PUSH_PATH; + } runWhenAtmosphereLoaded(new Command() { @Override public void execute() { @@ -188,9 +198,7 @@ public class AtmospherePushConnection implements PushConnection { } private void connect() { - String baseUrl = connection - .translateVaadinUri(ApplicationConstants.APP_PROTOCOL_PREFIX - + ApplicationConstants.PUSH_PATH); + String baseUrl = connection.translateVaadinUri(url); String extraParams = UIConstants.UI_ID_PARAMETER + "=" + connection.getConfiguration().getUIId(); diff --git a/server/src/com/vaadin/ui/PushConfiguration.java b/server/src/com/vaadin/ui/PushConfiguration.java index 6eaf683d99..ef9fc0556e 100644 --- a/server/src/com/vaadin/ui/PushConfiguration.java +++ b/server/src/com/vaadin/ui/PushConfiguration.java @@ -139,6 +139,29 @@ public interface PushConfiguration extends Serializable { */ public void setParameter(String parameter, String value); + /** + * Sets the URL to use for push requests. + * <p> + * This is only used when overriding the URL to use. Setting this to null + * (the default) will use the default URL. + * + * @since + * @param pushUrl + * The push URL to use + */ + public void setPushUrl(String pushUrl); + + /** + * Returns the URL to use for push requests. + * <p> + * This is only used when overriding the URL to use. Returns null (the + * default) when the default URL is used. + * + * @since + * @return the URL to use for push requests, or null to use to default + */ + public String getPushUrl(); + } class PushConfigurationImpl implements PushConfiguration { @@ -199,6 +222,16 @@ class PushConfigurationImpl implements PushConfiguration { } } + @Override + public void setPushUrl(String pushUrl) { + getState().pushUrl = pushUrl; + } + + @Override + public String getPushUrl() { + return getState(false).pushUrl; + } + /* * (non-Javadoc) * diff --git a/shared/src/com/vaadin/shared/ui/ui/UIState.java b/shared/src/com/vaadin/shared/ui/ui/UIState.java index 502aa81b76..7caa1c5fd8 100644 --- a/shared/src/com/vaadin/shared/ui/ui/UIState.java +++ b/shared/src/com/vaadin/shared/ui/ui/UIState.java @@ -116,6 +116,7 @@ public class UIState extends TabIndexState { public boolean alwaysUseXhrForServerRequests = false; public PushMode mode = PushMode.DISABLED; + public String pushUrl = null; public Map<String, String> parameters = new HashMap<String, String>(); { parameters |