com.vaadin.client.communication
Class DefaultConnectionStateHandler

java.lang.Object
  extended by com.vaadin.client.communication.DefaultConnectionStateHandler
All Implemented Interfaces:
ConnectionStateHandler

public class DefaultConnectionStateHandler
extends java.lang.Object
implements ConnectionStateHandler

Default implementation of the connection state handler.

Handles temporary errors by showing a reconnect dialog to the user while trying to re-establish the connection to the server and re-send the pending message.

Handles permanent errors by showing a critical system notification to the user

Since:
7.6
Author:
Vaadin Ltd

Nested Class Summary
protected static class DefaultConnectionStateHandler.Type
           
 
Constructor Summary
DefaultConnectionStateHandler()
           
 
Method Summary
 void configurationUpdated()
          Called when some part of the reconnect dialog configuration has been changed.
protected  void doReconnect(elemental.json.JsonObject payload)
          Re-sends the payload to the server (if not null) or re-sends a heartbeat request immediately
protected  ApplicationConnection getConnection()
          Returns the connection this handler is connected to
protected  java.lang.String getDialogText(int reconnectAttempt)
          Gets the text to show in the reconnect dialog
protected  java.lang.String getDialogTextGaveUp(int reconnectAttempt)
          Gets the text to show in the reconnect dialog after giving up (reconnect limit reached)
protected  void giveUp()
          Called when we should give up trying to reconnect and let the user decide how to continue
protected  void handleRecoverableError(DefaultConnectionStateHandler.Type type, elemental.json.JsonObject payload)
          Called whenever an error occurs in communication which should be handled by showing the reconnect dialog and retrying communication until successful again
protected  void handleUnauthorized(XhrConnectionError xhrConnectionError)
           
 void heartbeatException(Request request, java.lang.Throwable exception)
          Called when an exception occurs during a Heartbeat request
 void heartbeatInvalidStatusCode(Request request, Response response)
          Called when a heartbeat request returns a status code other than OK (200)
 void heartbeatOk()
          Called when a Heartbeat request succeeds
protected  void hideDialog()
          Called when the reconnect dialog should be hidden.
protected  boolean isDialogVisible()
          Checks if the reconnect dialog is visible to the user
 void pushClientTimeout(PushConnection pushConnection, JavaScriptObject response)
          Called when a client side timeout occurs before a push connection to the server completes.
 void pushClosed(PushConnection pushConnection, JavaScriptObject response)
          Called when the push connection to the server is closed.
 void pushError(PushConnection pushConnection, JavaScriptObject response)
          Called when a fatal error fatal error occurs in the push connection.
 void pushInvalidContent(PushConnection pushConnection, java.lang.String message)
          Called when invalid content (not JSON) was pushed from the server through the push connection
 void pushNotConnected(elemental.json.JsonObject payload)
          Called when a message is to be sent to the server through the push channel but the push channel is not connected
 void pushOk(PushConnection pushConnection)
          Called when the push connection to the server has been established.
 void pushReconnectPending(PushConnection pushConnection)
          Called when the push connection has lost the connection to the server and will proceed to try to re-establish the connection
 void pushScriptLoadError(java.lang.String resourceUrl)
          Called when the required push script could not be loaded
protected  void scheduleReconnect(elemental.json.JsonObject payload)
          Called after a problem occurred.
 void setConnection(ApplicationConnection connection)
          Sets the application connection this instance is connected to.
protected  void showDialog()
          Called when the reconnect dialog should be shown.
protected  void updateDialog()
          Called whenever a reconnect attempt fails to allow updating of dialog contents
 void xhrException(XhrConnectionError xhrConnectionError)
          Called when an exception occurs during an XmlHttpRequest request to the server.
 void xhrInvalidContent(XhrConnectionError xhrConnectionError)
          Called when invalid content (not JSON) was returned from the server as the result of an XmlHttpRequest request
 void xhrInvalidStatusCode(XhrConnectionError xhrConnectionError)
          Called when invalid status code (not 200) was returned by the server as the result of an XmlHttpRequest.
 void xhrOk()
          Called whenever a XmlHttpRequest to the server completes successfully
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultConnectionStateHandler

