org.apache.tools.ant.taskdefs.condition
Class IsReachable

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by 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
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
IsReachable()
           
 
Method Summary
 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