Class Router

  • All Implemented Interfaces:
    Handler, DescribableHandler, Describable<io.swagger.models.Swagger,​Request>, Describable.Listener

    public final class Router
    extends AbstractRouter<Router,​Request,​Handler,​io.swagger.models.Swagger>
    implements DescribableHandler
    A router which routes requests based on route matchers. Each route is comprised of a route matcher and a corresponding handler, when routing a request the router will call RouteMatcher.evaluate(Context, Object) for each registered route and use the returned RouteMatch to determine which route best matches the request.

    Routes may be added and removed from a router as follows:

     Handler users = ...;
     Router router = new Router();
     RouteMatcher routeOne = RouteMatchers.requestUriMatcher(EQUALS, "users");
     RouteMatcher routeTwo = RouteMatcher.requestUriMatcher(EQUALS, "users/{userId}");
     router.addRoute(routeOne, users);
     router.addRoute(routeTwo, users);
    
     // Deregister a route.
     router.removeRoute(routeOne, routeTwo);
     
    See Also:
    AbstractRouter, UriRouteMatcher, RouteMatchers
    • Constructor Detail

      • Router

        public Router()
        Creates a new router with no routes defined.
      • Router

        public Router​(Router router)
        Creates a new router containing the same routes and default route as the provided router. Changes to the returned router's routing table will not impact the provided router.
        Parameters:
        router - The router to be copied.
    • Method Detail

      • handle

        public Promise<Response,​NeverThrowsException> handle​(Context context,
                                                                   Request request)
        Description copied from interface: Handler
        Returns a 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).

        Specified by:
        handle in interface Handler
        Parameters:
        context - The request context.
        request - The request.
        Returns:
        A Promise representing the response to be returned to the caller.