Package org.apache.commons.chain.generic
Class DispatchCommand
java.lang.Object
org.apache.commons.chain.generic.DispatchCommand
- All Implemented Interfaces:
Command
An abstract base command which uses introspection to look up a method to execute.
For use by developers who prefer to group related functionality into a single class
rather than an inheritance family.
- Since:
- Chain 1.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Class[]
The base implementation expects dispatch methods to take aContext
as their only argument.private String
Method nameprivate String
Method keyprivate Map
Cache of methodsFields inherited from interface org.apache.commons.chain.Command
CONTINUE_PROCESSING, PROCESSING_COMPLETE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Evaluate the result of the method invocation as a boolean value.boolean
Look up the method specified by either "method" or "methodKey" and invoke it, returning a boolean value as interpreted byevaluateResult
.protected Method
extractMethod
(Context context) Extract the dispatch method.protected Object[]
getArguments
(Context context) Get the arguments to be passed into the dispatch method.Return the method name.Return the Context key for the method name.protected Class[]
Return aClass[]
describing the expected signature of the method.void
Set the method name.void
setMethodKey
(String methodKey) Set the Context key for the method name.
-
Field Details
-
methods
Cache of methods -
method
Method name -
methodKey
Method key -
DEFAULT_SIGNATURE
The base implementation expects dispatch methods to take aContext
as their only argument.
-
-
Constructor Details
-
DispatchCommand
public DispatchCommand()
-
-
Method Details
-
execute
Look up the method specified by either "method" or "methodKey" and invoke it, returning a boolean value as interpreted byevaluateResult
.- Specified by:
execute
in interfaceCommand
- Parameters:
context
- The Context to be processed by this Command.- Returns:
- the result of method being dispatched to.
- Throws:
IllegalStateException
- if neither 'method' nor 'methodKey' properties are definedException
- if any is thrown by the invocation. Note that if invoking the method results in an InvocationTargetException, the cause of that exception is thrown instead of the exception itself, unless the cause is anError
or otherThrowable
which is not anException
.
-
extractMethod
Extract the dispatch method. The base implementation uses the command'smethod
property as the name of a method to look up, or, if that is not defined, looks up the the method name in the Context using themethodKey
.- Parameters:
context
- The Context being processed by this Command.- Returns:
- The method to execute
- Throws:
NoSuchMethodException
- if no method can be found under the specified name.NullPointerException
- if no methodName cannot be determined
-
evaluateResult
Evaluate the result of the method invocation as a boolean value. Base implementation expects that the invoked method returns boolean true/false, but subclasses might implement other interpretations.- Parameters:
o
- The result of the methid execution- Returns:
- The evaluated result/
-
getSignature
Return aClass[]
describing the expected signature of the method.- Returns:
- The method signature.
-
getArguments
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 ofgetSignature()
- Parameters:
context
- The Context being processed by this Command.- Returns:
- The method arguments.
-
getMethod
Return the method name.- Returns:
- The method name.
-
getMethodKey
Return the Context key for the method name.- Returns:
- The Context key for the method name.
-
setMethod
Set the method name.- Parameters:
method
- The method name.
-
setMethodKey
Set the Context key for the method name.- Parameters:
methodKey
- The Context key for the method name.
-