Opps, yes you are correct. the code is addConfiguredService() and not addConfigured().
You will need to use the undocumented ant-type magic attribute: <jar ..> <fileset dir="${src.dir}"/> <service ant-type="autoservice" type="ag.core.AGApp" classpath="${build.dir}"/> </jar> Peter On Thu, Sep 11, 2008 at 2:27 PM, John5342 <[EMAIL PROTECTED]> wrote: > Hi, > >>You need to do a <typedef> and not a <taskdef> to define the new type. > I am already using a typedef. > > As in my original email: > > <target name="autoservice.taskdef" depends="autoservice.compile"> > <typedef name="autoservice" classname="ag.tools.ant.AutoService" > classpath="${autoservice.classes}"/> > </target> > > <target name="jar" depends="autoservice.taskdef,project.compile"> > <jar destfile="${build.dir}"> > <fileset dir="${src.dir}"/> > <autoservice type="ag.core.AGApp" classpath="${build.dir}"/> > </jar> > </target> > > Any more ideas? > > Thanks, John > > > 2008/9/11 Peter Reilly <[EMAIL PROTECTED]> > >> You need to do a <typedef> and not a <taskdef> to define the new type. >> >> Looking at the code: >> >> Jar: public void addConfiguredService(Service service) {} >> >> the new type should work. >> >> The reason that <taskdef> does not work is that the Sevice class does >> not extend Task >> and using <taskdef> will cause ant to use a proxy class, which will >> not match the addConfigured signature. >> >> >> Peter >> >> >> On Thu, Sep 11, 2008 at 1:03 PM, John5342 <[EMAIL PROTECTED]> wrote: >> > Hi, >> > >> > Thanks for the reply. >> > >> >>Does it produce a classpath?? >> >> >> >>What do you expect should the jar task do with the element? >> > >> > I explained in my first email but will clarify. >> > >> > My aim is to create an enhanced service element for the jar task. I >> > subclassed the Service class because i know the jar task already knows >> what >> > to do with the service element. My AutoService subclass then has an extra >> > attribute (naed classpath) that AutoService will search for possible >> > providers. For each provider AutoService finds I am simply calling >> > Service.addConfiguredProvider(). >> > >> > From what i understand from documentation is that with a few exceptions >> with >> > type conversion (such as String to Path and such) elements cause the >> > appropriate type (known from taskdef and typedef) to be constructed and >> > added to the first addXX function that can handle the type. My hope was >> that >> > since AutoService is a subclass of Service (and therefore looks and acts >> the >> > same from the jar tasks point of view) everything would just work. >> > >> > Have i misunderstood how ant works? >> > >> > Is there a way around this? >> > >> > Is the best way to just create a specialised jar task instead? >> > >> > Is easy enough to create a new jar task instead but my approach if it >> works >> > just seemed cleaner. >> > >> > >> > And in case it makes any difference: >> >>What i understood: >> >>You created a task called autoservice. >> > Service from which i inherit doesnt actually implement Task so doesnt >> seem >> > to be a task as such. >> > >> > Thanks, John >> > >> > 2008/9/11 Knuplesch, Juergen <[EMAIL PROTECTED]> >> > >> >> Hello, >> >> >> >> >> >> The error you get tells simply, that your created task is not an allowed >> >> subelement of the jar-task. >> >> You run into a syntax error. >> >> It is not possible to change the jar task (or any other task) by adding >> >> your own tasks as subelements. >> >> >> >> Probably you have to write your own jar-task, that will understand your >> >> subelement. >> >> >> >> What i understood: >> >> You created a task called autoservice. >> >> >> >> What does this task do? >> >> Does it produce a classpath?? >> >> >> >> What do you expect should the jar task do with the element? >> >> >> >> Tell us and then you will get probably some hints to do what you want. >> >> >> >> Then you have to write your own Ant-Task doing the stuff you want. >> >> >> >> -- >> >> Jürgen Knuplesch >> >> >> >> -----Ursprüngliche Nachricht----- >> >> Von: John5342 [mailto:[EMAIL PROTECTED] >> >> Gesendet: Mittwoch, 10. September 2008 20:08 >> >> An: user@ant.apache.org >> >> Betreff: Custom element for jar task. >> >> >> >> Hi, >> >> >> >> I have a rapidly evolving project which contains a large and varying >> number >> >> of service providers. I was hoping to create to create a more >> specialized >> >> version of the service element that automatically scans for providers in >> a >> >> give classpath but have run into some trouble asuming what i want to do >> is >> >> even possible. >> >> >> >> I started off by subclassing org.apache.tools.ant.types.spi.Service >> which >> >> provides the current service element and added setClassPath() and some >> lgic >> >> to automatically scan the given classpath for any classes implementing >> the >> >> the given type and add add appropriate providers to Service. I then >> added >> >> the following to my build.xml: >> >> >> >> <target name="autoservice.taskdef" depends="autoservice.compile"> >> >> <typedef name="autoservice" classname="ag.tools.ant.AutoService" >> >> classpath="${autoservice.classes}"/> >> >> </target> >> >> >> >> <target name="jar" depends="autoservice.taskdef,project.compile"> >> >> <jar destfile="${build.dir}"> >> >> <fileset dir="${src.dir}"/> >> >> <autoservice type="ag.core.AGApp" classpath="${build.dir}"/> >> >> </jar> >> >> </target> >> >> >> >> >> >> autoservice.taskdef runs fine but when i get to the jar target i get the >> >> following error: >> >> >> >> /Projects/ag/build.xml:103: jar doesn't support the nested "autoservice" >> >> element. >> >> >> >> Is what i am trying to do even possible? and if so any ideas where to go >> >> from here? >> >> >> >> Thanks, John >> >> >> >> --------------------------------------------------------------------- >> >> 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] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]