On 1/4/07, Steve Loughran <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] wrote:
>> 2)
>> The java api of some types in ant were not really designed for
>> ease of use.
>
> It's much easier to use <path> instead of <fileset>, e.g.
>
> Compare the execute()-implementation between [1] and [2].
>
>
ahh, but as of ant 1.7 everything is a resource, which is something you
can iterate over. If you store everthing as resouce collections, you
just get an iterator() and let the tasks sort the details out for
themselves:
http://antbook.cvs.sourceforge.net/antbook/examples/sections/extending/ch17_tasks/filesize/first/src/org/antbook/tasks/filesize/ResourceSizeTask.java?view=markup
the best bit, filesets have an iterator() method too, and
class DirSet extends AbstractFileSet implements ResourceCollection
so if you get a dirset, you can call iterator() and get it to do all the
heavy lifting.
Summary: use the resource collection APIs. If there is one limitation,
it is that even though the ResourceCollection Types implement
iterator(), they cannot implement the java.lang.Iterable interface to
say "use us in foreach()", because of course that is java5+ only. This
I think that if we say that ant needs to be compiled with java5, we
can make use of the Iterable interface, while still allowing ant
to be used in java1.3 and java1.4 env.
This would make script intergration much nicer.
Peter
stops you going
for(File d:dirset) {
...
}
-steve
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]