org.apache.commons.chain.generic
Class DispatchLookupCommand

java.lang.Object
  extended by org.apache.commons.chain.generic.LookupCommand
      extended by org.apache.commons.chain.generic.DispatchLookupCommand
All Implemented Interfaces:
Command, Filter

public class DispatchLookupCommand
extends LookupCommand
implements Filter

This command combines elements of the LookupCommand with the DispatchCommand. Look up a specified Command (which could also be a Chain) in a Catalog, and delegate execution to it. Introspection is used to lookup the appropriate method to delegate execution to. If the delegated-to Command is also a Filter, its postprocess() method will also be invoked at the appropriate time.

The name of the Command can be specified either directly (via the name property) or indirectly (via the nameKey property). Exactly one of these must be set.

The name of the method to be called can be specified either directly (via the method property) or indirectly (via the methodKey property). Exactly one of these must be set.

If the optional property is set to true, failure to find the specified command in the specified catalog will be silently ignored. Otherwise, a lookup failure will trigger an IllegalArgumentException.

Since:
Chain 1.1
Version:
$Revision: 480477 $
Author:
Sean Schofield

Field Summary
 
Fields inherited from interface org.apache.commons.chain.Command
CONTINUE_PROCESSING, PROCESSING_COMPLETE
 
Constructor Summary
DispatchLookupCommand()
          Create an instance with an unspecified catalogFactory property.
DispatchLookupCommand(CatalogFactory factory)
          Create an instance and initialize the catalogFactory property to given factory.
 
Method Summary
 boolean execute(Context context)
          Look up the specified command, and (if found) execute it.
protected  Object[] getArguments(Context context)
          Get the arguments to be passed into the dispatch method.
 String getMethod()
          Return the method name.
 String getMethodKey()
          Return the Context key for the method name.
protected  Class[] getSignature()
          Return a Class[] describing the expected signature of the method.
 void setMethod(String method)
          Set the method name.
 void setMethodKey(String methodKey)
          Set the Context key for the method name.
 
Methods inherited from class org.apache.commons.chain.generic.LookupCommand
getCatalog, getCatalogFactory, getCatalogName, getCommand, getCommandName, getName, getNameKey, isIgnoreExecuteResult, isIgnorePostprocessResult, isOptional, postprocess, setCatalogFactory, setCatalogName, setIgnoreExecuteResult, setIgnorePostprocessResult, setName, setNameKey, setOptional
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.chain.Filter
postprocess
 

Constructor Detail

DispatchLookupCommand

public DispatchLookupCommand()
Create an instance with an unspecified catalogFactory property. This property can be set later using setProperty, or if it is not set, the static singleton instance from CatalogFactory.getInstance() will be used.


DispatchLookupCommand

public DispatchLookupCommand(CatalogFactory factory)
Create an instance and initialize the catalogFactory property to given factory.

Parameters:
factory - The Catalog Factory.
Method Detail

getMethod

public String getMethod()
Return the method name.

Returns:
The method name.

getMethodKey

public String getMethodKey()
Return the Context key for the method name.

Returns:
The Context key for the method name.

setMethod

public void setMethod(String method)
Set the method name.

Parameters:
method - The method name.

setMethodKey

public void setMethodKey(String methodKey)
Set the Context key for the method name.

Parameters:
methodKey - The Context key for the method name.

execute

public boolean execute(Context context)
                throws Exception

Look up the specified command, and (if found) execute it.

Specified by:
execute in interface Command
Overrides:
execute in class LookupCommand
Parameters:
context - The context for this request
Returns:
the result of executing the looked-up command's method, or false if no command is found.
Throws:
Exception - if no such Command can be found and the optional property is set to false

getSignature

protected Class[] getSignature()

Return a Class[] describing the expected signature of the method. The default is a signature that just accepts the command's Context. The method can be overidden to provide a different method signature.

Returns:
the expected method signature

getArguments

protected Object[] getArguments(Context context)
Get the arguments to be passed into the dispatch method. Default implementation simply returns the context which was passed in, but subclasses could use this to wrap the context in some other type, or extract key values from the context to pass in. The length and types of values returned by this must coordinate with the return value of getSignature()

Parameters:
context - The context associated with the request
Returns:
the method arguments to be used


Copyright 2003-2008 The Apache Software Foundation. All Rights Reserved.