Package org.restlet.routing
Class Filter
- java.lang.Object
-
- org.restlet.Restlet
-
- org.restlet.routing.Filter
-
- All Implemented Interfaces:
Uniform
- Direct Known Subclasses:
Authenticator
,Authorizer
,Extractor
,Route
,Validator
public abstract class Filter extends Restlet
Restlet filtering calls before passing them to an attached Restlet. The purpose is to do some pre-processing or post-processing on the calls going through it before or after they are actually handled by an attached Restlet. Also note that you can attach and detach targets while handling incoming calls as the filter is ensured to be thread-safe.
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.- Author:
- Jerome Louvel
-
-
Field Summary
Fields Modifier and Type Field Description static int
CONTINUE
Indicates that the request processing should continue normally.static int
SKIP
Indicates that after thebeforeHandle(Request, Response)
method, the request processing should skip thedoHandle(Request, Response)
method to continue with theafterHandle(Request, Response)
method.static int
STOP
Indicates that the request processing should stop and return the current response from the filter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
afterHandle(Request request, Response response)
Allows filtering after processing by the next Restlet.protected int
beforeHandle(Request request, Response response)
Allows filtering before processing by the next Restlet.protected int
doHandle(Request request, Response response)
Handles the call by distributing it to the next Restlet.Restlet
getNext()
Returns the next Restlet.void
handle(Request request, Response response)
Handles a call by first invoking the beforeHandle() method for pre-filtering, then distributing the call to the next Restlet via the doHandle() method.boolean
hasNext()
Indicates if there is a next Restlet.void
setNext(java.lang.Class<? extends ServerResource> targetClass)
void
setNext(Restlet next)
Sets the next Restlet.void
start()
Starts the filter and the next Restlet if attached.void
stop()
Stops the filter and the next Restlet if attached.-
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
-
-
-
-
Field Detail
-
CONTINUE
public static final int CONTINUE
Indicates that the request processing should continue normally. If returned from thebeforeHandle(Request, Response)
method, the filter then invokes thedoHandle(Request, Response)
method. If returned from thedoHandle(Request, Response)
method, the filter then invokes theafterHandle(Request, Response)
method.- See Also:
- Constant Field Values
-
SKIP
public static final int SKIP
Indicates that after thebeforeHandle(Request, Response)
method, the request processing should skip thedoHandle(Request, Response)
method to continue with theafterHandle(Request, Response)
method.- See Also:
- Constant Field Values
-
STOP
public static final int STOP
Indicates that the request processing should stop and return the current response from the filter.- See Also:
- Constant Field Values
-
-
Method Detail
-
afterHandle
protected void afterHandle(Request request, Response response)
Allows filtering after processing by the next Restlet. Does nothing by default.- Parameters:
request
- The request to handle.response
- The response to update.
-
beforeHandle
protected int beforeHandle(Request request, Response response)
Allows filtering before processing by the next Restlet. ReturnsCONTINUE
by default.
-
doHandle
protected int doHandle(Request request, Response response)
Handles the call by distributing it to the next Restlet. If no Restlet is attached, then aStatus.SERVER_ERROR_INTERNAL
status is returned. ReturnsCONTINUE
by default.
-
getNext
public Restlet getNext()
Returns the next Restlet.- Returns:
- The next Restlet or null.
-
handle
public final void handle(Request request, Response response)
Handles a call by first invoking the beforeHandle() method for pre-filtering, then distributing the call to the next Restlet via the doHandle() method. When the handling is completed, it finally invokes the afterHandle() method for post-filtering.
-
hasNext
public boolean hasNext()
Indicates if there is a next Restlet.- Returns:
- True if there is a next Restlet.
-
setNext
public void setNext(java.lang.Class<? extends ServerResource> targetClass)
Sets the nextRestlet
as aFinder
for a givenServerResource
class. When the call is delegated to theFinder
instance, a new instance of the resource class will be created and will actually handle the request.- Parameters:
targetClass
- The target resource class to attach.
-
setNext
public void setNext(Restlet next)
Sets the next Restlet. In addition, this method will set the context of the next Restlet if it is null by passing a reference to its own context.- Parameters:
next
- The next Restlet.
-
start
public void start() throws java.lang.Exception
Starts the filter and the next Restlet if attached.
-
-