Hi,

can't you just listen to the ProcessAnnotatedType event, inspect it and if you 
find an @EndpointInject i.e. add an @Inject to the AnnotatedType?

Cheers,
Arne

-----Ursprüngliche Nachricht-----
Von: Charles Moulliard [mailto:[email protected]] 
Gesendet: Donnerstag, 12. Juli 2012 14:22
An: [email protected]; [email protected]
Betreff: Util class to find annotations in a class

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

Reply via email to