public final class Router extends AbstractRouter<Router,Request,Handler,io.swagger.models.Swagger> implements DescribableHandler
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
Describable.Listener
api, thisRouterUriMatcher
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 Pair<RouteMatcher<Request>,Handler> |
getSelfApiHandler()
Return a
Describable handler that returns this AbstractRouter 's internal api description from the
Describable.handleApiRequest(Context, Object) method. |
protected Router |
getThis()
Returns this
AbstractRouter instance, typed correctly. |
Promise<Response,NeverThrowsException> |
handle(Context context,
Request request)
|
protected RouteMatcher<Request> |
uriMatcher(RoutingMode mode,
String pattern)
Create a URI matcher suitable for the request type
<R> . |
addAllRoutes, addDescriptorListener, addRoute, api, buildApi, getBestApiRoute, getBestRoute, getRoutes, handleApiRequest, notifyDescriptorChange, removeAllRoutes, removeDescriptorListener, removeRoute, setDefaultRoute
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addDescriptorListener, api, handleApiRequest, removeDescriptorListener
public Router()
public Router(Router router)
router
- The router to be copied.protected Router getThis()
AbstractRouter
AbstractRouter
instance, typed correctly.getThis
in class AbstractRouter<Router,Request,Handler,io.swagger.models.Swagger>
AbstractRouter
instance.protected RouteMatcher<Request> uriMatcher(RoutingMode mode, String pattern)
AbstractRouter
<R>
.uriMatcher
in class AbstractRouter<Router,Request,Handler,io.swagger.models.Swagger>
mode
- The routing mode.pattern
- The pattern.protected Pair<RouteMatcher<Request>,Handler> getSelfApiHandler()
AbstractRouter
Describable
handler that returns this AbstractRouter
's internal api description from the
Describable.handleApiRequest(Context, Object)
method. All other methods should throw an
UnsupportedOperationException
, as they should never be used.getSelfApiHandler
in class AbstractRouter<Router,Request,Handler,io.swagger.models.Swagger>
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 © 2010-2018, ForgeRock All Rights Reserved.