public static class CommandLine.RunLast extends 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 |
|---|
RunLast() |
| Modifier and Type | Method and Description |
|---|---|
List<Object> |
handleParseResult(List<CommandLine> parsedCommands,
PrintStream out,
CommandLine.Help.Ansi ansi)
Prints help if requested, and otherwise executes the most specific
Runnable or Callable subcommand. |
public RunLast()
public List<Object> handleParseResult(List<CommandLine> parsedCommands, 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 failedCopyright © 1999-2021 The Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.