Class ResponderTask

  • All Implemented Interfaces:
    java.util.concurrent.Callable<ResponderTask.ResponderResult>

    public class ResponderTask
    extends java.lang.Object
    implements java.util.concurrent.Callable<ResponderTask.ResponderResult>
    ResponderTask interacts with an input and outputstream, using a Responder instance to define the interaction. It looks for lines on the input stream that match the "inputSuccess" regular expression (e.g. password prompt). If it detects the "inputFailure" regular expression, it fails. If successful, it writes the "inputString" to the output stream.
    After writing to the output stream, It then looks for a certain "responseSuccess" regular expression. If successful it completes successfully. If it detects a "responseFailure" regular expression in the output, it fails.
    If a ResponderTask.ResultHandler is set, it will call the handleResult method after the response logic.
    If it the thread running the ResponderTask is interrupted, then the process will stop as soon as it is detected.
    Implements Callable so it can be submitted to a ExecutorService.


    Example: wait for "[sudo] password for user: ", write a password, and fail on "try again" response:
    • inputSuccessPattern: '^\[sudo\] password for .+: '
    • responseFailurePattern: '^.*try again.*'
    • failOnResponseThreshold: false
    • InputMaxLines: 12
    • inputString: 'password'
    • Constructor Detail

      • ResponderTask

        public ResponderTask​(Responder responder,
                             java.io.InputStream inputStream,
                             java.io.OutputStream outputStream,
                             ResponderTask.ResultHandler resultHandler)
        Create a ResponderTask with a responder, io streams, and result handler which can be null.
        Parameters:
        responder - responder
        inputStream - input
        outputStream - output
        resultHandler - handler
    • Method Detail

      • isFailed

        public boolean isFailed()
      • createSequence

        public java.util.concurrent.Callable<ResponderTask.ResponderResult> createSequence​(Responder responder)
        Create a Callable that will execute another responder if this one is successful, with the same resultHandler for the second one.
        Parameters:
        responder - responder
        Returns:
        sequence
      • createSequence

        public java.util.concurrent.Callable<ResponderTask.ResponderResult> createSequence​(Responder responder,
                                                                                           ResponderTask.ResultHandler resultHandler)
        Create a Callable that will execute another responder if this one is successful, with a specified resultHandler for the second one.
        Parameters:
        responder - responder
        resultHandler - handler
        Returns:
        sequence
      • isSuccess

        public boolean isSuccess()
      • getFailureReason

        public java.lang.String getFailureReason()