Implements: ICommand
Description
The InterceptedCommand allows you to implement a command wrapped by an interceptor. Thus, it allows you to build command call chains, where the interceptor can alter execution and delegate calls to a next command, which can then be intercepted or not.
Constructors
Creates a new InterceptedCommand, which serves as a link in an execution chain. Contains information about the interceptor that is being used and the next command in the chain.
public
InterceptedCommand(ICommandInterceptor interceptor, ICommand next)
- interceptor: ICommandInterceptor - interceptor that is intercepting the command.
- next: ICommand - (link to) the next command in the command’s execution chain.
Instance methods
execute
Executes the next command in the execution chain using the given parameters (arguments).
See Parameters
public
Object execute(IContext context, Parameters args) throws ApplicationException
- context: IContext - a context to trace execution through a call chain.
- args: Parameters - parameters (arguments) to pass to the command for execution.
- returns: Object - execution result
getName
Returns a string with the name of the command that is being intercepted.
public
String getName()
- returns: String - name of the command that is being intercepted.
validate
Validates the parameters (arguments) that are to be passed to the command that is next
in the execution chain.
See Parameters, ValidationResult
public
List<ValidationResult> validate(Parameters args)
- args: Parameters - parameters (arguments) to validate for the next command.
- returns: List<ValidationResult> - array of ValidationResults.
Examples
{
public class CommandLogger implements ICommandInterceptor {
public String getName(ICommand command) {
return command.getName();
}
public Object execute(IContext context, ICommand command, Parameters args) {
System.out.println("Executed command " + command.getName());
return command.execute(context, args);
}
private List<ValidationResult> validate(ICommand command, Parameters args) {
return command.validate(args);
}
}
CommandLogger logger = new CommandLogger();
InterceptedCommand loggedCommand = new InterceptedCommand(logger, command);
// Each called command will output: Executed command <command name>
}