JWare/AntXtras Foundation Version 0.5, Release June 2005 ------------------------------------ This document contains the major AntXtras version change notes. For the most recent information, visit the AntXtras website at http://www.jware.info/ ------------------------------------------------------------------------------ JWare/AntXtras v0.5 (June-12-2005) major changes since v0.5b4: => Added a new userguide section for standard AntX value uri handlers. See online at: http://www.jware.info/AntXtras/docs/userguide/valueuris/ => Fixed problems with Ant 1.6.3 changes to CallTarget and some of AntX's own callXYZ flowcontrol tasks. AntX is now verified against the 1.6.2, 1.6.3, and 1.6.5 Ant releases. => Fixed condition to handle beta releases of the Ant product. => Fixed condition to work for objects loaded by a classloader different from its own when the 'class' and 'kindof' parameters are used. => Fixed when used inside of a macrodef and included macrodef attributes as part of its definition. BACKWARD-COMPATIBILITY ISSUE: it is now illegal to name a local foreach loop (naming was not a requirement for local loops, and was the root of the problems with macrodefs). => Fixed valueuris.xml (now moved to antx/valueuri/antlib.xml) to use the "ant:current" namespace for AntX components instead of trying to load the components itself. The file now works even if AntX is loaded with a custom classpath or classloader. (Caller must now ensure that AntX is loaded before this antlib is used.) => Enhanced general transform option to support new "trim" and "stripws" selections. Changes are also inherited by the various transform value URI handlers. Example Usage: ... => Fixed the task to support a new -resulttype that lets you use variables for results instead of write-once project properties. Now you can use from a macrodef that is called repeatedly with the same (or a defaulting) result prefix. Legal values for the resulttype are: "property"(default), "variable", and "reference". Example Usage: ... => Fixed to support nested elements. These simple key-value pairs are passed verbatim to the interpreter. Example Usage: => Moved valueuris.xml to antx/valueuri/antlib.xml. BACKWARD-COMPATIBILITY ISSUE: you should update your scripts to use this new antlib file. The beta valueuris.xml file has been removed from the final distribution. => Refactored the valueuri implementations into their own package tree; please update your antlibs with the new package names. See the builtin antx/valueuri/antlib.xml (used to be valueuris.xml) file for the new locations of various handlers. => Enhanced the data type to allow nested references to other (like most other set data types). For now, the referred-to strings list is inserted when the instance is parsed. AntX 0.6 will support a "dynamic" option like the standard . Example Usage: ------------------------------------------------------------------------------ JWare/AntXtras v0.5b4 (April-10-2005) major changes since v0.5b3: => This is scheduled to be the last beta release of the AntX-0.5. The next release will be the final 0.5 release. => BACKWARD-COMPATIBILITY ISSUE (from v0.5b3): The component is now an AntX presetdef for as used (very very very often) with the to simulate an if-else construct. In the previous beta was a synonym for the element. Example Usage: ... ...[do a-b-c] ...[do x-y-z] => Several new value URI handlers have been included in this AntX release. Please see the online overview for a general description of the new handlers. Now you can also "pipeline" value uris using the "|" between uris; the result of the first evaluation is passed as the fragment to the second and down the line. Only the first uri can have an explicit fragment. Example Usage: => Added an "includesource" parameter to the task. Omitting source information (target's name) makes it easier for generic dashboard update scripts to parse checkpoint files. Example Usage: => All failed assertion messages are now prefixed with a "Failed assertion: " lead string. This makes it easier to identify why a build or test run failed from the console messages. Example Usage: (If this fails): (Old Output was) [assert] Directory ${no-such-dir} exists (New Output is) [assert] Failed assertion: Directory ${no-such-dir} exists. => Reworked so you can include it in a regular antlib file. Also, you can now include all printer components including in a SAMS run configuration script. Example Usage: ... ... => Exported a new utility task that lets you process either the set of logged messages captured by one of the AntX capture tasks like or a single log file for some application defined criteria. The evaluation's result is summarized in a single "result" property that will be set to one of three possible values: "CLEAN", "PROBLEM", or "FAILURE". Example Usage: ... ... ... => Enhanced to support, as valid short hand options, any client-supplied condition types that support the AntX URIable interface. This means now supports the other AntX-based project conditions automatically. Example Usage: ... => Added a new utility taskset that lets you batch the execution of a series of assertions or fixture checks into a single (final) pass or fail. You would use this taskset to iterate through a set of required properties en-masse while linking any failures to a specific feedback message. Example Usage: ... ... => Added a standalone condition to match the task's shorthand isdirectory parameter. (Note that is just a convenient wrapper for the standard Ant task.) Example Usage: ... ------------------------------------------------------------------------------ JWare/AntXtras v0.5b3 (January-05-2005) major changes since v0.5b2: => Enhanced to accept file URLs in addition to regular file system paths. => Enhanced both and to accept macrodefs as callable targets. If you specify one or more macros, the flowcontrol task's mode is automatically set to "local". Macrodefs are significantly faster than local targets when you do not need to block the fixture modifying side effects of the target on the current project. Example Usage: ... ... ... => Enhanced the task to support a "local" mode. If you set the mode local, the task's nested elements are executed as part of a local macrodef *within the current project*. This option is much faster than an isolated-project execution if you do not need to block the effects of the nested tasks on the current project. Example Usage: => Enhanced to handle two simple string manipulation operations: strcat (+s) and strlen (len). These operations are useful when building strings with optional parts. Example Usage: => Enhanced with a new "againstall" option. When turned on, the will capture *any* kind of runtime exception for processing not just Ant-specific build exceptions. Example Usage: => The element of the AntX flow control task now has a synonym . Which of the two elements you use depends on how the is being used. Typically, if you use a to reflect an if-[elseif-]else flow, you would use the construct instead of the more switch-like . => Added support for the hard limit stop "maxloops" option to both and . This option (as originally used in the loop) lets you guard against runaway loops. Example Usage: => Added a "msg" option to the task so you can include a custom script message with the generated Error. Example Usage: => Enhanced with a new "super" parameter to specify a call to an overridden imported target of the same name as the current target. Example Usage: [In 'imported.xml' script] ... [In 'importing.xml' script] => Added a new fixture definition task that lets you dynamically add data items to the current project without prematurely installing a global id (reference) to an unconfigured proxy object. Example Usage: ... ------------------------------------------------------------------------------ JWare/AntXtras v0.5b2 (October-07-2004) major changes since v0.5b1: => Bug [1034224] fixed by tweaking the standard AntX condition antlib to use "is" in front of all our condition names. This (better) ensures our conditions do not conflict with regular task and/or type names. See the QuickStart Guide for the updated names. => The auto-install AntX antlib.xml now works even if AntX is put in its own namespace. It is no longer necessary to call explicitly. => The manager task for value URIs has been renamed to be consistent with the existing AntX fixture manager tasks. A sample configuration file com/idaremedia/antx/valueuris.xml has been added; it contains a listing of all the builtin AntX value URI handlers. You can use valueuris.xml as-is, or as a starting point for your own scripts. => Fixed builtin value URI handlers to understand "@(propertyname)" as a local substitute for ${propertyname}. This lets you embed regular Ant property references (recursively) into value URIs. Example Usage: ...[Turn on value-URIs; see User Guide for options] => Updated the taskset to support a generic "is true" and "is false" condition, including results of value URIs. This new condition supersedes the individual "if*" and "unless*" conditions as the most flexible way to control when a set of tasks get executed based on the existence (or not) of certain properties. The existing individual tests are still perfectly valid options (especially if you decide not to use AntX's value URIs). Example Usage: ...[Turn on value-URIs; see User Guide for options] <.../> => Updated the taskset to support a generic "meets criteria" execution condition. This allows you to link the execution of a set of tasks to a custom condition that is as complex as you make it. The named test must one of the AntX rule types (like a or the new ), or any component that implements the Ant "Condition" interface. Example Usage: ...[Turn on value-URIs; see User Guide for options] ...[Test whether javadoc needed] => Updated the task to support a generic "meets criteria" choice. A criteria choice refers to an existing (named) condition like a or that is evaluated when the choice is tested. If the condition evaluates true, the choice's tasks are executed. The targeted condition can use global and overlaid fixture information to determine its result. Example Usage: ... ... ... => Added a rule type that works like an isolated boolean function (or a weird combination of a and a ). The type is used to create non-trivial tests that tasksets like and use to determine whether to execute their nested tasks. Unlike the existing and , a can contain tasks other than conditions and must explicitly assign its result (a boolean) to a specified variable. See the User Guide for a complete description of this new rule type. => Added a taskset to the AntX standard flowcontrol components. This taskset evaluates a named criteria and executes its nested tasks until the criteria fails. As with and , the named condition must be one of the AntX rule types or any component that implements the Ant "Condition" interface. Example Usage: ...[determine if there are more logs] ...[process the log at $var:nextlogfile] => Enhanced to support both a 'truevariable' and 'falsevariable' update option. This helps tally work easier with the new and test features of various looping tasks. => The task is now part of AntX's file system helper tasks. You can use to create paths relative to a single known base without creating many (unused) intermediary properties. You can also get the location of classpath-based resources or temp directory-based items. Example Usage: => The task is now part of AntX's file system helper tasks. You can use to create a list of a directory's contents and then iterate over that list. Example Usage: ------------------------------------------------------------------------------ JWare/AntXtras v0.5b1 (September-22-2004) major changes since v0.4: => AntX 0.5 will be based on Ant 1.6.2. (Because some interfaces in 1.6.2 do not exist in 1.6.1, AntX 0.5 requires Ant 1.6.2 or later.) => The AntX binary distribution no longer includes the "full" jar file. This jar contained the AntX tests in compiled form. Because this archive seemed to be rarely used, it has been removed. You can still use the source distribution to create your own development archive. (For similar reasons, the developer-specific release notes are no longer part of this document.) => The taskset now supports elements in namespaces other than the default. Also, underscores in an 's (direct) dynamic attributes are no longer converted to periods; this allows users to specify properties with underscores. Example Usage: ... => You can now make an wrapper porous by specifying a set of properties () you want passed through. You can alternatively allow all changes through except a named set. The AntX 0.5 antlib.xml includes two presetdef variants of () and () that are useful for isolating macrodef transient property settings. Example Usage: ... => You can now remove a variable or project reference that was created with the task by using the new task. This new task clarifies how fixture data can be removed and is particularly useful for tests that need to undo fixture modifications in their teardown sequences. Example Usage: ...[test test test] => AntX 0.5 introduces a new system-wide feature called "value URIs". You would use a value uri to extract fixture information other than Ant properties using property reference syntax. AntX includes support for the expected fixture elements (properties, references, variables) but the system is most useful if it's extended to include your own value URI handlers. See the AntXtras QuickStart guide for a complete description of this new feature. (In AntX 0.4, only the taskset supported value uris.) Several sample handlers are included in the AntX contrib distribution. Example Usage: ...[Turn on value-URIs; see User Guide for options] => A new task has been added to the standard AntX I/O helpers task collection. Use this task to truncate a file's contents without deleting the file. Example Usage: => A new "urlproperty" parameter has been added to all the temporary object creation tasks like and . If specified AntX will save a normalized file URL to the property. Example Usage: => The standard AntX "transform" parameter now supports an "ospathurl" value to complement the existing "ospath" option. Also you can now pass a file url in to be converted to a normalized os path. Example Usage: => You can make a create a new system property by setting its 'scope' parameter to "system". Example Usage: -SSMC