com.sun.grid.util.expect

## Class Expect

- java.lang.Object
- - com.sun.grid.util.expect.Expect

-     public class Expect
      extends java.lang.Object

  Simple helper class for handling output of a process. It works similar as the tcl expect command.

  ### Example

          char [] password = null;
          String username = null;
          long timeout = 60 * 1000;
          String [] cmd = new String[] { "su", "username", "-c" , "ls" };

          Expect expect = new Expect(cmd);

          expect.addHandler(new ExpectPasswordHandler("password: ", password));

          expect.addHandler(new ExpectHandler() {

              // print every line after the password question to System.out
              public void handle(Expect expect, ExpectBuffer buffer) {

                  String line = buffer.consumeLine();
                  if(line != null) {
                     System.out.println(line);
                  }

              }
          });

          if(expect.exec(timeout) == 0 ) {
             System.out.println("ls as user " + username + " successfully executed");
          }

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Expect()`
    `Expect(java.lang.String[] cmd)` Creates a new instance of Expect

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(ExpectHandler handler)` Add a new expect handler.
    `java.util.List` | `command()`
    `java.util.List` | `env()`
    `int` | `exec(long timeout)` Execute the command and call the registered handlers.
    `void` | `flush()` Flush stdin
    `void` | `print(boolean b)` print a boolean to stdin
    `void` | `print(char c)` print a char to stdin.
    `void` | `print(char[] s)` print a char arrary to stdin !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of `s` is written to the logger.
    `void` | `print(double d)` print a double to stdin
    `void` | `print(float x)` print a float to stdin.
    `void` | `print(int i)` print an integer to stdin
    `void` | `print(long l)` print a long to stdin
    `void` | `print(java.lang.Object obj)` print an object to stdin
    `void` | `print(java.lang.String s)` print a string to stdin
    `void` | `println()` print linefeed to stdin.
    `void` | `println(boolean x)` print a boolean to stdin (with linefeed)
    `void` | `println(char x)` print a char to stdin.
    `void` | `println(char[] x)` print a char arrary to stdin (with line feed) !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of `x` is written to the logger.
    `void` | `println(double x)` print a double to stdin (with linefeed)
    `void` | `println(float x)` print a float to stdin (with linefeed).
    `void` | `println(int x)` print an integer to stdin (with linefeed)
    `void` | `println(long x)` print a long to stdin (with linefeed)
    `void` | `println(java.lang.Object x)` print an object to stdin (with linefeed)
    `void` | `println(java.lang.String x)` print a string to stdin (with line separator)
    `void` | `printlnPassword(char[] s)` print a password to stdin (with linefeed)
    `void` | `printPassword(char[] s)` print a password to stdin

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Expect

          public Expect()

    - #### Expect

          public Expect(java.lang.String[] cmd)

      Creates a new instance of Expect
      Parameters:
        `cmd` - the command which will be executed
      See Also:
        `Runtime.exec(String[])`

  - ### Method Detail

    - #### command

          public java.util.List command()

    - #### env

          public java.util.List env()

    - #### add

          public void add(ExpectHandler handler)

      Add a new expect handler.
      Parameters:
        `handler` - the expect handler

    - #### exec

          public int exec(long timeout)
                   throws java.io.IOException,
                          java.lang.InterruptedException

      Execute the command and call the registered handlers.
      Parameters:
        `timeout` - timout for the command in milliseconds
      Returns:
        the exit code of the command
      Throws:
        `java.io.IOException` - if the execution of the command failed
        `java.lang.InterruptedException` - if the current thread has been interrupted before the command has been finished.

    - #### flush

          public void flush()

      Flush stdin

    - #### println

          public void println(java.lang.String x)

      print a string to stdin (with line separator)
      Parameters:
        `x` - the string

    - #### print

          public void print(java.lang.String s)

      print a string to stdin
      Parameters:
        `s` - the string

    - #### println

          public void println(java.lang.Object x)

      print an object to stdin (with linefeed)
      Parameters:
        `x` - the object

    - #### print

          public void print(java.lang.Object obj)

      print an object to stdin
      Parameters:
        `obj` - the object

    - #### println

          public void println(int x)

      print an integer to stdin (with linefeed)
      Parameters:
        `x` - the integer

    - #### print

          public void print(int i)

      print an integer to stdin
      Parameters:
        `i` - the integer

    - #### print

          public void print(boolean b)

      print a boolean to stdin
      Parameters:
        `b` - the boolean

    - #### println

          public void println(boolean x)

      print a boolean to stdin (with linefeed)
      Parameters:
        `x` - the boolean

    - #### println

          public void println(long x)

      print a long to stdin (with linefeed)
      Parameters:
        `x` - the long

    - #### print

          public void print(long l)

      print a long to stdin
      Parameters:
        `l` - the long

    - #### println

          public void println(double x)

      print a double to stdin (with linefeed)
      Parameters:
        `x` - the double

    - #### println

          public void println(char[] x)

      print a char arrary to stdin (with line feed) !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of `x` is written to the logger.
      Parameters:
        `x` - the char array

    - #### print

          public void print(char[] s)

      print a char arrary to stdin !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of `s` is written to the logger.
      Parameters:
        `s` - the char array

    - #### printPassword

          public void printPassword(char[] s)

      print a password to stdin
      Parameters:
        `s` - the password

    - #### printlnPassword

          public void printlnPassword(char[] s)

      print a password to stdin (with linefeed)
      Parameters:
        `s` - the password

    - #### print

          public void print(double d)

      print a double to stdin
      Parameters:
        `d` - the double

    - #### println

          public void println(char x)

      print a char to stdin.
      Parameters:
        `x` - the char

    - #### print

          public void print(char c)

      print a char to stdin.
      Parameters:
        `c` - the char

    - #### println

          public void println(float x)

      print a float to stdin (with linefeed).
      Parameters:
        `x` - the float

    - #### print

          public void print(float x)

      print a float to stdin.
      Parameters:
        `x` - the float

    - #### println

          public void println()

      print linefeed to stdin.