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.

    Author:
    thomas.haas@softwired-inc.com, Stefan Bodewig
    • Field Detail

      • OS_NAME

        @Deprecated
        protected static final java.lang.String OS_NAME
        Deprecated.
        Use Os class instead.
        See Also:
        Constant Field Values
      • WINDOWS

        @Deprecated
        protected static final java.lang.String WINDOWS
        Deprecated.
        Use Os class instead.
        See Also:
        Constant Field Values
      • arguments

        protected java.util.Vector<Arg> arguments
      • envVars

        protected java.util.Map<java.lang.String,​java.lang.String> envVars
      • executable

        @Deprecated
        protected java.lang.String executable
        Deprecated.
    • Constructor Detail

      • Commandline

        public Commandline​(java.lang.String toProcess,
                           Shell shell)
        Create a new command line object. Shell is autodetected from operating system Shell usage is only desirable when generating code for remote execution.
        Parameters:
        toProcess - sh to process
        shell - Shell to use
      • Commandline

        public Commandline​(Shell shell)
        Create a new command line object. Shell is autodetected from operating system Shell usage is only desirable when generating code for remote execution.
        Parameters:
        shell - the Shell
      • Commandline

        public Commandline​(java.lang.String toProcess)
        Create a new command line object, given a command following POSIX sh quoting rules
        Parameters:
        toProcess - the process
      • Commandline

        public Commandline()
        Create a new command line object.
    • Method Detail

      • getPid

        public long getPid()
      • setPid

        public void setPid​(long pid)
      • createArgument

        @Deprecated
        public Commandline.Argument createArgument()
        Deprecated.
        Use createArg() instead

        Creates an argument object.

        Each commandline object has at most one instance of the argument class. This method calls this.createArgument(false).

        Returns:
        the argument object.
        See Also:
        createArgument(boolean)
      • createArgument

        @Deprecated
        public Commandline.Argument createArgument​(boolean insertAtStart)
        Deprecated.
        Use createArg(boolean) instead

        Creates an argument object and adds it to our list of args.

        Each commandline object has at most one instance of the argument class.

        Parameters:
        insertAtStart - if true, the argument is inserted at the beginning of the list of args, otherwise it is appended.
        Returns:
        Argument the argument Object
      • createArg

        public Arg createArg()

        Creates an argument object.

        Each commandline object has at most one instance of the argument class. This method calls this.createArgument(false).

        Returns:
        the argument object.
        See Also:
        createArgument(boolean)
      • createArg

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

        Each commandline object has at most one instance of the argument class.

      • addArg

        public void addArg​(Arg argument)
        Parameters:
        argument - the argument
        See Also:
        addArg(Arg,boolean)
      • addArg

        public void addArg​(Arg argument,
                           boolean insertAtStart)
        Adds an argument object to our list of args.
        Parameters:
        argument - the argument
        insertAtStart - if true, the argument is inserted at the beginning of the list of args, otherwise it is appended.
      • setExecutable

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

        public java.lang.String getLiteralExecutable()
        Returns:
        Executable to be run, as a literal string (no shell quoting/munging)
      • getExecutable

        public java.lang.String getExecutable()
        Return an executable name, quoted for shell use. Shell usage is only desirable when generating code for remote execution.
        Returns:
        Executable to be run, quoted for shell interpretation
      • addArguments

        public void addArguments​(java.lang.String[] line)
      • addEnvironment

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

        public void addSystemEnvironment()
                                  throws java.lang.Exception
        Add system environment variables
        Throws:
        java.lang.Exception - if error
      • getEnvironmentVariables

        public java.lang.String[] getEnvironmentVariables()
                                                   throws CommandLineException
        Returns:
        String[] Return the list of environment variables
        Throws:
        CommandLineException - if error
      • getCommandline

        public java.lang.String[] getCommandline()
        Returns:
        Returns the executable and all defined arguments. For Windows Family, getShellCommandline() is returned
      • getRawCommandline

        public java.lang.String[] getRawCommandline()
        Returns the executable and all defined arguments.
        Returns:
        the command line as array not escaped neither quoted
      • getShellCommandline

        public java.lang.String[] getShellCommandline()
        Returns the shell, executable and all defined arguments. Shell usage is only desirable when generating code for remote execution.
        Returns:
        the command line as array
      • getArguments

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

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

        public int size()
      • clone

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

        public void clear()
        Clear out the whole command line.
      • clearArgs

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

        public Commandline.Marker createMarker()

        This marker can be used to locate a position on the commandline - to insert something for example - when all parameters have been set.

        Returns:
        Return a marker.
      • setWorkingDirectory

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

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

        public java.io.File getWorkingDirectory()
      • getSystemEnvVars

        public java.util.Properties getSystemEnvVars()
                                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • setShell

        public void setShell​(Shell shell)
        Allows to set the shell to be used in this command line. Shell usage is only desirable when generating code for remote execution.
        Parameters:
        shell - Shell to use
        Since:
        1.2
      • getShell

        public Shell getShell()
        Get the shell to be used in this command line. Shell usage is only desirable when generating code for remote execution.
        Returns:
        the Shell
        Since:
        1.2
      • translateCommandline

        @Deprecated
        public static java.lang.String[] translateCommandline​(java.lang.String toProcess)
                                                       throws java.lang.Exception
        Parameters:
        toProcess - the process
        Returns:
        the command line arguments
        Throws:
        java.lang.Exception - if error happen
      • toString

        @Deprecated
        public static java.lang.String toString​(java.lang.String[] line)
        Deprecated.
        Parameters:
        line - the lines
        Returns:
        lines as single String