Class Filter

java.lang.Object
org.restlet.Restlet
org.restlet.routing.Filter
All Implemented Interfaces:
Uniform
Direct Known Subclasses:
Authenticator, Authorizer, CorsFilter, Decoder, Encoder, Extractor, LogFilter, RangeFilter, Route, StatusFilter, TemplateDispatcher, TunnelFilter, 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 Details

  • Constructor Details

    • Filter

      public Filter()
      Constructor.
    • Filter

      public Filter(Context context)
      Constructor.
      Parameters:
      context - The context.
    • Filter

      public Filter(Context context, Restlet next)
      Constructor.
      Parameters:
      context - The context.
      next - The next Restlet.
  • Method Details

    • 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. Returns CONTINUE by default.
      Parameters:
      request - The request to handle.
      response - The response to update.
      Returns:
      The continuation status. Either CONTINUE or SKIP or STOP.
    • doHandle

      protected int doHandle(Request request, Response response)
      Handles the call by distributing it to the next Restlet. If no Restlet is attached, then a Status.SERVER_ERROR_INTERNAL status is returned. Returns CONTINUE by default.
      Parameters:
      request - The request to handle.
      response - The response to update.
      Returns:
      The continuation status. Either CONTINUE or STOP.
    • 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.
      Specified by:
      handle in interface Uniform
      Overrides:
      handle in class Restlet
      Parameters:
      request - The request to handle.
      response - The response to update.
    • hasNext

      public boolean hasNext()
      Indicates if there is a next Restlet.
      Returns:
      True if there is a next Restlet.
    • setNext

      public void setNext(Class<? extends ServerResource> targetClass)
      Sets the next Restlet as a Finder for a given ServerResource class. When the call is delegated to the Finder 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 Exception
      Starts the filter and the next Restlet if attached.
      Overrides:
      start in class Restlet
      Throws:
      Exception
    • stop

      public void stop() throws Exception
      Stops the filter and the next Restlet if attached.
      Overrides:
      stop in class Restlet
      Throws:
      Exception