Class SynchronizedRequestHandler

    • Field Detail

      • MAX_BUFFER_SIZE

        public static final int MAX_BUFFER_SIZE
        Maximum capacity of request body.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SynchronizedRequestHandler

        public SynchronizedRequestHandler()
    • Method Detail

      • handleRequest

        public boolean handleRequest​(VaadinSession session,
                                     VaadinRequest request,
                                     VaadinResponse response)
                              throws IOException
        Description copied from interface: RequestHandler
        Called when a request needs to be handled. If a response is written, this method should return true to indicate that no more request handlers should be invoked for the request.

        Note that request handlers by default do not lock the session. If you are using VaadinSession or anything inside the VaadinSession you must ensure the session is locked. This can be done by extending SynchronizedRequestHandler or by using VaadinSession.accessSynchronously(Runnable) or UI.accessSynchronously(Runnable).

        Specified by:
        handleRequest in interface RequestHandler
        Parameters:
        session - The session for the request
        request - The request to handle
        response - The response object to which a response can be written.
        Returns:
        true if a response has been written and no further request handlers should be called, otherwise false
        Throws:
        IOException - If an IO error occurred
      • canHandleRequest

        protected boolean canHandleRequest​(VaadinRequest request)
        Check whether a request may be handled by this handler. This can be used as an optimization to avoid locking the session just to investigate some method property. The default implementation just returns true which means that all requests will be handled by calling synchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse) with the session locked.
        Parameters:
        request - the request to handle
        Returns:
        true if the request handling should continue once the session has been locked; false if there's no need to lock the session since the request would still not be handled.
        Since:
        7.2
      • getRequestBody

        public static String getRequestBody​(Reader reader)
                                     throws IOException
        Reads the entire request body from the given reader without any size limit.

        Prefer getRequestBody(Reader, long) on request-handling code paths so that the configured maximum request body size is enforced.

        Parameters:
        reader - a Reader containing the body of the request
        Returns:
        request body as a String
        Throws:
        IOException - If an IO error occurred.
        Since:
        8.28
      • getRequestBody

        public static String getRequestBody​(Reader reader,
                                            long maxBodySize)
                                     throws IOException
        Reads the request body from the given reader, rejecting it once it exceeds maxBodySize characters.

        The limit is enforced on the number of characters read from the reader. For typical ASCII/UTF-8 JSON payloads this equals the number of bytes; multi-byte content makes the effective byte limit larger.

        Parameters:
        reader - the reader to read the request body from
        maxBodySize - the maximum number of characters to read, or a negative number to read without any limit
        Returns:
        the request body as a string
        Throws:
        IOException - if reading fails
        RequestBodyTooLargeException - if the body exceeds maxBodySize characters
        Since:
        8.32
      • getMaxRequestBodySize

        public static long getMaxRequestBodySize​(VaadinRequest request)
        Gets the configured maximum request body size for the given request, in characters.
        Parameters:
        request - the request being handled
        Returns:
        the maximum request body size in characters, or a negative number if the limit is disabled
        Since:
        8.32