Class AbstractCLI

    • Field Detail

      • log

        protected final org.apache.commons.logging.Log log
      • FAILURE_FROM_ERROR_OBJECTS

        protected static final int FAILURE_FROM_ERROR_OBJECTS
        Exit code used for a successful doWork execution that resulted in failed error objects.
        See Also:
        Constant Field Values
    • Constructor Detail

      • AbstractCLI

        public AbstractCLI()
    • Method Detail

      • getCommandName

        public String getCommandName()
        Description copied from interface: CLI
        A short memorable name for the command that can be used to locate this class.
        Specified by:
        getCommandName in interface CLI
        Returns:
        name; if null or blank, this will not be available as a shortcut command.
      • getCommandAliases

        public List<String> getCommandAliases()
        Description copied from interface: CLI
        A list of aliases for the command that can be used to locate this class.
        Specified by:
        getCommandAliases in interface CLI
      • getShortDesc

        public String getShortDesc()
        Description copied from interface: CLI
        Obtain a short description for this command explaining what it does.
        Specified by:
        getShortDesc in interface CLI
      • getCommandGroup

        public CLI.CommandGroup getCommandGroup()
        Description copied from interface: CLI
        Obtain the command group for this CLI.
        Specified by:
        getCommandGroup in interface CLI
      • getOptions

        public org.apache.commons.cli.Options getOptions()
        Description copied from interface: CLI
        Obtain the options for the CLI.
        Specified by:
        getOptions in interface CLI
      • allowPositionalArguments

        public boolean allowPositionalArguments()
        Description copied from interface: CLI
        Indicate if this CLI allows positional arguments.
        Specified by:
        allowPositionalArguments in interface CLI
      • executeCommand

        public final int executeCommand​(CliContext cliContext)
        Execute the given command given CLI arguments.

        Parse and process CLI arguments, invoke the command doWork() implementation, and print basic statistics about time usage.

        Any exception raised by doWork results in a value of FAILURE, and any error set in the internal error objects will result in a value of FAILURE_FROM_ERROR_OBJECTS.

        Specified by:
        executeCommand in interface CLI
        Returns:
        an exit code
      • getApplicationContext

        public final org.springframework.context.ApplicationContext getApplicationContext()
        Obtain the application context.

        Beans in a CLI context are usually lazily-initialized as using LazyInitByDefaultPostProcessor, so using the context to create beans ensures that only the necessary beans are created.

      • setApplicationContext

        public final void setApplicationContext​(org.springframework.context.ApplicationContext applicationContext)
        Specified by:
        setApplicationContext in interface org.springframework.context.ApplicationContextAware
      • getUsage

        protected String getUsage()
        Describe the intended usage for the command.

        This will be included in the 'Usage: ...' error message when the CLI is misused.

      • addThreadsOption

        protected final void addThreadsOption​(org.apache.commons.cli.Options options)
        Add the -threads option.

        This is used to configure the internal batch processing thread pool which can be used with getBatchTaskExecutor().

        You may also use getNumThreads() to retrieve the number of threads to use.

      • addBatchOption

        protected final void addBatchOption​(org.apache.commons.cli.Options options)
        Add the -batchFormat and -batchOutputFile options.

        These options allow the user to control how and where batch processing results are summarized.

      • setAllowPositionalArguments

        protected final void setAllowPositionalArguments()
        Allow positional arguments to be specified. The default is false and an error will be produced if positional arguments are supplied by the user.

        Those arguments can be retrieved in processOptions(CommandLine) by using CommandLine.getArgList().

      • getNumThreads

        protected final int getNumThreads()
      • buildOptions

        protected void buildOptions​(org.apache.commons.cli.Options options)
        Build option implementation.

        Implement this method to add options to your command line, using the OptionBuilder.

        This is called right after buildStandardOptions(Options) so the options will be added after standard options.

      • processOptions

        protected void processOptions​(org.apache.commons.cli.CommandLine commandLine)
                               throws org.apache.commons.cli.ParseException
        Process command line options.

        Implement this to provide processing of options. It is called after buildOptions(Options) and right before doWork().

        Throws:
        org.apache.commons.cli.ParseException - in case of unrecoverable failure (i.e. missing option or invalid value), an exception can be raised and will result in an exit code of FAILURE.
      • promptConfirmationOrAbort

        protected final void promptConfirmationOrAbort​(String confirmationMessage)
                                                throws Exception
        Prompt the user for a confirmation or raise an exception to abort the doWork() method.
        Throws:
        Exception
      • abort

        protected final void abort​(String message)
                            throws Exception
        Abort the execution of the CLI with the given message.

        The CLI will exit with the ABORTED exit code as a result.

        Throws:
        Exception
      • addSuccessObject

        protected final void addSuccessObject​(Serializable successObject,
                                              String message)
        Add a success object to indicate success in a batch processing.
        Parameters:
        successObject - object that was processed
        message - success message
      • addWarningObject

        protected final void addWarningObject​(@Nullable
                                              Serializable warningObject,
                                              String message,
                                              Throwable throwable)
        Add a warning object with a stacktrace to indicate a recoverable failure in a batch processing.
        Parameters:
        warningObject - that was processed
        message - error message
        throwable - throwable to produce a stacktrace
      • addErrorObject

        protected final void addErrorObject​(@Nullable
                                            Serializable errorObject,
                                            String message,
                                            Throwable throwable)
        Add an error object with a stacktrace to indicate failure in a batch processing.

        This is intended to be used when an Exception is caught.

        Parameters:
        errorObject - object that was processed
        message - error message
        throwable - throwable to produce a stacktrace
      • createBatchTaskExecutorService

        protected ExecutorService createBatchTaskExecutorService()
        Create an ExecutorService to be used for running batch tasks.
      • setReportFrequencyMillis

        protected void setReportFrequencyMillis​(int reportFrequencyMillis)
        Set the frequency at which the batch task executor should report progress.

        The default is to report progress every 30 seconds. It may be overwritten by the -batchReportFrequency option.

      • setEstimatedMaxTasks

        protected void setEstimatedMaxTasks​(int estimatedMaxTasks)
        Set the estimated maximum number of batch tasks to be processed.
      • awaitBatchExecutorService

        protected final void awaitBatchExecutorService()
                                                throws InterruptedException
        Await the completion of all batch tasks.

        The batch task executor will be shutdown, preventing any new tasks from being submitted.

        Throws:
        InterruptedException