[cdi-dev] [JBoss JIRA] (CDI-610) Add API to obtain current injection point from Bean#create

Martin Kouba (JIRA) issues at jboss.org
Wed Sep 20 02:59:00 EDT 2017


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

Martin Kouba edited comment on CDI-610 at 9/20/17 2:58 AM:
-----------------------------------------------------------

Maybe we don't need to extend the API but instead clarify that for a {{@Dependent}} bean it should be possible to obtain {{InjectionPoint}} from within {{Contextual.create()}} (e.g. using [BeanManager.createInstance().select(InjectionPoint.class).get()|https://github.com/weld/core/blob/master/tests-arquillian/src/test/java/org/jboss/weld/tests/injectionPoint/custom/JuicyBarBean.java#L41]) and during invocation of a callback specified by {{BeanConfigurator.produceWith()}} (e.g. https://github.com/weld/core/blob/master/tests-arquillian/src/test/java/org/jboss/weld/tests/injectionPoint/beanConfigurator/BeanConfiguratorExtension.java#L40).

Note that {{CreationalContext}} is currently bound to a bean instance, not an injection point, e.g. an instance might be reused when resolving all injection points of a bean instance. (of course this is just an impl detail)


was (Author: mkouba):
Maybe we don't need to extend the API but instead clarify that for a {{@Dependent}} bean it should be possible to obtain {{InjectionPoint}} from within {{Contextual.create()}} (e.g. using {{BeanManager.createInstance().select(InjectionPoint.class).get()}}) and during invocation of a callback specified by {{BeanConfigurator.produceWith()}} (https://github.com/weld/core/blob/master/tests-arquillian/src/test/java/org/jboss/weld/tests/injectionPoint/beanConfigurator/BeanConfiguratorExtension.java#L40).

Note that {{CreationalContext}} is currently bound to a bean instance, not an injection point, e.g. an instance might be reused when resolving all injection points of a bean instance. (of course this is just an impl detail)

> Add API to obtain current injection point from Bean#create
> ----------------------------------------------------------
>
>                 Key: CDI-610
>                 URL: https://issues.jboss.org/browse/CDI-610
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Portable Extensions
>            Reporter: arjan tijms
>
> There's currently not a clear way on how to obtain the *current* injection point (if any) from {{Bean<T>#create}}.
> A previously somewhat accepted way (though not specified) was:
> {code}
>   Bean<? extends Object> bean = beanManager.resolve(beanManager.getBeans(InjectionPoint.class));
>   InjectionPoint injectionPoint = (InjectionPoint) beanManager.getReference(bean, InjectionPoint.class, creationalContext);
> {code}
> This however broke in some version of Weld.
> Since getting the injection point is an often used feature in producers, I'd like to propose to introduce an easy API for this, so {{Bean<T>}} implementations can use this just as easily. E.g. something like: {{BeanManager#getCurrentInjectionPoint()}}.
> Also see: http://cdi-development-mailing-list.1064426.n5.nabble.com/Getting-injection-point-from-Bean-create-td5710505i20.html



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the cdi-dev mailing list