Package org.apache.catalina.ant.jmx

## 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:
  `java.lang.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
Author:
  Peter Rossbach

### Field Summary

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

`description, location, project`

### Constructor Summary

Constructors
`JMXAccessorCondition()`

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `eval()` This method evaluates the condition It support for operation ">,>=,<,<=" the types `long` and `double`.
`java.lang.String` `getIf()`
`java.lang.String` `getOperation()`
`java.lang.String` `getType()`
`java.lang.String` `getUnless()`
`void` `setIf​(java.lang.String c)` Only execute if a property of the given name exists in the current project.
`void` `setOperation​(java.lang.String operation)`
`void` `setType​(java.lang.String type)`
`void` `setUnless​(java.lang.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 org.apache.catalina.ant.jmx.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 java.lang.Object

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

### Constructor Detail

#### JMXAccessorCondition

    public JMXAccessorCondition()

### Method Detail

#### getOperation

    public java.lang.String getOperation()

Returns:
  Returns the operation.

#### setOperation

    public void setOperation​(java.lang.String operation)

Parameters:
  `operation` - The operation to set.

#### getType

    public java.lang.String getType()

Returns:
  Returns the type.

#### setType

    public void setType​(java.lang.String type)

Parameters:
  `type` - The type to set.

#### getIf

    public java.lang.String getIf()

Returns:
  Returns the ifCondition.

#### setIf

    public void setIf​(java.lang.String c)

Only execute if a property of the given name exists in the current project.

Parameters:
  `c` - property name

#### getUnless

    public java.lang.String getUnless()

Returns:
  Returns the unlessCondition.

#### setUnless

    public void setUnless​(java.lang.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