Class ApplicationConnection

  • All Implemented Interfaces:
    com.google.gwt.event.shared.HasHandlers

    public class ApplicationConnection
    extends Object
    implements com.google.gwt.event.shared.HasHandlers
    This is the client side communication "engine", managing client-server communication with its server side counterpart com.vaadin.server.VaadinService. Client-side connectors receive updates from the corresponding server-side connector (typically component) as state updates or RPC calls. The connector has the possibility to communicate back with its server side counter part through RPC calls. TODO document better Entry point classes (widgetsets) define onModuleLoad().
    • Field Detail

      • UIDL_REFRESH_TOKEN

        public static final String UIDL_REFRESH_TOKEN
        A string that, if found in a non-JSON response to a UIDL request, will cause the browser to refresh the page. If followed by a colon, optional whitespace, and a URI, causes the browser to synchronously load the URI.

        This allows, for instance, a servlet filter to redirect the application to a custom login page when the session expires. For example:

         if (sessionExpired) {
             response.setHeader("Content-Type", "text/html");
             response.getWriter().write(myLoginPageHtml + "<!-- Vaadin-Refresh: "
                     + request.getContextPath() + " -->");
         }
         
        See Also:
        Constant Field Values
      • cssLoaded

        protected boolean cssLoaded
    • Constructor Detail

      • ApplicationConnection

        public ApplicationConnection()
    • Method Detail

      • start

        public void start()
        Starts this application. Don't call this method directly - it's called by ApplicationConfiguration#startNextApplication(), which should be called once this application has started (first response received) or failed to start. This ensures that the applications are started in order, to avoid session-id problems.
      • analyzeLayouts

        @Deprecated
        public void analyzeLayouts()
        Deprecated.
        as of 7.1. Replaced by UIConnector.analyzeLayouts()
        Requests an analyze of layouts, to find inconsistencies. Exclusively used for debugging during development.
      • executeWhenCSSLoaded

        public void executeWhenCSSLoaded​(com.google.gwt.user.client.Command c)
      • isCSSLoaded

        protected boolean isCSSLoaded()
        Checks whether or not the CSS is loaded. By default checks the size of the loading indicator element.
        Returns:
      • showCommunicationError

        public void showCommunicationError​(String details,
                                           int statusCode)
        Shows the communication error notification.
        Parameters:
        details - Optional details.
        statusCode - The status code returned for the request
      • showAuthenticationError

        public void showAuthenticationError​(String details)
        Shows the authentication error notification.
        Parameters:
        details - Optional details.
      • showSessionExpiredError

        public void showSessionExpiredError​(String details)
        Shows the session expiration notification.
        Parameters:
        details - Optional details.
      • showError

        protected void showError​(String details,
                                 ApplicationConfiguration.ErrorMessage message)
        Shows an error notification.
        Parameters:
        details - Optional details.
        message - An ErrorMessage describing the error.
      • getLoadingIndicator

        public VLoadingIndicator getLoadingIndicator()
        Returns the loading indicator used by this ApplicationConnection
        Returns:
        The loading indicator for this ApplicationConnection
      • loadStyleDependencies

        public void loadStyleDependencies​(com.google.gwt.core.client.JsArrayString dependencies)
      • loadScriptDependencies

        public void loadScriptDependencies​(com.google.gwt.core.client.JsArrayString dependencies)
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   ServerConnector newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   String newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   int newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   long newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   float newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   double newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   boolean newValue,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        newValue - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   Map<String,​Object> map,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        map - the new values to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   String[] values,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        A null array is sent as an empty array.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        values - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • updateVariable

        public void updateVariable​(String paintableId,
                                   String variableName,
                                   Object[] values,
                                   boolean immediate)
        Sends a new value for the given paintables given variable to the server.

        The update is actually queued to be sent at a suitable time. If immediate is true, the update is sent as soon as possible. If immediate is false, the update will be sent along with the next immediate update.

        A null array is sent as an empty array.

        Parameters:
        paintableId - the id of the paintable that owns the variable
        variableName - the name of the variable
        values - the new value to be sent
        immediate - true if the update is to be sent as soon as possible
      • runDescendentsLayout

        @Deprecated
        public void runDescendentsLayout​(com.google.gwt.user.client.ui.HasWidgets container)
        Deprecated.
        As of 7.0, serves no purpose
        Does absolutely nothing. Replaced by LayoutManager.
        Parameters:
        container -
      • forceLayout

        public void forceLayout()
        This will cause re-layouting of all components. Mainly used for development. Published to JavaScript.
      • handleComponentRelativeSize

        @Deprecated
        public boolean handleComponentRelativeSize​(com.google.gwt.user.client.ui.Widget widget)
        Deprecated.
        As of 7.0, serves no purpose
        Returns false
        Parameters:
        paintable -
        Returns:
        false, always
      • getConnector

        public ServerConnector getConnector​(String connectorId,
                                            int connectorType)
        Get either an existing ComponentConnector or create a new ComponentConnector with the given type and id. If a ComponentConnector with the given id already exists, returns it. Otherwise creates and registers a new ComponentConnector of the given type.
        Parameters:
        connectorId - Id of the paintable
        connectorType - Type of the connector, as passed from the server side
        Returns:
        Either an existing ComponentConnector or a new ComponentConnector of the given type
      • getResource

        public String getResource​(String name)
        Gets a resource that has been pre-loaded via UIDL, such as custom layouts.
        Parameters:
        name - identifier of the resource to get
        Returns:
        the resource
      • setResource

        public void setResource​(String name,
                                String resource)
        Sets a resource that has been pre-loaded via UIDL, such as custom layouts.
        Parameters:
        name - identifier of the resource to Set
        resource - the resource
        Since:
        7.6
      • getContextMenu

        public VContextMenu getContextMenu()
        Singleton method to get instance of app's context menu.
        Returns:
        VContextMenu object
      • getIcon

        public Icon getIcon​(String uri)
        Gets an Icon instance corresponding to a URI.
        Parameters:
        uri -
        Returns:
        Icon object
        Since:
        7.2
      • translateVaadinUri

        public String translateVaadinUri​(String uidlUri)
        Translates custom protocols in UIDL URI's to be recognizable by browser. All uri's from UIDL should be routed via this method before giving them to browser due URI's in UIDL may contain custom protocols like theme://.
        Parameters:
        uidlUri - Vaadin URI from uidl
        Returns:
        translated URI ready for browser
      • getThemeUri

        public String getThemeUri()
        Gets the URI for the current theme. Can be used to reference theme resources.
        Returns:
        URI to the current theme
      • captionSizeUpdated

        @Deprecated
        public void captionSizeUpdated​(com.google.gwt.user.client.ui.Widget widget)
        Deprecated.
        As of 7.0.2, has not had any effect for a long time
        Use to notify that the given component's caption has changed; layouts may have to be recalculated.
        Parameters:
        component - the Paintable whose caption has changed
      • getUIConnector

        public UIConnector getUIConnector()
        Gets the main view
        Returns:
        the main view
      • hasEventListeners

        @Deprecated
        public boolean hasEventListeners​(ComponentConnector connector,
                                         String eventIdentifier)
        Deprecated.
        As of 7.0. Use AbstractConnector#hasEventListener(String) instead
        Checks if there is a registered server side listener for the event. The list of events which has server side listeners is updated automatically before the component is updated so the value is correct if called from updatedFromUIDL.
        Parameters:
        connector - The connector to register event listeners for
        eventIdentifier - The identifier for the event
        Returns:
        true if at least one listener has been registered on server side for the event identified by eventIdentifier.
      • addGetParameters

        @Deprecated
        public static String addGetParameters​(String uri,
                                              String extraParams)
        Adds the get parameters to the uri and returns the new uri that contains the parameters.
        Parameters:
        uri - The uri to which the parameters should be added.
        extraParams - One or more parameters in the format "a=b" or "c=d&e=f". An empty string is allowed but will not modify the url.
        Returns:
        The modified URI with the get parameters in extraParams added.
      • unregisterPaintable

        @Deprecated
        public void unregisterPaintable​(ServerConnector p)
        Deprecated.
        As of 7.0. No longer serves any purpose.
      • getVTooltip

        public VTooltip getVTooltip()
        Get VTooltip instance related to application connection
        Returns:
        VTooltip instance
      • updateComponent

        @Deprecated
        public boolean updateComponent​(com.google.gwt.user.client.ui.Widget component,
                                       UIDL uidl,
                                       boolean manageCaption)
        Deprecated.
        As of 7.0, no longer serves any purpose
        Method provided for backwards compatibility. Duties previously done by this method is now handled by the state change event handler in AbstractComponentConnector. The only function this method has is to return true if the UIDL is a "cached" update.
        Parameters:
        component -
        uidl -
        manageCaption -
        Returns:
      • scheduleHeartbeat

        @Deprecated
        protected void scheduleHeartbeat()
        Deprecated.
        as of 7.2, use Heartbeat.schedule() instead
        Schedules a heartbeat request to occur after the configured heartbeat interval elapses if the interval is a positive number. Otherwise, does nothing.
      • sendHeartbeat

        @Deprecated
        protected void sendHeartbeat()
        Deprecated.
        as of 7.2, use Heartbeat.send() instead
        Sends a heartbeat request to the server.

        Heartbeat requests are used to inform the server that the client-side is still alive. If the client page is closed or the connection lost, the server will eventually close the inactive UI.

      • handleCommunicationError

        public void handleCommunicationError​(String details,
                                             int statusCode)
      • setCommunicationErrorDelegate

        public void setCommunicationErrorDelegate​(ApplicationConnection.CommunicationErrorHandler delegate)
        Sets the delegate that is called whenever a communication error occurrs.
        Parameters:
        delegate - the delegate.
      • setApplicationRunning

        public void setApplicationRunning​(boolean applicationRunning)
      • isApplicationRunning

        public boolean isApplicationRunning()
        Checks if the application is in the ApplicationConnection.ApplicationState.RUNNING state.
        Returns:
        true if the application is in the running state, false otherwise
        Since:
        7.6
      • addHandler

        public <H extends com.google.gwt.event.shared.EventHandler> com.google.gwt.event.shared.HandlerRegistration addHandler​(com.google.gwt.event.shared.GwtEvent.Type<H> type,
                                                                                                                               H handler)
      • fireEvent

        public void fireEvent​(com.google.gwt.event.shared.GwtEvent<?> event)
        Specified by:
        fireEvent in interface com.google.gwt.event.shared.HasHandlers
      • flushActiveConnector

        public void flushActiveConnector()
        Calls ComponentConnector.flush() on the active connector. Does nothing if there is no active (focused) connector.
      • getHeartbeat

        public Heartbeat getHeartbeat()
        Returns the hearbeat instance.
      • getApplicationState

        public ApplicationConnection.ApplicationState getApplicationState()
        Returns the state of this application. An application state goes from "initializing" to "running" to "stopped". There is no way for an application to go back to a previous state, i.e. a stopped application can never be re-started
        Returns:
        the current state of this application
        Since:
        7.6
      • getServerRpcQueue

        public ServerRpcQueue getServerRpcQueue()
        Gets the server RPC queue for this application
        Returns:
        the server RPC queue
        Since:
        7.6
      • getConnectionStateHandler

        public ConnectionStateHandler getConnectionStateHandler()
        Gets the communication error handler for this application
        Returns:
        the server RPC queue
        Since:
        7.6
      • getMessageHandler

        public MessageHandler getMessageHandler()
        Gets the (server to client) message handler for this application
        Returns:
        the message handler
        Since:
        7.6
      • getRpcManager

        public RpcManager getRpcManager()
        Gets the server rpc manager for this application
        Returns:
        the server rpc manager
        Since:
        7.6
      • getMessageSender

        public MessageSender getMessageSender()
        Gets the (client to server) message sender for this application
        Returns:
        the message sender
        Since:
        7.6
      • getWidgetSet

        public WidgetSet getWidgetSet()
        Returns:
        the widget set
        Since:
        7.6
      • getLastSeenServerSyncId

        public int getLastSeenServerSyncId()