| <html> |
| |
| <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <title>Assertions type</title> |
| <link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css"> |
| </head> |
| |
| <body> |
| |
| <h2><a name="assertions">Assertions</a></h2> |
| <p> |
| The assertion type enables or disables the Java1.4 assertion feature, |
| on a whole java program, or components of a program. It can be used |
| in <java> and <junit> to add extra validation to code. |
| |
| <p> |
| Assertions are covered in the |
| <a href="http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html"> |
| Java 1.4.2</a> documentation, and the |
| <a href="http://java.sun.com/docs/books/jls/assert-spec.html"> |
| Java Language Specification</a> |
| |
| <p> |
| The key points to note are that a <tt>java.lang.AssertionError</tt> error |
| is thrown when an assertion fails, and that the facility is only available |
| on Java1.4 and later. To enable assertions one must set <tt>source="1.4"</tt>, |
| "1.5" or later in <javac> when the source is being compiled, and |
| that the code must contain <tt>assert</tt> statements to be tested. The |
| result of such an action is code that neither compiles or runs on earlier |
| versions of Java. For this reason Ant itself currently contains no assertions. |
| <p> |
| |
| When assertions are enabled (or disabled) in a task through nested |
| assertions elements, the classloader or command line is modified with the |
| appopriate options. This means that the JVM executed must be a Java1.4 |
| or later JVM, even if there are no assertions in the code. Attempting to |
| enable assertions on earlier VMs will result in an "Unrecognized option" |
| error and the JVM will not start. |
| |
| <p> |
| <h4>Attributes</h4> |
| <p> |
| |
| |
| </p> |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <td valign="top"><b>Attribute</b></td> |
| <td valign="top"><b>Description</b></td> |
| <td align="center" valign="top"><b>Required</b></td> |
| </tr> |
| <tr> |
| <td valign="top">enableSystemAssertions</td> |
| <td valign="top">Flag to turn system assertions on or off.</td> |
| <td valign="top" align="center">No, default is 'unspecified'</td> |
| </tr> |
| </table> |
| <p> |
| When the System assertions have neither been enabled or disabled, then |
| the JVM is not given any assertion information -the default action of the |
| current JVMs is to disable system assertions. |
| <p> |
| Note also that there is no apparent documentation for what parts of the |
| system have built in assertions. |
| |
| <h3>Nested elements</h3> |
| |
| <h4>enable</h4> |
| <p> |
| Enable assertions in portions of code. |
| |
| </p> |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <td valign="top"><b>Attribute</b></td> |
| <td valign="top"><b>Description</b></td> |
| <td align="center" valign="top"><b>Required</b></td> |
| </tr> |
| <tr> |
| <td valign="top">class</td> |
| <td valign="top">The name of a class to enable assertions on.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">package</td> |
| <td valign="top"> |
| The name of a package to turn assertions on. Use "..." for |
| the anonymous package. |
| </td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| </table> |
| |
| <h4>disable</h4> |
| <p> |
| Disable assertions in portions of code. |
| |
| </p> |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <td valign="top"><b>Attribute</b></td> |
| <td valign="top"><b>Description</b></td> |
| <td align="center" valign="top"><b>Required</b></td> |
| </tr> |
| <tr> |
| <td valign="top">class</td> |
| <td valign="top">The name of a class to disable assertions for.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">package</td> |
| <td valign="top"> |
| The name of a package to turn assertions off on. Use "..." for |
| the anonymous package. |
| </td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| </table> |
| <p> |
| |
| Because assertions are disabled by default, it only makes sense to disable |
| assertions where they have been enabled in a parent package. |
| |
| |
| <h4>Examples</h4> |
| |
| <h5>Example: enable a single class</h5> |
| |
| Enable assertions in a class called Test |
| <pre> |
| <assertions > |
| <enable class="Test" /> |
| </assertions> |
| </pre> |
| |
| <h5>Example: enable a package</h5> |
| |
| Enable assertions in a all packages below org.apache |
| <pre> |
| <assertions > |
| <enable package="org.apache" /> |
| </assertions> |
| </pre> |
| |
| <h5>Example: System assertions</h5> |
| |
| Example: set system assertions and all org.apache packages except |
| for ant, and the class org.apache.tools.ant.Main. |
| <pre> |
| <java fork="true" failonerror="true" |
| classname="${classname}" |
| classpathref="assert.classpath"> |
| <assertions enableSystemAssertions="true" > |
| <enable package="org.apache" /> |
| <disable package="org.apache.ant" /> |
| <enable class="org.apache.tools.ant.Main"/> |
| </assertions> |
| </java> |
| </pre> |
| |
| <h5>Example: disabled and anonymous package assertions</h5> |
| |
| Disable system assertions; enable those in the anonymous package |
| <pre> |
| <assertions enableSystemAssertions="false" > |
| <enable package="..." /> |
| </assertions> |
| </pre> |
| |
| |
| <h5>Example: referenced assertions</h5> |
| |
| This type is a datatype, so you can declare assertions and use them later |
| |
| <pre> |
| <assertions id="project.assertions" > |
| <enable package="org.apache.test" /> |
| </assertions> |
| |
| <java fork="true" failonerror="true" |
| classname="${classname}" |
| classpathref="assert.classpath"> |
| <assertions refid="project.assertions"/> |
| </java> |
| </pre> |
| |
| <hr> |
| <p align="center">Copyright © 2003 Apache Software Foundation. All rights |
| Reserved.</p> |
| </body> |
| </html> |