summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-10-05 16:41:40 +0300
committerVaadin Code Review <review@vaadin.com>2015-10-07 06:54:22 +0000
commit2d2418516ab34bc90de1f910dfa2e0c64f093431 (patch)
tree08422268a65c9aa784a224cb1f9e5bac293314ac /server/src/com/vaadin
parent1ba6dec41c2f02afbed81a1369c35e7a940c6720 (diff)
downloadvaadin-framework-2d2418516ab34bc90de1f910dfa2e0c64f093431.tar.gz
vaadin-framework-2d2418516ab34bc90de1f910dfa2e0c64f093431.zip
Detect Atmosphere in the same way for servlets and portlets (#11493)
Change-Id: I6c153291045a35f253cd7e6987d7eb90dbc93a1e
Diffstat (limited to 'server/src/com/vaadin')
-rw-r--r--server/src/com/vaadin/server/VaadinService.java45
-rw-r--r--server/src/com/vaadin/server/VaadinServletService.java43
2 files changed, 40 insertions, 48 deletions
diff --git a/server/src/com/vaadin/server/VaadinService.java b/server/src/com/vaadin/server/VaadinService.java
index 8a6be63dd6..09704838b6 100644
--- a/server/src/com/vaadin/server/VaadinService.java
+++ b/server/src/com/vaadin/server/VaadinService.java
@@ -52,6 +52,7 @@ import com.vaadin.annotations.PreserveOnRefresh;
import com.vaadin.event.EventRouter;
import com.vaadin.server.VaadinSession.FutureAccess;
import com.vaadin.server.VaadinSession.State;
+import com.vaadin.server.communication.AtmospherePushConnection;
import com.vaadin.server.communication.FileUploadHandler;
import com.vaadin.server.communication.HeartbeatHandler;
import com.vaadin.server.communication.PublishedFileHandler;
@@ -133,6 +134,8 @@ public abstract class VaadinService implements Serializable {
private Iterable<RequestHandler> requestHandlers;
+ private boolean atmosphereAvailable = checkAtmosphereSupport();
+
/**
* Keeps track of whether a warning about missing push support has already
* been logged. This is used to avoid spamming the log with the same message
@@ -1625,13 +1628,43 @@ public abstract class VaadinService implements Serializable {
* is not available.
*/
public boolean ensurePushAvailable() {
- if (!pushWarningEmitted) {
- pushWarningEmitted = true;
- getLogger().log(Level.WARNING, Constants.PUSH_NOT_SUPPORTED_ERROR,
- getClass().getSimpleName());
+ if (atmosphereAvailable) {
+ return true;
+ } else {
+ if (!pushWarningEmitted) {
+ pushWarningEmitted = true;
+ getLogger().log(Level.WARNING,
+ Constants.ATMOSPHERE_MISSING_ERROR);
+ }
+ return false;
}
- // Not supported by default for now, sublcasses may override
- return false;
+ }
+
+ private static boolean checkAtmosphereSupport() {
+ String rawVersion = AtmospherePushConnection.getAtmosphereVersion();
+ if (rawVersion == null) {
+ return false;
+ }
+
+ if (!Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION.equals(rawVersion)) {
+ getLogger().log(
+ Level.WARNING,
+ Constants.INVALID_ATMOSPHERE_VERSION_WARNING,
+ new Object[] {
+ Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION,
+ rawVersion });
+ }
+ return true;
+ }
+
+ /**
+ * Checks whether Atmosphere is avilable for use
+ *
+ * @since
+ * @return true if Atmosphere is available, false otherwise
+ */
+ protected boolean isAtmosphereAvailable() {
+ return atmosphereAvailable;
}
/**
diff --git a/server/src/com/vaadin/server/VaadinServletService.java b/server/src/com/vaadin/server/VaadinServletService.java
index 22848c023c..5faea1ce6c 100644
--- a/server/src/com/vaadin/server/VaadinServletService.java
+++ b/server/src/com/vaadin/server/VaadinServletService.java
@@ -27,7 +27,6 @@ import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
-import com.vaadin.server.communication.AtmospherePushConnection;
import com.vaadin.server.communication.PushRequestHandler;
import com.vaadin.server.communication.ServletBootstrapHandler;
import com.vaadin.server.communication.ServletUIInitHandler;
@@ -36,15 +35,6 @@ import com.vaadin.ui.UI;
public class VaadinServletService extends VaadinService {
private final VaadinServlet servlet;
- private boolean atmosphereAvailable = checkAtmosphereSupport();
-
- /**
- * Keeps track of whether a warning about missing push support has already
- * been logged. This is used to avoid spamming the log with the same message
- * every time a new UI is bootstrapped.
- */
- private boolean pushWarningLogged = false;
-
public VaadinServletService(VaadinServlet servlet,
DeploymentConfiguration deploymentConfiguration)
throws ServiceException {
@@ -52,30 +42,13 @@ public class VaadinServletService extends VaadinService {
this.servlet = servlet;
}
- private static boolean checkAtmosphereSupport() {
- String rawVersion = AtmospherePushConnection.getAtmosphereVersion();
- if (rawVersion == null) {
- return false;
- }
-
- if (!Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION.equals(rawVersion)) {
- getLogger().log(
- Level.WARNING,
- Constants.INVALID_ATMOSPHERE_VERSION_WARNING,
- new Object[] {
- Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION,
- rawVersion });
- }
- return true;
- }
-
@Override
protected List<RequestHandler> createRequestHandlers()
throws ServiceException {
List<RequestHandler> handlers = super.createRequestHandlers();
handlers.add(0, new ServletBootstrapHandler());
handlers.add(new ServletUIInitHandler());
- if (atmosphereAvailable) {
+ if (isAtmosphereAvailable()) {
try {
handlers.add(new PushRequestHandler(this));
} catch (ServiceException e) {
@@ -86,7 +59,6 @@ public class VaadinServletService extends VaadinService {
.log(Level.WARNING,
"Error initializing Atmosphere. Push will not work.",
e);
- atmosphereAvailable = false;
}
}
return handlers;
@@ -271,17 +243,4 @@ public class VaadinServletService extends VaadinService {
return Logger.getLogger(VaadinServletService.class.getName());
}
- @Override
- public boolean ensurePushAvailable() {
- if (atmosphereAvailable) {
- return true;
- } else {
- if (!pushWarningLogged) {
- pushWarningLogged = true;
- getLogger().log(Level.WARNING,
- Constants.ATMOSPHERE_MISSING_ERROR);
- }
- return false;
- }
- }
}