in gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java [267:335]
protected CommandResult executeAction(final ShellContext context, final Object[] args) {
assert context != null;
assert args != null;
final IO io = context.getIo();
log.trace("Executing action");
// Setup the command context
CommandContext ctx = new CommandContext() {
private final Variables variables = new Variables(context.getVariables());
public Object[] getArguments() {
return args;
}
public IO getIo() {
return io;
}
public Variables getVariables() {
return variables;
}
public Command getCommand() {
return CommandSupport.this;
}
};
CommandResult result;
try {
CommandAction action = getAction();
log.trace("Executing action: {}", action);
Object value = action.execute(ctx);
log.trace("Result: {}", value);
context.getVariables().set("gshell.result", value);
result = new CommandResult.ValueResult(value);
}
catch (final ResultNotification n) {
log.trace("Command notified result: " + n, n);
if (n.getResult() == CommandAction.Result.FAILURE) {
io.error(n.getMessage());
}
else {
io.verbose(n.getMessage());
}
result = new CommandResult.ValueResult(n.getResult());
}
catch (final Notification n) {
log.trace("Notified: " + n, n);
result = new CommandResult.NotificationResult(n);
}
catch (final Throwable t) {
log.trace("Caught: " + t, t);
result = new CommandResult.FailureResult(t);
}
return result;
}