[cdi-dev] [JBoss JIRA] (CDI-562) Add the possibility to retrieve {{Bean<T>}} from one of its instance

Martin Kouba (JIRA) issues at jboss.org
Thu Sep 17 04:48:00 EDT 2015


    [ https://issues.jboss.org/browse/CDI-562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109799#comment-13109799 ] 

Martin Kouba commented on CDI-562:
----------------------------------

I think there are two similar open issues which might offer a better solution for this use case:
# CDI-515 - allow to obtain Bean metadata from {{javax.enterprise.inject.Instance}}, so that if a user wants to get the metadata the programmatic lookup would help
# CDI-10 - if we introduce a marking interface for client proxies, e.g. {{BeanProxy}}, we could also probably add {{getBean()}} method

I'm not so sure it's a good idea to add a method to the BeanManager. Let's have the following producer:
{code:java}
clas FooProducer {
   @Alpha // qualifier
   @Produces
   Foo produceAlphaFoo() {
      ...
   }
   @Bravo // qualifier
   @Produces
   Foo produceBravoFoo() {
      ...
   }
}
{code} 
How to identify a bean for any {{Foo}} instance? We would have to use some internal construct even for contextual instances of dependent beans with no interceptors/decorators. And that's not possible - such a bean does not have to be proxyable. Or am I missing something?

> Add the possibility to retrieve {{Bean<T>}} from one of its instance
> --------------------------------------------------------------------
>
>                 Key: CDI-562
>                 URL: https://issues.jboss.org/browse/CDI-562
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Beans
>    Affects Versions: 1.2.Final, 2.0-EDR1
>            Reporter: Antoine Sabot-Durand
>
> Since CDI 1.1 it's possible to inject its meta data in a bean instance wit {{@Inject Bean<T> meta;}}. Its very useful to get information like actual class or qualifier on the current bean.
> This feature is great when we own the code and can add the injection point but when the bean is defined in a third party lib this information are not reachable.
> It would be nice to have a method in the {{BeanManager}} or elsewhere being able to return the Bean<T> corresponding to a T instance or {{null}} if the instance is not managed.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list