Hi Felix,

If this can help, you can take a look at [1]: It's a Bnd plugin I wrote in
the past for
Marcel's DependencyManager.

Basically, when writing a bnd plugin, you have to implement the
"aQute.bnd.service.AnalyzerPlugin" interface, which is the entry point for
all bnd plugins. This interface contains an "analyzeJar" method, which
takes as parameter an "Analyser" class. Along with this Analyzer, a
"ClassDataCollector" can then be used to scan classes (.class) at build
time, in order to scan annotations and generate corresponding descriptors.

I don't fully master the code from scrplugin, but as far as I remember,
Carsten abstracted the scrplugin engine in the
org.apache.felix.scrplugin.SCRDescriptorGenerator.

So I imagine that it could be possible to write a bnd plugin which could
reuse this ScrDescriptorGenerator ? Another way could consist in writing a
new plugin, based on bndlib "ClassDataCollector" (in this case, it might be
better to take the existing ds bndplugin and adapt it to the felix ds
annotations).

So, if the ScrDescriptorGenerator could be reused, I then imagine something
like:

public class FelixDSAnnotationPlugin implements AnalyzerPlugin {
  public boolean analyzeJar(Analyzer analyzer) {
         // Reuse the scr generator engine:
         SCRDescriptorGenerator generator = new SCRDescriptorGenerator(...)
         ...

         // Get result
         Result result = generator.execute()

         // And include the generated descriptors in the artifact using
         // analyzer.getJar().putResource(...)
}


Hope this helps.
/Pierre

[1]
http://svn.apache.org/viewvc/felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationPlugin.java



On Sat, Mar 16, 2013 at 4:39 PM, Felix Meschberger <[email protected]>wrote:

> Hi
>
> How complex would it be to create a bndtools plugin for our annotations ?
>
> Regards
> Felix
>
> -------- Original Message --------
> Subject: Re: BndTools and DS 1.2 Annotations
> From: Neil Bartlett <[email protected]>
> To: [email protected]
> CC:
>
>
>
>
> Bndtools doesn't support the Felix SCR annotations, and I have no plans to
> support them. Frankly I'd like to see at least one of these sets of
> annotations die out, as it's confusing having three.
>
> To build with the Felix annotations you can use the maven-scr-plugin, or
> the ANT task here: http://felix.apache.org/downloads.cgi#ant. Neither are
> integrated with the Bndtools incremental builder, so you would need to run
> a full build in order to get your XML generated.
>
> Regards,
> Neil
>
> On Sat, Mar 16, 2013 at 7:53 AM, Hsufeng Ko <[email protected]<mailto:
> [email protected]>> wrote:
> Oh, so there are Bnd annotation, standard annotation, felix annotations,
> and they are all different. Thanks for pointing that out to me, Neil.
>
> However, I really like to be able to use/apply Felix scr annotations. Is
> there a way that I can generate XML Descriptor using Bndtools within
> Eclipse? If not, how do people usually go about generating XML Descriptor
> from Felix annotations?
>
> On Friday, March 15, 2013 9:34:01 PM UTC-7, Neil Bartlett wrote:
> You have not use the standard annotations! The clue is in the package
> name: "org.apache.felix.scr.annotations" ;-)
>
> The *standard* annotations use the package name
> "org.osgi.service.component.annotations".
>
> Regards,
> Neil
>
> On Sat, Mar 16, 2013 at 2:28 AM, Hsufeng Ko <[email protected]> wrote:
> How do I switch to use DS 1.2 Annotations for my Eclipse project using
> Bndtools plugin?
>
> Using Bndtools in Eclipse, I went to my project's bnd.bnd file and toggle
> between 'Bnd Annotations' and 'DS 1.2 Annotations'
>
> When I choose to use 'Bnd Annotations', I had my java code annotated as
> below,
>
> import aQute.bnd.annotation.component.*;
> import org.example.api.*;
>
>  @Component
>  public class ExampleComponent implements Greeting {
>  public String sayHello(String name) {
>  return "Hello " + name;
>  }
> }
>
> As a result of the build, the generated bundle jar was built successfully
> with OSGI-INF/org.example.ExampleComponent.XML generated and included.
>
> However, when I chose to use 'DS 1.2 Annotations' toward my java code
> annotated as below (with label=..., description=...),
>
>
> package org.example;
>
> import org.apache.felix.scr.annotations.Component;
> import org.apache.felix.scr.annotations.Properties;
> import org.apache.felix.scr.annotations.Property;
> import org.apache.felix.scr.annotations.PropertyUnbounded;
> import org.apache.felix.scr.annotations.Reference;
> import org.apache.felix.scr.annotations.Service;
> import org.example.api.*;
>
> @Component(label = "label", description="description", metatype=true,
> immediate=true)
>
> public class ExampleComponent implements Greeting {
> public String sayHello(String name) {
> return "Hello " + name;
> }
> }
>
>
> I could compile and build but it did not generate
> OSGI-INF/org.example.ExampleComponent.XML at all as if the annotation
> didn't exist. :(
>
>
> I'm new to this and trying to use Bndtools for OSGi development but I
> couldn't get the above simple standard DS annotation to work. What step did
> I miss? Or Bndtools simply is not for standard DS so it failed silently?
>
> On Wednesday, January 23, 2013 12:07:04 AM UTC-8, Neil Bartlett wrote:
> I disagree with BJ. The standard DS annotations are more limited than the
> bnd ones, for example they have no support for metatype XML generation. For
> this reason, Peter and I (and several others) are continuing to use the bnd
> annotations, and we do intend to keep them up to date with future changes
> in the DS specification.
>
> Some people dislike using the bnd annotations for aesthetic reasons,
> because they are in the "biz.aQute" namespace, so the "org.osgi" namespace
> of the standard annotations is seen as preferable. Personally I don't find
> this particularly important, especially as both sets of annotations are
> build-time only and do not create runtime dependencies.
>
> Neil
>
>
>
>
> On Wed, Jan 23, 2013 at 4:43 AM, BJ Hargrave <[email protected]> wrote:
>
>
> On Jan 22, 2013, at 22:24 , St Clair Clarke <[email protected]> wrote:
>
> >
> > Considering that there should be minimal evolution in bnd annotation,
> would you suggest/recommend it to be the more stable form of the two to use?
>
> The DS annotations are the best choice as OSGi will update them when the
> DS spec is updated. This will of course need a corresponding update in bnd
> which processes the annotations.
>
> --
>
> BJ
>
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "bndtools-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "bndtools-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]<mailto:
> bndtools-users%[email protected]>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "bndtools-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

Reply via email to