Class DispatchHandler
- All Implemented Interfaces:
Handler
true
, then the request
is dispatched to the associated handler with no further processing.
If no condition yields true
then the handler will return a 404 not found response.
Therefore, it's advisable to have a single "default" handler at the end of the list
with no condition (unconditional) to handle otherwise un-dispatched requests.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Creates and initializes a dispatch handler in a heap environment. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddBinding
(Expression<Boolean> condition, Handler handler, Expression<String> baseURI) Binds an expression to the current handler to dispatch to.addUnconditionalBinding
(Handler handler, Expression<String> baseURI) Adds an unconditional bindings to the handler.
-
Constructor Details
-
DispatchHandler
public DispatchHandler()
-
-
Method Details
-
addBinding
public DispatchHandler addBinding(Expression<Boolean> condition, Handler handler, Expression<String> baseURI) Binds an expression to the current handler to dispatch to.- Parameters:
condition
- Condition to evaluate to determine if associated handler should be dispatched to. If omitted, then dispatch is unconditional.handler
- The name of the handler heap object to dispatch to if the associated condition yields true.baseURI
- Overrides the existing request URI, making requests relative to a new base URI. Only scheme, host and port are used in the supplied URI. Default: leave URI untouched.- Returns:
- The current dispatch handler.
-
addUnconditionalBinding
Adds an unconditional bindings to the handler.- Parameters:
handler
- The name of the handler heap object to dispatch to if the associated condition yields true.baseURI
- Overrides the existing request URI, making requests relative to a new base URI. Only scheme, host and port are used in the supplied URI. Default: leave URI untouched.- Returns:
- The current dispatch handler.
-
handle
Description copied from interface:Handler
Returns aPromise
representing the asynchronousResponse
of the givenrequest
. If any (asynchronous) processing goes wrong, the promise still contains aResponse
(probably from the 4xx or 5xx status code family).A handler that doesn't hand-off the processing to another downstream handler is responsible for creating the response.
The returned
Promise
contains the response returned from the server as-is. This is responsibility of the handler to produce the appropriate error response (404, 500, ...) in case of processing error.Note: As of Promise 2.0 implementation, it is not permitted to throw any runtime exception here. Doing so produce unexpected behaviour (most likely a server-side hang of the processing thread).
-