public static class CommandLine.RunLast extends java.lang.Object implements CommandLine.IParseResultHandler
Runnable or Callable subcommand.
For use in the parseWithHandler methods.
Something like this:
// RunLast implementation: print help if requested, otherwise execute the most specific subcommand
if (CommandLine.printHelpIfRequested(parsedCommands, System.err, Help.Ansi.AUTO)) {
return emptyList();
}
CommandLine last = parsedCommands.get(parsedCommands.size() - 1);
Object command = last.getCommand();
if (command instanceof Runnable) {
try {
((Runnable) command).run();
} catch (Exception ex) {
throw new ExecutionException(last, "Error in runnable " + command, ex);
}
} else if (command instanceof Callable) {
Object result;
try {
result = ((Callable) command).call();
} catch (Exception ex) {
throw new ExecutionException(last, "Error in callable " + command, ex);
}
// ...do something with result
} else {
throw new ExecutionException(last, "Parsed command (" + command + ") is not Runnable or Callable");
}
| Constructor and Description |
|---|
CommandLine.RunLast() |
| Modifier and Type | Method and Description |
|---|---|
java.util.List<java.lang.Object> |
handleParseResult(java.util.List<CommandLine> parsedCommands,
java.io.PrintStream out,
CommandLine.Help.Ansi ansi)
Prints help if requested, and otherwise executes the most specific
Runnable or Callable subcommand. |
public java.util.List<java.lang.Object> handleParseResult(java.util.List<CommandLine> parsedCommands, java.io.PrintStream out, CommandLine.Help.Ansi ansi)
Runnable or Callable subcommand.
If the last (sub)command does not implement either Runnable or Callable, a ExecutionException
is thrown detailing the problem and capturing the offending CommandLine object.handleParseResult in interface CommandLine.IParseResultHandlerparsedCommands - the CommandLine objects that resulted from successfully parsing the command line argumentsout - the PrintStream to print help to if requestedansi - for printing help messages using ANSI styles and colorsCallable, or a null element if the last (sub)command was a RunnableCommandLine.ExecutionException - if a problem occurred while processing the parse results; use
CommandLine.ExecutionException.getCommandLine() to get the command or subcommand where processing failed