Class DispatchHandler

  • All Implemented Interfaces:
    org.forgerock.http.Handler

    public class DispatchHandler
    extends Object
    implements org.forgerock.http.Handler
    Dispatches to one of a list of handlers. When a request is handled, each handler's condition is evaluated. If a condition expression yields 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.

    • Constructor Detail

      • DispatchHandler

        public DispatchHandler()
    • Method Detail

      • addBinding

        public DispatchHandler addBinding​(Expression<Boolean> condition,
                                          org.forgerock.http.Handler handler,
                                          URI 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

        public DispatchHandler addUnconditionalBinding​(org.forgerock.http.Handler handler,
                                                       URI baseURI)
        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

        public org.forgerock.util.promise.Promise<org.forgerock.http.protocol.Response,​org.forgerock.util.promise.NeverThrowsException> handle​(org.forgerock.services.context.Context context,
                                                                                                                                                     org.forgerock.http.protocol.Request request)
        Specified by:
        handle in interface org.forgerock.http.Handler