org.apache.tools.ant.taskdefs.condition

## Class IsReachable

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.taskdefs.condition.IsReachable

- All Implemented Interfaces:
    java.lang.Cloneable, Condition

      public class IsReachable
      extends ProjectComponent
      implements Condition

  Test for a host being reachable using ICMP "ping" packets & echo operations. Ping packets are very reliable for assessing reachability in a LAN or WAN, but they do not get through any well-configured firewall. Echo (port 7) may.

  This condition turns unknown host exceptions into false conditions. This is because on a laptop, DNS is one of the first services lost when the network goes; you are implicitly offline.

  If a URL is supplied instead of a host, the hostname is extracted and used in the test--all other parts of the URL are discarded.

  The test may not work through firewalls; that is, something may be reachable using a protocol such as HTTP, while the lower level ICMP packets get dropped on the floor. Similarly, a host may be detected as reachable with ICMP, but not reachable on other ports (i.e. port 80), because of firewalls.

  Requires Java 5+ to work properly. On Java 1.4, if a hostname can be resolved, the destination is assumed to be reachable.

  Since:
    Ant 1.7

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_TIMEOUT` The default timeout.
    `static java.lang.String` | `ERROR_BAD_TIMEOUT` Error when invalid timeout value is defined
    `static java.lang.String` | `ERROR_BAD_URL` Error message when an invalid url is used.
    `static java.lang.String` | `ERROR_BOTH_TARGETS` Error message when url and host are specified.
    `static java.lang.String` | `ERROR_NO_HOST_IN_URL` Error message when no hostname in url.
    `static java.lang.String` | `ERROR_NO_HOSTNAME` Error when no hostname is defined
    `static java.lang.String` | `ERROR_ON_NETWORK` Network error message is seen.
    `static java.lang.String` | `METHOD_NAME` The method name to look for in InetAddress
    `static java.lang.String` | `MSG_NO_REACHABLE_TEST` Error message when no reachably test avail.

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IsReachable()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `eval()` Evaluate the condition.
    `void` | `setHost(java.lang.String host)` Set the host to ping.
    `void` | `setTimeout(int timeout)` Set the timeout for the reachability test in seconds.
    `void` | `setUrl(java.lang.String url)` Set the URL from which to extract the hostname.

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`

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

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

- - ### Field Detail

    - #### DEFAULT_TIMEOUT

          public static final int DEFAULT_TIMEOUT

      The default timeout.
      See Also:
        Constant Field Values

    - #### ERROR_NO_HOSTNAME

          public static final java.lang.String ERROR_NO_HOSTNAME

      Error when no hostname is defined
      See Also:
        Constant Field Values

    - #### ERROR_BAD_TIMEOUT

          public static final java.lang.String ERROR_BAD_TIMEOUT

      Error when invalid timeout value is defined
      See Also:
        Constant Field Values

    - #### ERROR_ON_NETWORK

          public static final java.lang.String ERROR_ON_NETWORK

      Network error message is seen.
      See Also:
        Constant Field Values

    - #### ERROR_BOTH_TARGETS

          public static final java.lang.String ERROR_BOTH_TARGETS

      Error message when url and host are specified.
      See Also:
        Constant Field Values

    - #### MSG_NO_REACHABLE_TEST

          public static final java.lang.String MSG_NO_REACHABLE_TEST

      Error message when no reachably test avail.
      See Also:
        Constant Field Values

    - #### ERROR_BAD_URL

          public static final java.lang.String ERROR_BAD_URL

      Error message when an invalid url is used.
      See Also:
        Constant Field Values

    - #### ERROR_NO_HOST_IN_URL

          public static final java.lang.String ERROR_NO_HOST_IN_URL

      Error message when no hostname in url.
      See Also:
        Constant Field Values

    - #### METHOD_NAME

          public static final java.lang.String METHOD_NAME

      The method name to look for in InetAddress
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### IsReachable

          public IsReachable()

  - ### Method Detail

    - #### setHost

          public void setHost(java.lang.String host)

      Set the host to ping.
      Parameters:
        `host` - the host to ping.

    - #### setUrl

          public void setUrl(java.lang.String url)

      Set the URL from which to extract the hostname.
      Parameters:
        `url` - a URL object.

    - #### setTimeout

          public void setTimeout(int timeout)

      Set the timeout for the reachability test in seconds.
      Parameters:
        `timeout` - the timeout in seconds.

    - #### eval

          public boolean eval()
                       throws BuildException

      Evaluate the condition.
      Specified by:
        `eval` in interface `Condition`
      Returns:
        true if the condition is true.
      Throws:
        `BuildException` - if an error occurs