use of org.apache.nifi.toolkit.cli.api.CommandException in project nifi by apache.
the class UpdateRegistryClient method doExecute.
@Override
public VoidResult doExecute(final NiFiClient client, final Properties properties) throws NiFiClientException, IOException, MissingOptionException, CommandException {
final ControllerClient controllerClient = client.getControllerClient();
final String id = getRequiredArg(properties, CommandOption.REGISTRY_CLIENT_ID);
final RegistryClientEntity existingRegClient = controllerClient.getRegistryClient(id);
if (existingRegClient == null) {
throw new CommandException("Registry client does not exist for id " + id);
}
final String name = getArg(properties, CommandOption.REGISTRY_CLIENT_NAME);
final String url = getArg(properties, CommandOption.REGISTRY_CLIENT_URL);
final String desc = getArg(properties, CommandOption.REGISTRY_CLIENT_DESC);
if (StringUtils.isBlank(name) && StringUtils.isBlank(url) && StringUtils.isBlank(desc)) {
throw new CommandException("Name, url, and desc were all blank, nothing to update");
}
if (StringUtils.isNotBlank(name)) {
existingRegClient.getComponent().setName(name);
}
if (StringUtils.isNotBlank(url)) {
existingRegClient.getComponent().setUri(url);
}
if (StringUtils.isNotBlank(desc)) {
existingRegClient.getComponent().setDescription(desc);
}
final String clientId = getContext().getSession().getNiFiClientID();
existingRegClient.getRevision().setClientId(clientId);
controllerClient.updateRegistryClient(existingRegClient);
return VoidResult.getInstance();
}
use of org.apache.nifi.toolkit.cli.api.CommandException 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