summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-08-31 11:43:31 +0300
committerArtur Signell <artur@vaadin.com>2015-08-31 13:23:24 +0300
commit9aafe4d1c535e9f79c09f33d2e1a1f8cc344eaa0 (patch)
tree59a3e8acc083a06376c62e95a8b2f9ff7c0610a4 /server
parentb71cc2ffa9b96cfcaa045692eee4952678391850 (diff)
downloadvaadin-framework-9aafe4d1c535e9f79c09f33d2e1a1f8cc344eaa0.tar.gz
vaadin-framework-9aafe4d1c535e9f79c09f33d2e1a1f8cc344eaa0.zip
Use Transport.WEBSOCKET_XHR instead of setter for mixing websockets and XHR (#11733)
Change-Id: I2fad7d367d8a4ba476ae0705672ebc2ee7cfeb1c
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/ui/PushConfiguration.java61
-rw-r--r--server/tests/src/com/vaadin/ui/PushConfigurationTransportTest.java6
2 files changed, 27 insertions, 40 deletions
diff --git a/server/src/com/vaadin/ui/PushConfiguration.java b/server/src/com/vaadin/ui/PushConfiguration.java
index 22941ea5ae..6eaf683d99 100644
--- a/server/src/com/vaadin/ui/PushConfiguration.java
+++ b/server/src/com/vaadin/ui/PushConfiguration.java
@@ -139,33 +139,6 @@ public interface PushConfiguration extends Serializable {
*/
public void setParameter(String parameter, String value);
- /**
- * Sets whether to force the use of XHR when sending data from the client to
- * the server.
- *
- * This settings currently only has effect when using websockets, which by
- * default send client to server requests through the websockets channel. If
- * you need to support cookies, HTTP auth or similar features not available
- * in websockets communication you can set this to true.
- *
- * @since 7.6
- * @param alwaysUseXhrForServerRequests
- * true to always use XHR for server requests, false otherwise
- */
- public void setAlwaysUseXhrForServerRequests(
- boolean alwaysUseXhrForServerRequests);
-
- /**
- * Checks whether to force the use of XHR when sending data from the client
- * to the server.
- *
- * @see #setAlwaysUseXhrForServerRequests(boolean)
- *
- * @since 7.6
- * @return true to always use XHR for server requests, false otherwise
- */
- public boolean isAlwaysUseXhrForServerRequests();
-
}
class PushConfigurationImpl implements PushConfiguration {
@@ -234,8 +207,14 @@ class PushConfigurationImpl implements PushConfiguration {
@Override
public Transport getTransport() {
try {
- return Transport
+ Transport tr = Transport
.getByIdentifier(getParameter(PushConfigurationState.TRANSPORT_PARAM));
+ if (tr == Transport.WEBSOCKET
+ && getState(false).alwaysUseXhrForServerRequests) {
+ return Transport.WEBSOCKET_XHR;
+ } else {
+ return tr;
+ }
} catch (IllegalArgumentException e) {
return null;
}
@@ -250,8 +229,16 @@ class PushConfigurationImpl implements PushConfiguration {
*/
@Override
public void setTransport(Transport transport) {
- setParameter(PushConfigurationState.TRANSPORT_PARAM,
- transport.getIdentifier());
+ if (transport == Transport.WEBSOCKET_XHR) {
+ getState().alwaysUseXhrForServerRequests = true;
+ // Atmosphere knows only about "websocket"
+ setParameter(PushConfigurationState.TRANSPORT_PARAM,
+ Transport.WEBSOCKET.getIdentifier());
+ } else {
+ getState().alwaysUseXhrForServerRequests = false;
+ setParameter(PushConfigurationState.TRANSPORT_PARAM,
+ transport.getIdentifier());
+ }
}
/*
@@ -278,6 +265,10 @@ class PushConfigurationImpl implements PushConfiguration {
*/
@Override
public void setFallbackTransport(Transport fallbackTransport) {
+ if (fallbackTransport == Transport.WEBSOCKET_XHR) {
+ throw new IllegalArgumentException(
+ "WEBSOCKET_XHR can only be used as primary transport");
+ }
setParameter(PushConfigurationState.FALLBACK_TRANSPORT_PARAM,
fallbackTransport.getIdentifier());
}
@@ -318,14 +309,4 @@ class PushConfigurationImpl implements PushConfiguration {
.keySet());
}
- @Override
- public void setAlwaysUseXhrForServerRequests(
- boolean alwaysUseXhrForServerRequests) {
- getState().alwaysUseXhrForServerRequests = alwaysUseXhrForServerRequests;
- }
-
- @Override
- public boolean isAlwaysUseXhrForServerRequests() {
- return getState(false).alwaysUseXhrForServerRequests;
- }
}
diff --git a/server/tests/src/com/vaadin/ui/PushConfigurationTransportTest.java b/server/tests/src/com/vaadin/ui/PushConfigurationTransportTest.java
index 305b2e06cd..80e7dd9261 100644
--- a/server/tests/src/com/vaadin/ui/PushConfigurationTransportTest.java
+++ b/server/tests/src/com/vaadin/ui/PushConfigurationTransportTest.java
@@ -40,6 +40,12 @@ public class PushConfigurationTransportTest {
ui.getPushConfiguration().setTransport(transport);
Assert.assertEquals(ui.getPushConfiguration().getTransport(),
transport);
+
+ if (transport == Transport.WEBSOCKET_XHR) {
+ Assert.assertTrue(ui.getState().pushConfiguration.alwaysUseXhrForServerRequests);
+ } else {
+ Assert.assertFalse(ui.getState().pushConfiguration.alwaysUseXhrForServerRequests);
+ }
}
}