Package com.vaadin.flow.server
Class SynchronizedRequestHandler
java.lang.Object
com.vaadin.flow.server.SynchronizedRequestHandler
- All Implemented Interfaces:
RequestHandler
,Serializable
- Direct Known Subclasses:
BootstrapHandler
,HeartbeatHandler
,TranslationFileRequestHandler
,UidlRequestHandler
,WebComponentProvider
RequestHandler which takes care of locking and unlocking of the VaadinSession
automatically. The session is locked before
synchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
is called and unlocked after it has completed.- Since:
- 1.0
- Author:
- Vaadin Ltd
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
ResponseWriter is optionally returned by request handlers which implementsynchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse, String)
The ResponseWriter will be executed byhandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
without holding Vaadin session lock. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
canHandleRequest
(VaadinRequest request) Check whether a request may be handled by this handler.static String
getRequestBody
(Reader reader) boolean
handleRequest
(VaadinSession session, VaadinRequest request, VaadinResponse response) Called when a request needs to be handled.boolean
Gets if request body should be read and the response written without holdingVaadinSession
lockabstract boolean
synchronizedHandleRequest
(VaadinSession session, VaadinRequest request, VaadinResponse response) Identical tohandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
except theVaadinSession
is locked before this is called and unlocked after this has completed.synchronizedHandleRequest
(VaadinSession session, VaadinRequest request, VaadinResponse response, String requestBody) Identical tosynchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
except theVaadinSession
is locked before this is called and the response requestBody has been read before locking the session and is provided as a separate parameter.
-
Field Details
-
MAX_BUFFER_SIZE
public static final int MAX_BUFFER_SIZE- See Also:
-
-
Constructor Details
-
SynchronizedRequestHandler
public SynchronizedRequestHandler()
-
-
Method Details
-
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 returntrue
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 usingVaadinSession.accessSynchronously(Command)
orUI.accessSynchronously(Command)
.- Specified by:
handleRequest
in interfaceRequestHandler
- Parameters:
session
- The session for the requestrequest
- The request to handleresponse
- 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
-
synchronizedHandleRequest
public abstract boolean synchronizedHandleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response) throws IOException Identical tohandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
except theVaadinSession
is locked before this is called and unlocked after this has completed.- Parameters:
session
- The session for the requestrequest
- The request to handleresponse
- 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- See Also:
-
isReadAndWriteOutsideSessionLock
public boolean isReadAndWriteOutsideSessionLock()Gets if request body should be read and the response written without holdingVaadinSession
lock- Returns:
- true if
synchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse, String)
should be called. Returns false ifsynchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
should be called.
-
synchronizedHandleRequest
public Optional<SynchronizedRequestHandler.ResponseWriter> synchronizedHandleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response, String requestBody) throws IOException, UnsupportedOperationException Identical tosynchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse)
except theVaadinSession
is locked before this is called and the response requestBody has been read before locking the session and is provided as a separate parameter.- Parameters:
session
- The session for the requestrequest
- The request to handleresponse
- The response object to which a response can be written.requestBody
- Request body pre-read from the request object- Returns:
- a ResponseWriter wrapped into an Optional, if this handler will write the response and no further request handlers should be called, otherwise an empty Optional. The ResponseWriter will be executed after the VaadinSession is unlocked.
- Throws:
IOException
- If an IO error occurredUnsupportedOperationException
- See Also:
-
canHandleRequest
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 returnstrue
which means that all requests will be handled by callingsynchronizedHandleRequest(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.
-
getRequestBody
- Throws:
IOException
-