Sorry, just see now that you opened a bug [1]. I´ll have a look at that. Jan
[1] http://issues.apache.org/bugzilla/show_bug.cgi?id=37328 >-----Ursprüngliche Nachricht----- >Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] >Gesendet: Mittwoch, 2. November 2005 10:35 >An: dev@ant.apache.org >Betreff: AW: Guidelines for executing delegate tasks? > >Hello Jeffrey, > >as far as I can see >- the perform() method is called by Ant and >- the execute() is implemented by the taskwriter. > >Usually you are overwriting the Task.execute() method - which >has an empty implementation in Task [1]. The Task.perform() >does event firing (task starts/ends) framework internal >configuration and calls the execute() method. So overwriting >this method seems to be the "right" way. > >Coming from my idea that a project holds several targets the >project should call a method from the target to perform all >the tasks work. So I did a look at Target [2]. There are two >methods: performTasks() and execute(). The perform does only >event firing (target starts/stops) and calls the execute() >method. That method iterates over all tasks and calls that >perform() method! >So the stack is > target.performTasks() > target.execute() > task.perform() > task.execute() > > >Now lets have a look at the Definer task [3] ... öh ... is >this the task you mean? >What would your patch be? Maybe you could send it to the list. > > >Jan > > >[1] >http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apa >che/tools/ant/Task.java >[2] >http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apa >che/tools/ant/Target.java >[3] >http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apa >che/tools/ant/taskdefs/Definer.java > > >>-----Ursprüngliche Nachricht----- >>Von: Jeffrey E Care [mailto:[EMAIL PROTECTED] >>Gesendet: Dienstag, 1. November 2005 23:50 >>An: dev@ant.apache.org >>Betreff: Guidelines for executing delegate tasks? >> >>All: >> >>I've recently encountered some difficulties with the multithreaded >>build extensions that I've mentioned on the list before. >> >>As part of the Mantis project that we use to build WAS we >have a custom >>logger. This logger uses a different banner format >>([project/target/task]) from the default logger. The current >problem is >>that the banners on messages from the sub-builds have the >wrong context >>information; specifically they either no context (i.e. the banner is >>empty) or they have the parent project's context. >> >>I've done a lot of debugging in the past few days and found that the >>parent context bit is due to a bug in our code, so mea culpa >there. But >>the no context bit I traced to some code in oata.taskdefs.Definer. >>Definer creates an Antlib task instance to load our antlib. Now, >>creating a "delegate task" >>is a fairly common pattern; I do it in Mantis a lot. The >problem (as I >>see it anyway) is that Definer calls "perform" >>instead of "execute" to make the Antlib instance do its work. >>Because "perform" is used that blows away the currently >registered task >>for the current thread. >>I've overridden Definer locally to call "execute" instead of >"perform" >>and my problems seem to have cleared up with no side-effects. (Also >>interesting that this isn't really threading related - it >happens even >>when everything is running on the main thread.) >> >>So, getting to the point, is there a general policy regarding >>"execute"/"perform" for delegate task instances? Based on my >experience >>I would think that "execute" would be preferred, so I wasn't sure if >>"perform" was required in this instance. I've prepared a patch for >>Definer, but I didn't want to open a bugzilla report until we >had some >>discussion here on the list. >> >>Cheers, >>JEC >>-- >>Jeffrey E. Care ([EMAIL PROTECTED]) >>WebSphere v7 Release Engineer >>WebSphere Build Tooling Lead (Project Mantis) >> > >--------------------------------------------------------------------- >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]