that's what i suggested, it is even worse, pojo can be recorded to create the camelcontext and have not to be always injectable
@Charles: could even create a new API to create camel route where you inject beans instead of endpoint and beans represent endpoints! - Romain 2012/7/12 Arne Limburg <[email protected]> > 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 >
