Hi Caspar,

Thanks for your reply. I've glanced over 
http://www.osgi.org/download/osgi-early-draft-2011-09.pdf and noticed that the 
annotations are defined with @Retention(value=RetentionPolicy.CLASS) .  I've 
also found that the same will happen with the SCR annotations from Felix in the 
next release ( https://issues.apache.org/jira/browse/FELIX-3247 ) . 

That means that the annotations will not be available at runtime, so I will not 
be able to configure components by myself in unit tests. I assume that Felix 
annotations will follow the official ones, so it makes little sense to argue 
for making them available at runtime.

Robert

> -----Original Message-----
> From: Caspar MacRae [mailto:[email protected]]
> Sent: Friday, April 13, 2012 3:48 PM
> To: [email protected]
> Subject: Re: Proposal to make org.apache.felix.scr.annotations
> available at Runtime
> 
> Hi Robert,
> 
> In a broader scope this will happen for RFC 0172 Declarative Services
> Annotations (runtime processing of SCR components), however this brings
> with it standardised annotations.
> 
> cheers,
> Caspar
> 
> 
> On 13 April 2012 13:33, Robert Munteanu <[email protected]> wrote:
> 
> > Hi,
> >
> > I've noticed that the annotations from
> org.apache.felix.scr.annotations
> > are declared with @Retention(RetentionPolicy.SOURCE) . I think the
> > following use cases would benefit from the annotations being
> available at
> > runtime .
> >
> > 1. Configuring component instances outside a OSGi container
> >
> > I often develop components which I want to test in plain JUnit tests
> > rather than in a container. These components have references which I
> need
> > to satisfy in order for the unit test to run. Since the annotations
> are
> > available only in the source file, I am unable to  inspect the
> declared
> > references and inject them in a generic manner.
> >
> > The alternative is to manually configure each reference, but that
> gets
> > tedious pretty fast.
> >
> > 2. Processing SCR annotations in a JSR-269 annotation processor
> >
> > Having the annotations available to the processor ( strictly speaking
> only
> > RetentionPolicy.CLASS is required ) would allow much simpler
> integration of
> > SCR processing since the processor would only need to be available as
> a JAR
> > on the compile classpath, rather than a separate maven plugin
> invocation or
> > explicit ant task call.
> >
> > Above the other two use cases, having annotations at runtime can
> generally
> > ease integration with other systems which can inspect the component
> > configuration at runtime.
> >
> > The single downside that I see is that the annotations will increase
> the
> > file size of the deployed bundles ( although I don't think it will be
> a
> > huge increase ).
> >
> > I'm willing to prepare a patch, but would like your opinion first.
> >
> > Thanks,
> >
> > Robert
> >

Reply via email to