ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexey Solofnenko <A.Solofne...@mdl.com>
Subject RE: Embedded dynamic ANT tasks.
Date Fri, 06 Jun 2003 15:33:52 GMT
Hello Dawid,

  I was thinking about something like that. There is DynamicConfigurator to
support dynamic properties, but there is no way to create dynamic tasks.
Maybe we should ask ANT developers to support task factories in addition to
class names. It would be a simple patch. For example in
ComponentHelper.createNewTask() we can add something like:

if (o instanceof TaskFactory) {
  o=((TaskFactory)o).createNewTask(taskType);
}

// continue
if (o instanceof Task) {
....


- Alexey.

--
{ http://trelony.cjb.net/ } Alexey N. Solofnenko
Pleasant Hill, CA (GMT-8 usually)


-----Original Message-----
From: Dawid Weiss [mailto:Dawid.Weiss@cs.put.poznan.pl] 
Sent: Friday, June 06, 2003 7:53 AM
To: user@ant.apache.org
Subject: Embedded dynamic ANT tasks.


Dear ANT community,

I thought one day: maybe it would be fun if I could define ANT tasks INSIDE
the  ANT  script that is being executed? So it could look like this:

> <!-- Define an embedded task and use it immediately -->
> <target name="example" depends="prepare">
> 
>     <!-- define the task -->
>     <embeddedtaskdef name="counterTask"><![CDATA[
>         String message;
>         int    min;
>         int    max;
>         
>         void setMin(int min) {
>             // note how 'global' is used instead of 'this'
>             // global scope refers to the task instance anyway.
>             global.min = min;
>         }
> 
>         void setMax(int max) {
>             global.max = max;
>         }
> 
>         void setMessage(String message) {
>             global.message = message;
>         }
> 
>         void execute() {
>             if (message != null)
>                 System.out.print(message);
>             for (int i=min;i<max;i++) {
>                 System.out.print(i);
>                 if (i+1 != max) System.out.print(",");
>             }
>         }
>     ]]></embeddedtaskdef>
>     
>     <!-- use the defined task right away! -->
>     <counterTask min="0" max="10" message="The numbers from 0 to 10 are: "
/>
>     <counterTask min="5" max="20" message="And the numbers from 5 to 20
are: " />
> </target>


I've played with BSH and BCEL and the solution can be found at:

http://www.cs.put.poznan.pl/dweiss/index.php/projects/bsh-binding/index.xml?
lang=en

I  personally find it quite a useful task, even though it started purely as
a toy and a mind-exerciser :)

Regards,
Dawid

_______________________
Dawid Weiss, http://www.cs.put.poznan.pl/dweiss
Laboratory of Intelligent Decision Support Systems, Poznan UT, Poland


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message