Class Finder

java.lang.Object
org.restlet.Restlet
org.restlet.resource.Finder
All Implemented Interfaces:
Uniform
Direct Known Subclasses:
Directory

public class Finder extends Restlet
Restlet that can find the target server resource that will effectively handle incoming calls. By default, based on a given ServerResource subclass available via the getTargetClass() method, it automatically instantiates for each incoming call the target resource class using its default constructor and invoking the Resource.init(Context, Request, Response) method.

Once the target has been created, the call is automatically dispatched to the ServerResource.handle() method.

Once the call is handled, the Resource.release() method is invoked to permit clean-up actions.

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
  • Constructor Details

    • Finder

      public Finder()
      Constructor.
    • Finder

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

      public Finder(Context context, Class<? extends ServerResource> targetClass)
      Constructor.
      Parameters:
      context - The context.
      targetClass - The target ServerResource subclass.
  • Method Details

    • createFinder

      public static Finder createFinder(Class<? extends ServerResource> targetClass, Class<? extends Finder> finderClass, Context context, Logger logger)
      Creates a new finder instance based on the "targetClass" property.
      Parameters:
      targetClass - The target Resource class to attach.
      finderClass - The optional finder class to instantiate.
      context - The current Context.
      logger - The logger.
      Returns:
      The new finder instance.
    • create

      public ServerResource create(Class<? extends ServerResource> targetClass, Request request, Response response)
      Creates a new instance of a given ServerResource subclass. Note that Error and RuntimeException thrown by ServerResource constructors are re-thrown by this method. Other exception are caught and logged.
      Parameters:
      targetClass - The target ServerResource subclass.
      request - The request to handle.
      response - The response to update.
      Returns:
      The created resource or null.
    • create

      public ServerResource create(Request request, Response response)
      Creates a new instance of the ServerResource subclass designated by the "targetClass" property. The default behavior is to invoke the create(Class, Request, Response) with the "targetClass" property as a parameter.
      Parameters:
      request - The request to handle.
      response - The response to update.
      Returns:
      The created resource or null.
    • find

      public ServerResource find(Request request, Response response)
      Finds the target ServerResource if available. The default behavior is to invoke the create(Request, Response) method.
      Parameters:
      request - The request to handle.
      response - The response to update.
      Returns:
      The target resource if available or null.
    • getTargetClass

      public Class<? extends ServerResource> getTargetClass()
      Returns the target resource class which must be either a subclass of ServerResource.
      Returns:
      the target Handler class.
    • handle

      public void handle(Request request, Response response)
      Handles a call.
      Specified by:
      handle in interface Uniform
      Overrides:
      handle in class Restlet
      Parameters:
      request - The request to handle.
      response - The response to update.
    • setTargetClass

      public void setTargetClass(Class<? extends ServerResource> targetClass)
      Sets the target resource class which must be a subclass of ServerResource.
      Parameters:
      targetClass - The target resource class. It must be a subclass of ServerResource.
    • toString

      public String toString()
      Overrides:
      toString in class Object