org.restlet.resource
Class Finder

java.lang.Object
  extended by org.restlet.Restlet
      extended by 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 Summary
Finder()
          Constructor.
Finder(Context context)
          Constructor.
Finder(Context context, Class<? extends ServerResource> targetClass)
          Constructor.
 
Method Summary
 ServerResource create(Class<? extends ServerResource> targetClass, Request request, Response response)
          Creates a new instance of a given ServerResource subclass.
 ServerResource create(Request request, Response response)
          Creates a new instance of the ServerResource subclass designated by the "targetClass" property.
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.
 ServerResource find(Request request, Response response)
          Finds the target ServerResource if available.
 Class<? extends ServerResource> getTargetClass()
          Returns the target resource class which must be either a subclass of ServerResource.
 void handle(Request request, Response response)
          Handles a call.
 void setTargetClass(Class<? extends ServerResource> targetClass)
          Sets the target resource class which must be a subclass of ServerResource.
 String toString()
           
 
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, wait, wait, wait
 

Constructor Detail

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 Detail

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.
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:
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


Copyright © 2005-2013 Restlet.