use of org.apache.nifi.toolkit.cli.api.Referenceable in project nifi by apache.
the class CommandProcessor method processCommand.
// visible for testing
int processCommand(final String[] args, final Command command) throws ParseException {
final CommandLine commandLine = parseCli(command, args);
if (commandLine == null) {
out.println("Unable to parse command line");
return -1;
}
try {
if (args.length == 1 && CommandOption.HELP.getLongName().equalsIgnoreCase(args[0])) {
command.printUsage(null);
} else {
final Result result = command.execute(commandLine);
if (result instanceof WritableResult) {
final WritableResult writableResult = (WritableResult) result;
writableResult.write(out);
}
// if the Result is Referenceable then create the resolver and store it in the holder for the next command
if (result instanceof Referenceable) {
final Referenceable referenceable = (Referenceable) result;
final ReferenceResolver referenceResolver = referenceable.createReferenceResolver(context);
// and can be used again if the current command didn't produce anything to resolve
if (!referenceResolver.isEmpty()) {
backReferenceHolder.set(referenceResolver);
}
}
}
return 0;
} catch (Exception e) {
// so for those we don't need to print the usage every time
if (e instanceof CommandException) {
out.println();
out.println("ERROR: " + e.getMessage());
out.println();
} else {
command.printUsage(e.getMessage());
}
if (commandLine.hasOption(CommandOption.VERBOSE.getLongName())) {
out.println();
e.printStackTrace(out);
out.println();
}
return -1;
}
}
Aggregations