As you can see in the XML definition of our task ([see buildfile above] , line 9)
there is an attribute defined with the task itself, namely "message" with a value of
the text string that our task should echo. The task must somehow become aware of
the attribute name and the value. Therefore the setter methods
exist.
For each attribute you want to import to the task's namespace you have to define a method named exactly after the very attribute plus the string "set" prepended. This method accepts exactly one parameter that holds the value of the attribute. Now you can set the a class internal property to the value that is passed via the setter method.
In the setter method you should also perform any casting operations and/or check
if the attribute value is a valid value. If this is not the case, throw a
BuildException
. In some cases, such as when you have three
attributes and at least one of them should be set, you may want to check the
attribute values inside the init() or main() method.
In out example the setter is named setMessage
, because the
XML attribute the echo task accepts is "message". setMessage now takes the string
"Hello World" provided by the parser and sets the value of the internal class
property $strMessage
to "Hello World". It is now available to the
task for further disposal.