Class Commandline

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class Commandline
    extends java.lang.Object
    implements java.lang.Cloneable

    Commandline objects help handling command lines specifying processes to execute.

    The class can be used to define a command line as nested elements or as a helper to define a command line by an application.

    <someelement>
      <acommandline executable="/executable/to/run">
        <argument value="argument 1" />
        <argument line="argument_1 argument_2 argument_3" />
        <argument value="argument 4" />
      </acommandline>
    </someelement>

    The element someelement must provide a method createAcommandline which returns an instance of this class.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  Commandline.Argument
      A single command line argument
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<Arg> arguments  
      private java.util.Map<java.lang.String,​java.lang.String> envVars  
      private Shell shell  
    • Constructor Summary

      Constructors 
      Constructor Description
      Commandline()
      Create a new command line object.
      Commandline​(java.lang.String toProcess)
      Create a new command line object.
      Commandline​(Shell shell)
      Create a new command line object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addArguments​(java.lang.String... line)  
      void addEnvironment​(java.lang.String name, java.lang.String value)
      Add an environment variable.
      void addSystemEnvironment()
      Add system environment variables.
      void clearArgs()
      Clear out the arguments but leave the executable in place for another operation.
      java.lang.Object clone()
      Arg createArg()
      Creates an empty argument object and inserts it at the end of the argument list.
      Arg createArg​(boolean insertAtStart)
      Creates an argument object and adds it to the list of args.
      java.lang.Process execute()
      Execute the command.
      java.lang.String[] getArguments()
      Returns all arguments defined by addLine, addValue or the argument object.
      java.lang.String[] getArguments​(boolean mask)
      Returns all arguments defined by addLine, addValue, or the argument object.
      java.lang.String[] getCommandline()
      Returns the executable and all defined arguments.
      java.lang.String[] getEnvironmentVariables()
      Return the list of environment variables.
      java.lang.String getExecutable()  
      Shell getShell()
      Get the shell to be used in this command line.
      private java.lang.String[] getShellCommandline()  
      private java.lang.String[] getShellCommandline​(boolean mask)  
      java.io.File getWorkingDirectory()  
      private void setDefaultShell()
      Sets the shell or command-line interpreter for the detected operating system, and the shell arguments.
      void setExecutable​(java.lang.String executable)
      Sets the executable to run.
      (package private) void setShell​(Shell shell)
      Set the shell to be used for this command line.
      void setWorkingDirectory​(java.io.File workingDirectory)
      Sets working directory.
      void setWorkingDirectory​(java.lang.String path)
      Sets working directory.
      java.lang.String toString()
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • arguments

        private final java.util.List<Arg> arguments
      • envVars

        private final java.util.Map<java.lang.String,​java.lang.String> envVars
      • shell

        private Shell shell
    • Constructor Detail

      • Commandline

        public Commandline​(Shell shell)
        Create a new command line object. Shell is autodetected from operating system.
        Parameters:
        shell - the shell instance
      • Commandline

        public Commandline​(java.lang.String toProcess)
                    throws CommandLineException
        Create a new command line object. Shell is autodetected from operating system.
        Parameters:
        toProcess - the command to process
        Throws:
        CommandLineException - in case of unbalanced quotes.
      • Commandline

        public Commandline()
        Create a new command line object. Shell is autodetected from operating system.
    • Method Detail

      • setDefaultShell

        private void setDefaultShell()

        Sets the shell or command-line interpreter for the detected operating system, and the shell arguments.

      • createArg

        public Arg createArg()
        Creates an empty argument object and inserts it at the end of the argument list.
        Returns:
        the argument object
      • createArg

        public Arg createArg​(boolean insertAtStart)
        Creates an argument object and adds it to the list of args.
        Parameters:
        insertAtStart - if true, the argument is inserted at the beginning of the list of args. Otherwise it is appended.
        Returns:
        the argument
      • setExecutable

        public void setExecutable​(java.lang.String executable)
        Sets the executable to run.
        Parameters:
        executable - the executable
      • getExecutable

        public java.lang.String getExecutable()
        Returns:
        the executable
      • addArguments

        public void addArguments​(java.lang.String... line)
        Parameters:
        line - the arguments
      • addEnvironment

        public void addEnvironment​(java.lang.String name,
                                   java.lang.String value)
        Add an environment variable.
        Parameters:
        name - the name of the environment variable
        value - the appropriate value
      • addSystemEnvironment

        public void addSystemEnvironment()
        Add system environment variables.
      • getEnvironmentVariables

        public java.lang.String[] getEnvironmentVariables()
        Return the list of environment variables.
        Returns:
        an array of all environment variables
      • getCommandline

        public java.lang.String[] getCommandline()
        Returns the executable and all defined arguments.
        Returns:
        an array of all arguments including the executable
      • getShellCommandline

        private java.lang.String[] getShellCommandline()
        Returns:
        the shell, executable and all defined arguments without masking any arguments
      • getShellCommandline

        private java.lang.String[] getShellCommandline​(boolean mask)
        Parameters:
        mask - flag to mask any arguments (having his mask field to true)
        Returns:
        the shell, executable and all defined arguments with masking some arguments if mask parameter is on
      • getArguments

        public java.lang.String[] getArguments()
        Returns all arguments defined by addLine, addValue or the argument object.
        Returns:
        an array of arguments.
      • getArguments

        public java.lang.String[] getArguments​(boolean mask)
        Returns all arguments defined by addLine, addValue, or the argument object.
        Parameters:
        mask - flag to mask any arguments (having his mask field to true)
        Returns:
        an array of arguments
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • setWorkingDirectory

        public void setWorkingDirectory​(java.lang.String path)
        Sets working directory.
        Parameters:
        path - the working directory
      • setWorkingDirectory

        public void setWorkingDirectory​(java.io.File workingDirectory)
        Sets working directory.
        Parameters:
        workingDirectory - the working directory
      • getWorkingDirectory

        public java.io.File getWorkingDirectory()
        Returns:
        the working directory
      • clearArgs

        public void clearArgs()
        Clear out the arguments but leave the executable in place for another operation.
      • setShell

        void setShell​(Shell shell)
        Set the shell to be used for this command line.
        Parameters:
        shell - the shell
      • getShell

        public Shell getShell()
        Get the shell to be used in this command line.
        Returns:
        the shell