Class MessageHandler


  • public class MessageHandler
    extends Object
    A MessageHandler is responsible for handling all incoming messages (JSON) from the server (state changes, RPCs and other updates) and ensuring that the connectors are updated accordingly.
    Since:
    7.6
    Author:
    Vaadin Ltd
    • Field Detail

      • lastProcessingTime

        protected int lastProcessingTime
        Holds the time spent rendering the last request.
      • totalProcessingTime

        protected int totalProcessingTime
        Holds the total time spent rendering requests during the lifetime of the session.
    • Constructor Detail

      • MessageHandler

        public MessageHandler()
    • Method Detail

      • setConnection

        public void setConnection​(ApplicationConnection connection)
        Sets the application connection this instance is connected to. Called internally by the framework.
        Parameters:
        connection - the application connection this instance is connected to
      • handleMessage

        public void handleMessage​(ValueMap json)
        Handles a received UIDL JSON text, parsing it, and passing it on to the appropriate handlers, while logging timing information.
        Parameters:
        json - The JSON to handle
      • handleJSON

        protected void handleJSON​(ValueMap json)
      • suspendReponseHandling

        public void suspendReponseHandling​(Object lock)
        This method can be used to postpone rendering of a response for a short period of time (e.g. to avoid the rendering process during animation).
        Parameters:
        lock -
      • resumeResponseHandling

        public void resumeResponseHandling​(Object lock)
        Resumes the rendering process once all locks have been removed.
        Parameters:
        lock -
      • getLastSeenServerSyncId

        public int getLastSeenServerSyncId()
        Gets the server id included in the last received response.

        This id can be used by connectors to determine whether new data has been received from the server to avoid doing the same calculations multiple times.

        No guarantees are made for the structure of the id other than that there will be a new unique value every time a new response with data from the server is received.

        The initial id when no request has yet been processed is -1.

        Returns:
        an id identifying the response
      • getCsrfToken

        public String getCsrfToken()
        Gets the token (aka double submit cookie) that the server uses to protect against Cross Site Request Forgery attacks.
        Returns:
        the CSRF token string
      • getPushId

        public String getPushId()
        Gets the push connection identifier for this session. Used when establishing a push connection with the client.
        Returns:
        the push connection identifier string
        Since:
        7.7.11
      • isUpdatingState

        public boolean isUpdatingState()
        Checks whether state changes are currently being processed. Certain operations are not allowed when the internal state of the application might be in an inconsistent state because some state changes have been applied but others not. This includes running layotus.
        Returns:
        true if the internal state might be inconsistent because changes are being processed; false if the state should be consistent
      • isInitialUidlHandled

        public boolean isInitialUidlHandled()
        Checks if the first UIDL has been handled.
        Returns:
        true if the initial UIDL has already been processed, false otherwise
      • stripJSONWrapping

        public static String stripJSONWrapping​(String jsonWithWrapping)
        Strips the JSON wrapping from the given json string with wrapping. If the given string is not wrapped as expected, returns null
        Parameters:
        jsonWithWrapping - the JSON received from the server
        Returns:
        an unwrapped JSON string or null if the given string was not wrapped
        Since:
        7.6
      • parseJson

        public static ValueMap parseJson​(String jsonText)
        Unwraps and parses the given JSON, originating from the server.
        Parameters:
        jsonText - the json from the server
        Returns:
        A parsed ValueMap or null if the input could not be parsed (or was null)
      • parseWrappedJson

        public static ValueMap parseWrappedJson​(String wrappedJsonText)
        Parse the given wrapped JSON, received from the server, to a ValueMap.
        Parameters:
        wrappedJsonText - the json, wrapped as done by the server
        Returns:
        a ValueMap, or null if the wrapping was incorrect or json could not be parsed
      • onResynchronize

        public void onResynchronize()