Class Shell

  • All Implemented Interfaces:
    java.lang.Cloneable
    Direct Known Subclasses:
    BourneShell, CmdShell, CommandShell

    public class Shell
    extends java.lang.Object
    implements java.lang.Cloneable
    Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, like
    • command.com
    • cmd.exe
    Since:
    1.2
    Version:
    $Id$
    Author:
    Carlos Sanchez
    • Constructor Detail

      • Shell

        public Shell()
    • Method Detail

      • setUnconditionalQuoting

        public void setUnconditionalQuoting​(boolean unconditionallyQuote)
        Toggle unconditional quoting
        Parameters:
        unconditionallyQuote -
      • setShellCommand

        public void setShellCommand​(java.lang.String shellCommand)
        Set the command to execute the shell (eg. COMMAND.COM, /bin/bash,...)
        Parameters:
        shellCommand -
      • getShellCommand

        public java.lang.String getShellCommand()
        Get the command to execute the shell
        Returns:
      • setShellArgs

        public void setShellArgs​(java.lang.String[] shellArgs)
        Set the shell arguments when calling a command line (not the executable arguments) (eg. /X /C for CMD.EXE)
        Parameters:
        shellArgs -
      • getShellArgs

        public java.lang.String[] getShellArgs()
        Get the shell arguments
        Returns:
      • getCommandLine

        public java.util.List<java.lang.String> getCommandLine​(java.lang.String executable,
                                                               java.lang.String[] arguments)
        Get the command line for the provided executable and arguments in this shell
        Parameters:
        executable - executable that the shell has to call
        arguments - arguments for the executable, not the shell
        Returns:
        List with one String object with executable and arguments quoted as needed
      • quoteOneItem

        protected java.lang.String quoteOneItem​(java.lang.String inputString,
                                                boolean isExecutable)
      • getRawCommandLine

        protected java.util.List<java.lang.String> getRawCommandLine​(java.lang.String executable,
                                                                     java.lang.String[] arguments)
      • getQuotingTriggerChars

        protected char[] getQuotingTriggerChars()
      • getExecutionPreamble

        protected java.lang.String getExecutionPreamble()
      • getEscapeChars

        protected char[] getEscapeChars​(boolean includeSingleQuote,
                                        boolean includeDoubleQuote)
      • isDoubleQuotedArgumentEscaped

        protected boolean isDoubleQuotedArgumentEscaped()
      • isSingleQuotedArgumentEscaped

        protected boolean isSingleQuotedArgumentEscaped()
      • isDoubleQuotedExecutableEscaped

        protected boolean isDoubleQuotedExecutableEscaped()
      • isSingleQuotedExecutableEscaped

        protected boolean isSingleQuotedExecutableEscaped()
      • setArgumentQuoteDelimiter

        protected void setArgumentQuoteDelimiter​(char argQuoteDelimiter)
      • getArgumentQuoteDelimiter

        protected char getArgumentQuoteDelimiter()
      • setExecutableQuoteDelimiter

        protected void setExecutableQuoteDelimiter​(char exeQuoteDelimiter)
      • getExecutableQuoteDelimiter

        protected char getExecutableQuoteDelimiter()
      • setArgumentEscapePattern

        protected void setArgumentEscapePattern​(java.lang.String argumentEscapePattern)
      • getArgumentEscapePattern

        protected java.lang.String getArgumentEscapePattern()
      • getShellCommandLine

        public java.util.List<java.lang.String> getShellCommandLine​(java.lang.String[] arguments)
        Get the full command line to execute, including shell command, shell arguments, executable and executable arguments
        Parameters:
        arguments - arguments for the executable, not the shell
        Returns:
        List of String objects, whose array version is suitable to be used as argument of Runtime.getRuntime().exec()
      • getShellArgsList

        public java.util.List<java.lang.String> getShellArgsList()
      • addShellArg

        public void addShellArg​(java.lang.String arg)
      • setQuotedArgumentsEnabled

        public void setQuotedArgumentsEnabled​(boolean quotedArgumentsEnabled)
      • isQuotedArgumentsEnabled

        public boolean isQuotedArgumentsEnabled()
      • setQuotedExecutableEnabled

        public void setQuotedExecutableEnabled​(boolean quotedExecutableEnabled)
      • isQuotedExecutableEnabled

        public boolean isQuotedExecutableEnabled()
      • setExecutable

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

        public java.lang.String getExecutable()
      • setWorkingDirectory

        public void setWorkingDirectory​(java.lang.String path)
        Sets execution directory.
      • setWorkingDirectory

        public void setWorkingDirectory​(java.io.File workingDir)
        Sets execution directory.
      • getWorkingDirectory

        public java.io.File getWorkingDirectory()
      • getWorkingDirectoryAsString

        public java.lang.String getWorkingDirectoryAsString()
      • clearArguments

        public void clearArguments()
      • clone

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

        public java.lang.String getOriginalExecutable()
      • getOriginalCommandLine

        public java.util.List<java.lang.String> getOriginalCommandLine​(java.lang.String executable,
                                                                       java.lang.String[] arguments)
      • setDoubleQuotedArgumentEscaped

        protected void setDoubleQuotedArgumentEscaped​(boolean doubleQuotedArgumentEscaped)
      • setDoubleQuotedExecutableEscaped

        protected void setDoubleQuotedExecutableEscaped​(boolean doubleQuotedExecutableEscaped)
      • setSingleQuotedArgumentEscaped

        protected void setSingleQuotedArgumentEscaped​(boolean singleQuotedArgumentEscaped)
      • setSingleQuotedExecutableEscaped

        protected void setSingleQuotedExecutableEscaped​(boolean singleQuotedExecutableEscaped)