openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Louis MONTEIRO <jeano...@gmail.com>
Subject Re: Util class to find annotations in a class
Date Thu, 12 Jul 2012 12:27:32 GMT
Hi Charles,

There are different ways to do. xbean-finder is really great in that area
but I know a lot of projects have their own "framework".
That leads to over time consuming in TomEE for example because, JSF, CDI,
EJB, etc ... do class scanning looking for annotation for example.

I already discuss with Mark I guess and David for sure about that topic and
the opportunity to create a commons package.
BTW, for the moment, xbean is part of geronimo.

Jean-Louis



2012/7/12 Charles Moulliard <cmoulliard@gmail.com>

> Hi,
>
> Is there a DeltaSpike or OpenWebbeans util class that I could use to scan
> classes and find annotations (which have been of course designed without
> CDI in mind) and next inject them ?
>
> Camel provides @EndpointInject(uri or ref), @Produce(uri) and @Consume
> annotations to inject Endpoint definition or Producer/ConsumerTemplate into
> CamelContext.
>
> We have to call getInjectionValue(type, uri, endpointRef,
> injectionPointName, null, null) method of CamelPostProcessorHelper tevery
> time such annotation is discovered o add such injected bean. Camel-guice,
> camel-spring and camel-blueprint projects proposes such impl (which is not
> CDI compliant). I would like to implement this in camel-cdi (where we
> already have defined a CamelInjector) and tries to find the best strategy.
>
> Is there something equivalent to what we have here in camel-guice ?
>
>         bindAnnotationInjector(EndpointInject.class,
> EndpointInjector.class); where bindAnnotationInjector is a method of this
> class GuiceyFruitModule
>  and EndpointInjectorClass is the class containing the code to find
> annotations wiithin a class
>
> public class EndpointInjector extends CamelPostProcessorHelper implements
>     AnnotationMemberProvider<EndpointInject> {
>
>     @Inject
>     public EndpointInjector(CamelContext camelContext) {
>         super(camelContext);
>     }
>
>     public Object provide(EndpointInject inject, TypeLiteral<?>
> typeLiteral, Field field) {
>         Class<?> type = field.getType();
>         String injectionPointName = field.getName();
>         String uri = inject.uri();
>         String endpointRef = inject.ref();
>
>         return getInjectionValue(type, uri, endpointRef,
> injectionPointName, null, null);
>     }
>
> Regards,
>
> Apache Committer
>
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
>

Mime
View raw message