public DefaultConnectionStateHandler()
Method Detail

setConnection

public void setConnection(ApplicationConnection connection)
Description copied from interface: ConnectionStateHandler
Sets the application connection this instance is connected to. Called internally by the framework.

Specified by:
setConnection in interface ConnectionStateHandler
Parameters:
connection - the application connection this instance is connected to

getConnection

protected ApplicationConnection getConnection()
Returns the connection this handler is connected to

Returns:
the connection for this handler

xhrException

public void xhrException(XhrConnectionError xhrConnectionError)
Description copied from interface: ConnectionStateHandler
Called when an exception occurs during an XmlHttpRequest request to the server.

Specified by:
xhrException in interface ConnectionStateHandler
Parameters:
xhrConnectionError - An event containing what was being sent to the server and what exception occurred

heartbeatException

public void heartbeatException(Request request,
                               java.lang.Throwable exception)
Description copied from interface: ConnectionStateHandler
Called when an exception occurs during a Heartbeat request

Specified by:
heartbeatException in interface ConnectionStateHandler
Parameters:
request - The heartbeat request
exception - The exception which occurred

heartbeatInvalidStatusCode

public void heartbeatInvalidStatusCode(Request request,
                                       Response response)
Description copied from interface: ConnectionStateHandler
Called when a heartbeat request returns a status code other than OK (200)

Specified by:
heartbeatInvalidStatusCode in interface ConnectionStateHandler
Parameters:
request - The heartbeat request
response - The heartbeat response

heartbeatOk

public void heartbeatOk()
Description copied from interface: ConnectionStateHandler
Called when a Heartbeat request succeeds

Specified by:
heartbeatOk in interface ConnectionStateHandler

handleRecoverableError

protected void handleRecoverableError(DefaultConnectionStateHandler.Type type,
                                      elemental.json.JsonObject payload)
Called whenever an error occurs in communication which should be handled by showing the reconnect dialog and retrying communication until successful again

Parameters:
type - The type of failure detected
payload - The message which did not reach the server, or null if no message was involved (heartbeat or push connection failed)

scheduleReconnect

protected void scheduleReconnect(elemental.json.JsonObject payload)
Called after a problem occurred. This method is responsible for re-sending the payload to the server (if not null) or re-send a heartbeat request at some point

Parameters:
payload - the payload that did not reach the server, null if the problem was detected by a heartbeat

doReconnect

protected void doReconnect(elemental.json.JsonObject payload)
Re-sends the payload to the server (if not null) or re-sends a heartbeat request immediately

Parameters:
payload - the payload that did not reach the server, null if the problem was detected by a heartbeat

updateDialog

protected void updateDialog()
Called whenever a reconnect attempt fails to allow updating of dialog contents


giveUp

protected void giveUp()
Called when we should give up trying to reconnect and let the user decide how to continue


isDialogVisible

protected boolean isDialogVisible()
Checks if the reconnect dialog is visible to the user

Returns:
true if the user can see the dialog, false otherwise

showDialog

protected void showDialog()
Called when the reconnect dialog should be shown. This is typically when N seconds has passed since a problem with the connection has been detected


hideDialog

protected void hideDialog()
Called when the reconnect dialog should be hidden.


getDialogTextGaveUp

protected java.lang.String getDialogTextGaveUp(int reconnectAttempt)
Gets the text to show in the reconnect dialog after giving up (reconnect limit reached)

Parameters:
reconnectAttempt - The number of the current reconnection attempt
Returns:
The text to show in the reconnect dialog after giving up

getDialogText

protected java.lang.String getDialogText(int reconnectAttempt)
Gets the text to show in the reconnect dialog

Parameters:
reconnectAttempt - The number of the current reconnection attempt
Returns:
The text to show in the reconnect dialog

configurationUpdated

public void configurationUpdated()
Description copied from interface: ConnectionStateHandler
Called when some part of the reconnect dialog configuration has been changed.

