Search in sources :

Example 1 with AbstractDevice

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());
}
Also used : PrintStream(java.io.PrintStream) ByteArrayInputStream(java.io.ByteArrayInputStream) JLineDevice(org.ow2.proactive_grid_cloud_portal.cli.console.JLineDevice) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) AbstractDevice(org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice)

Example 2 with AbstractDevice

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;
}
Also used : Options(org.apache.commons.cli.Options) IOException(java.io.IOException) CommandLine(org.apache.commons.cli.CommandLine) Command(org.ow2.proactive_grid_cloud_portal.cli.cmd.Command) AbstractLoginCommand(org.ow2.proactive_grid_cloud_portal.cli.cmd.AbstractLoginCommand) AbstractDevice(org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice) Option(org.apache.commons.cli.Option) ParseException(org.apache.commons.cli.ParseException) ObjectMapper(org.codehaus.jackson.map.ObjectMapper)

Example 3 with AbstractDevice

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;
}
Also used : JLineDevice(org.ow2.proactive_grid_cloud_portal.cli.console.JLineDevice) AbstractDevice(org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice)

Aggregations

AbstractDevice (org.ow2.proactive_grid_cloud_portal.cli.console.AbstractDevice)3 JLineDevice (org.ow2.proactive_grid_cloud_portal.cli.console.JLineDevice)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 PrintStream (java.io.PrintStream)1 CommandLine (org.apache.commons.cli.CommandLine)1 Option (org.apache.commons.cli.Option)1 Options (org.apache.commons.cli.Options)1 ParseException (org.apache.commons.cli.ParseException)1 ObjectMapper (org.codehaus.jackson.map.ObjectMapper)1 AbstractLoginCommand (org.ow2.proactive_grid_cloud_portal.cli.cmd.AbstractLoginCommand)1 Command (org.ow2.proactive_grid_cloud_portal.cli.cmd.Command)1