use of org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice in project scheduling by ow2-proactive.
the class AbstractSchedulerCommandTest method configureDevice.
protected void configureDevice() throws IOException {
InputStream in = new ByteArrayInputStream(userInput.toString().getBytes());
PrintStream out = new PrintStream(capturedOutput);
AbstractDevice device = new JLineDevice(in, out);
when(context.getDevice()).thenReturn(device);
this.engine.getContext().setWriter(device.getWriter());
}
use of org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice in project scheduling by ow2-proactive.
the class EntryPoint method run.
protected int run(String... args) {
CommandFactory commandFactory = null;
CommandLine cli = null;
AbstractDevice console;
ApplicationContext currentContext = new ApplicationContextImpl().currentContext();
// Cannot rely on AbstractCommand#isDebugModeEnabled
// because at this step SetDebugModeCommand#execute has not yet been executed
// Consequently, SetDebugModeCommand.PROP_DEBUG_MODE is not set even if debug mode is enabled.
boolean isDebugModeEnabled = isDebugModeEnabled(args);
try {
commandFactory = getCommandFactory(currentContext);
Options options = commandFactory.supportedOptions();
cli = parseArgs(options, args);
} catch (IOException ioe) {
System.err.println("An error occurred.");
ioe.printStackTrace(System.err);
return 1;
} catch (ParseException pe) {
writeError(currentContext, pe.getMessage(), pe, isDebugModeEnabled);
// print usage
Command help = commandFactory.commandForOption(new Option("h", null));
if (help != null) {
help.execute(currentContext);
}
return 1;
}
currentContext.setObjectMapper(new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false));
currentContext.setRestServerUrl(DFLT_REST_SCHEDULER_URL);
currentContext.setResourceType(resourceType());
// retrieve the (ordered) command list corresponding to command-line
// arguments
List<Command> commands;
try {
commands = commandFactory.getCommandList(cli, currentContext);
} catch (CLIException e) {
writeError(currentContext, "An error occurred.", e, isDebugModeEnabled);
return 1;
}
boolean retryLogin = false;
try {
executeCommandList(commands, currentContext);
} catch (CLIException error) {
if (REASON_UNAUTHORIZED_ACCESS == error.reason() && hasLoginCommand(commands)) {
retryLogin = true;
} else {
writeError(currentContext, "An error occurred.", error, isDebugModeEnabled);
return 1;
}
} catch (Throwable e) {
writeError(currentContext, "An error occurred.", e, isDebugModeEnabled);
return 1;
}
/*
* in case of an existing session-id, the REST CLI reuses it without
* obtaining a new session-id even if a login with credentials
* specified. However if the REST server responds with an authorization
* error (e.g. due to session timeout), it re-executes the commands list
* with AbstractLoginCommand.PROP_RENEW_SESSION property set to 'true'.
* This will effectively re-execute the user command with a new
* session-id from server.
*/
if (retryLogin && currentContext.getProperty(PROP_PERSISTED_SESSION, Boolean.TYPE, false)) {
try {
currentContext.setProperty(PROP_RENEW_SESSION, true);
executeCommandList(commands, currentContext);
} catch (Throwable error) {
writeError(currentContext, "An error occurred while execution.", error, isDebugModeEnabled);
return 1;
}
}
return 0;
}
use of org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice in project scheduling by ow2-proactive.
the class EntryPoint method getCommandFactory.
protected static CommandFactory getCommandFactory(ApplicationContext currentContext) throws IOException {
CommandFactory commandFactory;
AbstractDevice console;
commandFactory = getCommandFactory();
console = AbstractDevice.getConsole(AbstractDevice.JLINE);
((JLineDevice) console).setCommands(ObjectArrays.concat(commandFactory.supportedCommandEntries(), CommandSet.INTERACTIVE_COMMANDS, CommandSet.Entry.class));
currentContext.setDevice(console);
return commandFactory;
}
Aggregations