Class 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 Detail

      • Finder

        public Finder()
        Constructor.
      • Finder

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

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

      • createFinder

        public static Finder createFinder​(java.lang.Class<? extends ServerResource> targetClass,
                                          java.lang.Class<? extends Finder> finderClass,
                                          Context context,
                                          java.util.logging.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​(java.lang.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.
      • getTargetClass

        public java.lang.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​(java.lang.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object