You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Charles Moulliard (JIRA)" <ji...@apache.org> on 2012/09/03 12:20:08 UTC

[jira] [Commented] (CAMEL-5553) support injection of Endpoint and @Produce @Consume annotations

    [ https://issues.apache.org/jira/browse/CAMEL-5553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13447194#comment-13447194 ] 

Charles Moulliard commented on CAMEL-5553:
------------------------------------------

As @EndpointInject is a Camel annotation which is currently processed by the DefaultCamelBeanPostProcessor of Camel, CDI / BeanManager of the CDI container will not be able to resolve it. When a DefaultCamelContext is created, Camel will looks for an Injector which is provided by spring, Guice. If it fails to find it, then it will use the DefaultInjector which will use the DefaultCamelBeanPostProcessor where injectFields, injectMethods will allow Camel ro resolve the @Produce, @Consume, @EndpointInject camel annotations.
                
> support injection of Endpoint and @Produce @Consume annotations
> ---------------------------------------------------------------
>
>                 Key: CAMEL-5553
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5553
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-cdi
>            Reporter: james strachan
>
> we don't yet support the various camel annotation injections in CDI yet; we should support the same capabilities as we have in spring/guice
> http://camel.apache.org/bean-integration.html
> http://camel.apache.org/bean-injection.html
> I guess a more CDI way to do endpoint injection might be to have an annotation for endpointURI specification. Then you'd either use 
> {code}
> public class MyBean { 
>   // named reference injection
>   @Inject @Named("foo") Endpoint bar;
>   // URI based injection
>   @Inject @Uri("mock:whatnot") MockEndpoint foo;
> ...
> }
> {code}
> Rather than using the DI-agnostic @EndpointInject annotation - though I guess we could support it too (though having Inject twice looks a bit icky and not as DRY)...
> {code}
> public class MyBean { 
>   // using current annotation...
>   @Inject @EndpointInject(uri = "mock:whatnot") MockEndpoint bar;
> ...
> }
> {code}
> For handling @Consume it would be nice to avoid having to use @Inject too as that seems a bit odd (since there's no injection going on).
> For @Produce I guess we could support a straight @Inject of a ProcessorTemplate; allowing use of @Uri annotation to specify the default URI to send to

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira