# Class JMXAccessorCondition

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.catalina.ant.jmx.JMXAccessorConditionBase
org.apache.catalina.ant.jmx.JMXAccessorCondition

All Implemented Interfaces:
  `Cloneable, org.apache.tools.ant.taskdefs.condition.Condition`

public class JMXAccessorCondition extends JMXAccessorConditionBase
Definition:

      <path id="catalina_ant">
          <fileset dir="${catalina.home}/server/lib">
              <include name="catalina-ant.jar"/>
          </fileset>
      </path>

      <typedef
          name="jmxCondition"
          classname="org.apache.catalina.ant.jmx.JMXAccessorCondition"
          classpathref="catalina_ant"/>
      <taskdef
          name="jmxOpen"
          classname="org.apache.catalina.ant.jmx.JMXAccessorTask"
          classpathref="catalina_ant"/>

Usage: Wait for start backup node

        <target name="wait">
          <jmxOpen
                  host="${jmx.host}" port="${jmx.port}" username="${jmx.username}" password="${jmx.password}" />
           <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" >
              <and>
                  <socket server="${server.name}" port="${server.port}"/>
                  <http url="${url}"/>
                  <jmxCondition
                      name="Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"
                      operation="=="
                      attribute="connected" value="true"
                  />
                  <jmxCondition
                      operation="&lt;"
                      name="Catalina:j2eeType=WebModule,name=//${tomcat.application.host}${tomcat.application.path},J2EEApplication=none,J2EEServer=none"
                      attribute="startupTime" value="250"
                  />
              </and>
          </waitfor>
          <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" />
          <echo message="Server ${url} alive" />
      </target>

Allowed operation between jmx attribute and reference value:

- == equals
- != not equals
- > greater than (&gt;)
- >= greater than or equals (&gt;=)
- < lesser than (&lt;)
- <= lesser than or equals (&lt;=)

NOTE: For numeric expressions the type must be set and use xml entities as operations.
As type we currently support long and double.

Since:
  5.5.10

## Field Summary

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

`description, location, project`

## Constructor Summary

Constructors
Constructor
Description
`JMXAccessorCondition()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`eval()`
This method evaluates the condition It support for operation ">,>=,<,<=" the types `long` and `double`.
`String`
`getIf()`
`String`
`getOperation()`
`String`
`getType()`
`String`
`getUnless()`
`void`
`setIf(String c)`
Only execute if a property of the given name exists in the current project.
`void`
`setOperation(String operation)`
`void`
`setType(String type)`
`void`
`setUnless(String c)`
Only execute if a property of the given name does not exist in the current project.
`protected boolean`
`testIfCondition()`
test the if condition
`protected boolean`
`testUnlessCondition()`
test the unless condition

### Methods inherited from class JMXAccessorConditionBase

`accessJMXValue, getAttribute, getHost, getJMXConnection, getName, getPassword, getPort, getRef, getUrl, getUsername, getValue, setAttribute, setHost, setName, setPassword, setPort, setRef, setUrl, setUsername, setValue`

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

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

### Methods inherited from class Object

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

## Constructor Details

### JMXAccessorCondition

public JMXAccessorCondition()

## Method Details

### getOperation

public String getOperation()

Returns:
  Returns the operation.

### setOperation

public void setOperation(String operation)

Parameters:
  `operation` - The operation to set.

### getType

public String getType()

Returns:
  Returns the type.

### setType

public void setType(String type)

Parameters:
  `type` - The type to set.

### getIf

public String getIf()

Returns:
  Returns the ifCondition.

### setIf

public void setIf(String c)
Only execute if a property of the given name exists in the current project.

Parameters:
  `c` - property name

### getUnless

public String getUnless()

Returns:
  Returns the unlessCondition.

### setUnless

public void setUnless(String c)
Only execute if a property of the given name does not exist in the current project.

Parameters:
  `c` - property name

### testIfCondition

protected boolean testIfCondition()
test the if condition

Returns:
  true if there is no if condition, or the named property exists

### testUnlessCondition

protected boolean testUnlessCondition()
test the unless condition

Returns:
  true if there is no unless condition, or there is a named property but it doesn't exist

### eval

public boolean eval()
This method evaluates the condition It support for operation ">,>=,<,<=" the types `long` and `double`.

Returns:
  expression jmxValue operation value