|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.restlet.Restlet
org.restlet.routing.Redirector
public class Redirector
Rewrites URIs then redirects the call or the client to a new destination.
There are various redirection modes that you can choose from: client-side
redirections (MODE_CLIENT_FOUND, MODE_CLIENT_PERMANENT,
MODE_CLIENT_SEE_OTHER, MODE_CLIENT_TEMPORARY) or
server-side redirections, similar to a reverse proxy (
MODE_SERVER_OUTBOUND and MODE_SERVER_INBOUND).
When setting the redirection URIs, you can also used special URI variables to
reuse most properties from the original request as well as URI template
variables. For a complete list of properties, please see the Resolver
class. For example "/target?referer={fi}" would redirect to the relative URI,
inserting the referrer URI as a query parameter.
To create a reverse proxy, a typically configuration will use the
MODE_SERVER_OUTBOUND constant and a target URI like
"http://targetHost/targetRootPath/{rr}" to ensure that all child URIs are
properly redirected as well, "rr" appending the remaining part of the current
request URI that hasn't been routed yet.
Concurrency note: instances of this class or its subclasses can be invoked by
several threads at the same time and therefore must be thread-safe. You
should be especially careful when storing state in member variables.
Template,
User Guide -
URI rewriting and redirection| Field Summary | |
|---|---|
protected int |
mode
The redirection mode. |
static int |
MODE_CLIENT_FOUND
In this mode, the client is simply redirected to the URI generated from the target URI pattern using the Status.REDIRECTION_FOUND status. |
static int |
MODE_CLIENT_PERMANENT
In this mode, the client is permanently redirected to the URI generated from the target URI pattern, using the Status.REDIRECTION_PERMANENT status. |
static int |
MODE_CLIENT_SEE_OTHER
In this mode, the client is simply redirected to the URI generated from the target URI pattern using the Status.REDIRECTION_SEE_OTHER
status. |
static int |
MODE_CLIENT_TEMPORARY
In this mode, the client is temporarily redirected to the URI generated from the target URI pattern using the Status.REDIRECTION_TEMPORARY status. |
static int |
MODE_SERVER_INBOUND
In this mode, the call is sent to Context.getServerDispatcher(). |
static int |
MODE_SERVER_OUTBOUND
In this mode, the call is sent to Application.getOutboundRoot()
or if null to Context.getClientDispatcher(). |
protected String |
targetTemplate
The target URI pattern. |
| Constructor Summary | |
|---|---|
Redirector(Context context,
String targetTemplate)
Constructor for the client dispatcher mode. |
|
Redirector(Context context,
String targetPattern,
int mode)
Constructor. |
|
| Method Summary | |
|---|---|
int |
getMode()
Returns the redirection mode. |
protected Reference |
getTargetRef(Request request,
Response response)
Returns the target reference to redirect to by automatically resolving URI template variables found using the Template class using the
request and response as data models. |
String |
getTargetTemplate()
Returns the target URI pattern. |
void |
handle(Request request,
Response response)
Handles a call by redirecting using the selected redirection mode. |
protected void |
inboundServerRedirect(Reference targetRef,
Request request,
Response response)
Redirects a given call to a target reference. |
protected void |
outboundServerRedirect(Reference targetRef,
Request request,
Response response)
Redirects a given call to a target reference. |
protected Representation |
rewrite(Representation initialEntity)
Optionally rewrites the response entity returned in the MODE_SERVER_INBOUND and MODE_SERVER_OUTBOUND modes. |
protected void |
serverRedirect(Restlet next,
Reference targetRef,
Request request,
Response response)
Redirects a given call on the server-side to a next Restlet with a given target reference. |
void |
setMode(int mode)
Sets the redirection mode. |
void |
setTargetTemplate(String targetTemplate)
Sets the target URI pattern. |
| 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, start, stop |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int MODE_CLIENT_PERMANENT
Status.REDIRECTION_PERMANENT status. Note: this is a client-side
redirection.
Status.REDIRECTION_PERMANENT,
Constant Field Valuespublic static final int MODE_CLIENT_FOUND
Status.REDIRECTION_FOUND status.
Note: this is a client-side redirection.
Status.REDIRECTION_FOUND,
Constant Field Valuespublic static final int MODE_CLIENT_SEE_OTHER
Status.REDIRECTION_SEE_OTHER
status. Note: this is a client-side redirection.
Status.REDIRECTION_SEE_OTHER,
Constant Field Valuespublic static final int MODE_CLIENT_TEMPORARY
Status.REDIRECTION_TEMPORARY status. Note: this is a client-side
redirection.
Status.REDIRECTION_TEMPORARY,
Constant Field Valuespublic static final int MODE_SERVER_OUTBOUND
Application.getOutboundRoot()
or if null to Context.getClientDispatcher(). Once the selected
client connector has completed the request handling, the response is
normally returned to the client. In this case, you can view the
Redirector as acting as a transparent server-side proxy. Note:
this is a server-side redirection.Component and to declare them in the list of required connectors
on the Application.getConnectorService() property.
Application.getOutboundRoot(),
Context.getClientDispatcher(),
Constant Field Valuespublic static final int MODE_SERVER_INBOUND
Context.getServerDispatcher().
Once the selected client connector has completed the request handling,
the response is normally returned to the client. In this case, you can
view the Redirector as acting as a transparent proxy Restlet. Note: this
is a server-side redirection.Component and to declare them in the list of required connectors
on the Application.getConnectorService() property.
Context.getServerDispatcher(),
Constant Field Valuesprotected volatile String targetTemplate
protected volatile int mode
| Constructor Detail |
|---|
public Redirector(Context context,
String targetTemplate)
context - The context.targetTemplate - The template to build the target URI.Template
public Redirector(Context context,
String targetPattern,
int mode)
context - The context.targetPattern - The pattern to build the target URI (using StringTemplate
syntax and the CallModel for variables).mode - The redirection mode.| Method Detail |
|---|
public int getMode()
protected Reference getTargetRef(Request request,
Response response)
Template class using the
request and response as data models.
request - The request to handle.response - The response to update.
public String getTargetTemplate()
public void handle(Request request,
Response response)
handle in interface Uniformhandle in class Restletrequest - The request to handle.response - The response to update.
protected void inboundServerRedirect(Reference targetRef,
Request request,
Response response)
targetRef - The target reference with URI variables resolved.request - The request to handle.response - The response to update.
protected void outboundServerRedirect(Reference targetRef,
Request request,
Response response)
targetRef - The target reference with URI variables resolved.request - The request to handle.response - The response to update.protected Representation rewrite(Representation initialEntity)
MODE_SERVER_INBOUND and MODE_SERVER_OUTBOUND modes. By
default, it just returns the initial entity without any modification.
initialEntity - The initial entity returned.
protected void serverRedirect(Restlet next,
Reference targetRef,
Request request,
Response response)
next - The next Restlet to forward the call to.targetRef - The target reference with URI variables resolved.request - The request to handle.response - The response to update.public void setMode(int mode)
mode - The redirection mode.public void setTargetTemplate(String targetTemplate)
targetTemplate - The target URI pattern.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||