* strategy.
*/
public Serializable execute(final TaskHandlerActionContext< ? extends ActionContext> inActionContext,
final Serializable params) throws ExecutionException
{
ActionContext inInnerContext = inActionContext.getActionContext();
boolean hasPrincipalContext = inInnerContext instanceof PrincipalActionContext;
if (needsPrincipal && !hasPrincipalContext)
{
throw new ExecutionException("Incorrect action execution invocation. "
+ "Execution requires principal but none was provided on call.");
}
ActionContext innerContext = hasPrincipalContext ? new ServiceActionContext(params,
((PrincipalActionContext) inInnerContext).getPrincipal()) : new AsyncActionContext(params);
if (taskHandlerExecution != null)
{
TaskHandlerActionContext outerContext = new TaskHandlerActionContextImpl<ActionContext>(innerContext,