public class Chain extends GenericHeapObject implements Handler
When a chain dispatches a request to a filter, it creates a "subchain" (a subset of this chain, which contains the remaining downstream filters and handler), and passes it as a parameter to the filter. For this reason, a filter should make no assumptions or correlations using the chain it is supplied with when invoked.
A filter may elect to terminate dispatching of the request to the rest of the chain by not
calling chain.handle(Context, Request)
and generate its own response or dispatch to a
completely different handler.
Filter
Modifier and Type | Class and Description |
---|---|
static class |
Chain.Heaplet
Creates and initializes a filter chain in a heap environment.
|
logger, storage
Constructor and Description |
---|
Chain(Handler handler,
List<Filter> filters)
Builds a chain of filters that will finally dispatch to the given handler.
|
Modifier and Type | Method and Description |
---|---|
Promise<Response,NeverThrowsException> |
handle(Context context,
Request request)
|
getLogger, getStorage, setLogger, setStorage
public Promise<Response,NeverThrowsException> handle(Context context, Request request)
Handler
Promise
representing the asynchronous Response
of the given request
.
If any (asynchronous) processing goes wrong, the promise still contains a Response
(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).
Copyright 2011-2015 ForgeRock AS.