Specified by:
configurationUpdated in interface ConnectionStateHandler

xhrInvalidContent

public void xhrInvalidContent(XhrConnectionError xhrConnectionError)
Description copied from interface: ConnectionStateHandler
Called when invalid content (not JSON) was returned from the server as the result of an XmlHttpRequest request

Specified by:
xhrInvalidContent in interface ConnectionStateHandler

pushInvalidContent

public void pushInvalidContent(PushConnection pushConnection,
                               java.lang.String message)
Description copied from interface: ConnectionStateHandler
Called when invalid content (not JSON) was pushed from the server through the push connection

Specified by:
pushInvalidContent in interface ConnectionStateHandler

xhrInvalidStatusCode

public void xhrInvalidStatusCode(XhrConnectionError xhrConnectionError)
Description copied from interface: ConnectionStateHandler
Called when invalid status code (not 200) was returned by the server as the result of an XmlHttpRequest.

Specified by:
xhrInvalidStatusCode in interface ConnectionStateHandler

handleUnauthorized

protected void handleUnauthorized(XhrConnectionError xhrConnectionError)

xhrOk

public void xhrOk()
Description copied from interface: ConnectionStateHandler
Called whenever a XmlHttpRequest to the server completes successfully

Specified by:
xhrOk in interface ConnectionStateHandler

pushOk

public void pushOk(PushConnection pushConnection)
Description copied from interface: ConnectionStateHandler
Called when the push connection to the server has been established.

Specified by:
pushOk in interface ConnectionStateHandler
Parameters:
pushConnection - The push connection which was established

pushScriptLoadError

public void pushScriptLoadError(java.lang.String resourceUrl)
Description copied from interface: ConnectionStateHandler
Called when the required push script could not be loaded

Specified by:
pushScriptLoadError in interface ConnectionStateHandler
Parameters:
resourceUrl - The URL which was used for loading the script

pushNotConnected

public void pushNotConnected(elemental.json.JsonObject payload)
Description copied from interface: ConnectionStateHandler
Called when a message is to be sent to the server through the push channel but the push channel is not connected

Specified by:
pushNotConnected in interface ConnectionStateHandler
Parameters:
payload - The payload to send to the server

pushReconnectPending

public void pushReconnectPending(PushConnection pushConnection)
Description copied from interface: ConnectionStateHandler
Called when the push connection has lost the connection to the server and will proceed to try to re-establish the connection

Specified by:
pushReconnectPending in interface ConnectionStateHandler
Parameters:
pushConnection - The push connection which will be reconnected

pushError

public void pushError(PushConnection pushConnection,
                      JavaScriptObject response)
Description copied from interface: ConnectionStateHandler
Called when a fatal error fatal error occurs in the push connection. The push connection will not try to recover from this situation itself and typically the problem handler should not try to do automatic recovery either. The cause can be e.g. maximum number of reconnection attempts have been reached, neither the selected transport nor the fallback transport can be used or similar.

Specified by:
pushError in interface ConnectionStateHandler
Parameters:
pushConnection - The push connection where the error occurred
response - An object containing response data

pushClientTimeout

public void pushClientTimeout(PushConnection pushConnection,
                              JavaScriptObject response)
Description copied from interface: ConnectionStateHandler
Called when a client side timeout occurs before a push connection to the server completes. The client side timeout causes a disconnection of the push connection and no reconnect will be attempted after this method is called,

Specified by:
pushClientTimeout in interface ConnectionStateHandler
Parameters:
pushConnection - The push connection which timed out
response - An object containing response data

pushClosed

public void pushClosed(PushConnection pushConnection,
                       JavaScriptObject response)
Description copied from interface: ConnectionStateHandler
Called when the push connection to the server is closed. This might result in the push connection trying a fallback connection method, trying to reconnect to the server or might just be an indication that the connection was intentionally closed ("unsubscribe"),

Specified by:
pushClosed in interface ConnectionStateHandler
Parameters:
pushConnection - The push connection which was closed


Copyright © 2000-2014 Vaadin Ltd. All Rights Reserved.