|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.restlet.Restlet
org.restlet.routing.Router
public class Router
Restlet routing calls to one of the attached routes. Each route can compute
an affinity score for each call depending on various criteria. The attach()
method allow the creation of routes based on URI patterns matching the
beginning of a the resource reference's remaining part.
In addition, several routing modes are supported, implementing various
algorithms:
Field Summary | |
---|---|
static int |
MODE_BEST_MATCH
Each call will be routed to the route with the best score, if the required score is reached. |
static int |
MODE_CUSTOM
Each call will be routed according to a custom mode. |
static int |
MODE_FIRST_MATCH
Each call is routed to the first route if the required score is reached. |
static int |
MODE_LAST_MATCH
Each call will be routed to the last route if the required score is reached. |
static int |
MODE_NEXT_MATCH
Each call is routed to the next route target if the required score is reached. |
static int |
MODE_RANDOM_MATCH
Each call will be randomly routed to one of the routes that reached the required score. |
Constructor Summary | |
---|---|
Router()
Constructor. |
|
Router(Context context)
Constructor. |
Method Summary | |
---|---|
TemplateRoute |
attach(Restlet target)
Attaches a target Restlet to this router with an empty URI pattern. |
TemplateRoute |
attach(Restlet target,
int matchingMode)
Attaches a target Restlet to this router with an empty URI pattern. |
TemplateRoute |
attach(String pathTemplate,
Class<? extends ServerResource> targetClass)
Attaches a target Resource class to this router based on a given URI pattern. |
TemplateRoute |
attach(String pathTemplate,
Class<? extends ServerResource> targetClass,
int matchingMode)
Attaches a target Resource class to this router based on a given URI pattern. |
TemplateRoute |
attach(String pathTemplate,
Restlet target)
Attaches a target Restlet to this router based on a given URI pattern. |
TemplateRoute |
attach(String pathTemplate,
Restlet target,
int matchingMode)
Attaches a target Restlet to this router based on a given URI pattern. |
TemplateRoute |
attachDefault(Class<? extends ServerResource> defaultTargetClass)
Attaches a Resource class to this router as the default target to invoke when no route matches. |
TemplateRoute |
attachDefault(Restlet defaultTarget)
Attaches a Restlet to this router as the default target to invoke when no route matches. |
protected TemplateRoute |
createRoute(String uriPattern,
Restlet target)
Creates a new route for the given URI pattern and target. |
protected TemplateRoute |
createRoute(String uriPattern,
Restlet target,
int matchingMode)
Creates a new route for the given URI pattern, target and matching mode. |
void |
detach(Class<?> targetClass)
Detaches the target from this router. |
void |
detach(Restlet target)
Detaches the target from this router. |
protected void |
doHandle(Restlet next,
Request request,
Response response)
Effectively handles the call using the selected next Restlet ,
typically the selected Route . |
protected Route |
getCustom(Request request,
Response response)
Returns the matched route according to a custom algorithm. |
int |
getDefaultMatchingMode()
Returns the default matching mode to use when selecting routes based on URIs. |
boolean |
getDefaultMatchingQuery()
Returns the default setting for whether the routing should be done on URIs with or without taking into account query string. |
Route |
getDefaultRoute()
Returns the default route to test if no other one was available after retrying the maximum number of attempts. |
protected int |
getMatchingMode(Restlet target)
Returns the matching mode for the target Restlet. |
int |
getMaxAttempts()
Returns the maximum number of attempts if no attachment could be matched on the first attempt. |
Restlet |
getNext(Request request,
Response response)
Returns the next Restlet if available. |
float |
getRequiredScore()
Returns the minimum score required to have a match. |
long |
getRetryDelay()
Returns the delay in milliseconds before a new attempt is made. |
RouteList |
getRoutes()
Returns the modifiable list of routes. |
int |
getRoutingMode()
Returns the routing mode. |
void |
handle(Request request,
Response response)
Handles a call by invoking the next Restlet if it is available. |
protected void |
logRoute(Route route)
Logs the route selected. |
void |
setDefaultMatchingMode(int defaultMatchingMode)
Sets the default matching mode to use when selecting routes based on URIs. |
void |
setDefaultMatchingQuery(boolean defaultMatchingQuery)
Sets the default setting for whether the routing should be done on URIs with or without taking into account query string. |
void |
setDefaultRoute(Route defaultRoute)
Sets the default route tested if no other one was available. |
void |
setMaxAttempts(int maxAttempts)
Sets the maximum number of attempts if no attachment could be matched on the first attempt. |
void |
setRequiredScore(float score)
Sets the score required to have a match. |
void |
setRetryDelay(long retryDelay)
Sets the delay in milliseconds before a new attempt is made. |
void |
setRoutes(RouteList routes)
Sets the modifiable list of routes. |
void |
setRoutingMode(int routingMode)
Sets the routing mode. |
void |
start()
Starts the filter and the attached routes. |
void |
stop()
Stops the filter and the attached routes. |
Methods inherited from class org.restlet.Restlet |
---|
createFinder, finalize, getApplication, getAuthor, getContext, getDescription, getFinderClass, getLogger, getName, getOwner, handle, handle, handle, isStarted, isStopped, setAuthor, setContext, setDescription, setFinderClass, setName, setOwner |
Methods inherited from class java.lang.Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int MODE_BEST_MATCH
RouteList.getBest(Request, Response, float)
method for
implementation details.
public static final int MODE_CUSTOM
getCustom(Request, Response)
method to provide your own logic.
public static final int MODE_FIRST_MATCH
RouteList.getFirst(Request, Response, float)
method for
implementation details.
public static final int MODE_LAST_MATCH
RouteList.getLast(Request, Response, float)
method for
implementation details.
public static final int MODE_NEXT_MATCH
RouteList.getNext(Request, Response, float)
method for
implementation details.
public static final int MODE_RANDOM_MATCH
RouteList.getRandom(Request, Response, float)
method for
implementation details.
Constructor Detail |
---|
public Router()
public Router(Context context)
context
- The context.Method Detail |
---|
public TemplateRoute attach(Restlet target)
getMatchingMode(Restlet)
will be added routing to the target
when any call is received.
target
- The target Restlet to attach.
public TemplateRoute attach(Restlet target, int matchingMode)
target
- The target Restlet to attach.matchingMode
- The matching mode.
public TemplateRoute attach(String pathTemplate, Class<? extends ServerResource> targetClass)
getMatchingMode(Restlet)
will be added routing to the target
when calls with a URI matching the pattern will be received.
pathTemplate
- The URI path template that must match the relative part of the
resource URI.targetClass
- The target Resource class to attach.
public TemplateRoute attach(String pathTemplate, Class<? extends ServerResource> targetClass, int matchingMode)
pathTemplate
- The URI path template that must match the relative part of the
resource URI.targetClass
- The target Resource class to attach.matchingMode
- The matching mode.
public TemplateRoute attach(String pathTemplate, Restlet target)
getMatchingMode(Restlet)
will be added routing to the target
when calls with a URI matching the pattern will be received.
pathTemplate
- The URI path template that must match the relative part of the
resource URI.target
- The target Restlet to attach.
public TemplateRoute attach(String pathTemplate, Restlet target, int matchingMode)
pathTemplate
- The URI path template that must match the relative part of the
resource URI.target
- The target Restlet to attach.matchingMode
- The matching mode.
public TemplateRoute attachDefault(Class<? extends ServerResource> defaultTargetClass)
defaultTargetClass
- The target Resource class to attach.
public TemplateRoute attachDefault(Restlet defaultTarget)
defaultTarget
- The Restlet to use as the default target.
protected TemplateRoute createRoute(String uriPattern, Restlet target)
getDefaultMatchingQuery()
and the matching mode will be given by
getMatchingMode(Restlet)
.
uriPattern
- The URI pattern that must match the relative part of the
resource URI.target
- The target Restlet to attach.
protected TemplateRoute createRoute(String uriPattern, Restlet target, int matchingMode)
getDefaultMatchingQuery()
.
uriPattern
- The URI pattern that must match the relative part of the
resource URI.target
- The target Restlet to attach.matchingMode
- The matching mode.
public void detach(Class<?> targetClass)
targetClass
- The target class to detach.public void detach(Restlet target)
target
- The target Restlet to detach.protected void doHandle(Restlet next, Request request, Response response)
Restlet
,
typically the selected Route
. By default, it just invokes the
next Restlet.
next
- The next Restlet to invoke.request
- The request.response
- The response.protected Route getCustom(Request request, Response response)
MODE_CUSTOM
option. The default
implementation (to be overridden), returns null.
request
- The request to handle.response
- The response to update.
public int getDefaultMatchingMode()
Template.MODE_EQUALS
.
public boolean getDefaultMatchingQuery()
public Route getDefaultRoute()
protected int getMatchingMode(Restlet target)
getDefaultMatchingMode()
. If the target is an instance of
Directory
or Router
then the mode returned is
Template.MODE_STARTS_WITH
to allow further routing by those
objects. If the target is an instance of Filter
, then it returns
the matching mode for the Filter.getNext()
Restlet recursively.
target
- The target Restlet.
public int getMaxAttempts()
public Restlet getNext(Request request, Response response)
request
- The request to handle.response
- The response to update.
public float getRequiredScore()
0.5
.
public long getRetryDelay()
500
.
public RouteList getRoutes()
public int getRoutingMode()
MODE_FIRST_MATCH
mode.
public void handle(Request request, Response response)
handle
in interface Uniform
handle
in class Restlet
request
- The request to handle.response
- The response to update.protected void logRoute(Route route)
route
- The route selected.public void setDefaultMatchingMode(int defaultMatchingMode)
Template.MODE_EQUALS
.
defaultMatchingMode
- The default matching mode.public void setDefaultMatchingQuery(boolean defaultMatchingQuery)
defaultMatchingQuery
- The default setting for whether the routing should be done on
URIs with or without taking into account query string.public void setDefaultRoute(Route defaultRoute)
defaultRoute
- The default route tested if no other one was available.public void setMaxAttempts(int maxAttempts)
maxAttempts
- The maximum number of attempts.public void setRequiredScore(float score)
0.5
.
score
- The score required to have a match.public void setRetryDelay(long retryDelay)
500
.
retryDelay
- The delay in milliseconds before a new attempt is made.public void setRoutes(RouteList routes)
routes
- The modifiable list of routes.public void setRoutingMode(int routingMode)
MODE_FIRST_MATCH
mode.
routingMode
- The routing mode.public void start() throws Exception
start
in class Restlet
Exception
public void stop() throws Exception
stop
in class Restlet
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |