public final class Router extends AbstractRouter<Router,Request,Handler> implements Handler
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);
AbstractRouter
,
UriRouteMatcher
,
RouteMatchers
Constructor and Description |
---|
Router()
Creates a new router with no routes defined.
|
Router(Router router)
Creates a new router containing the same routes and default route as the
provided router.
|
Modifier and Type | Method and Description |
---|---|
protected Router |
getThis()
Returns this
AbstractRouter instance, typed correctly. |
Promise<Response,NeverThrowsException> |
handle(Context context,
Request request)
|
addAllRoutes, addRoute, getBestRoute, removeAllRoutes, removeRoute, setDefaultRoute
public Router()
protected Router getThis()
AbstractRouter
AbstractRouter
instance, typed correctly.getThis
in class AbstractRouter<Router,Request,Handler>
AbstractRouter
instance.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.