[cdi-dev] Getting injection point from Bean#create

Romain Manni-Bucau rmannibucau at gmail.com
Fri Nov 21 05:17:44 EST 2014


Ok makes sense so it means failing in getBean(Foo.class) is fine
right? Another issue is what if there is @inject InjectionPoint ip, in
Foo? This should work (validated in TCKs)


Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau


2014-11-21 10:31 GMT+01:00 Jozef Hartinger <jharting at redhat.com>:
> We may not be on the same page here. Here is my understanding of Arjan's
> setup:
>
> There is a custom Bean e.g. "FooBean implements Bean<Foo>" producing
> instances of Foo. I assume the bean is @Dependent.
>
> Then, there is a Bar class e.g.
> public class Bar {
>     @Inject Foo foo;
> }
>
> If FooBean#create() calls "InjectionPoint ip =
> getBean(InjectionPoint.class);" it means "I want to see an InjectionPoint
> representing where I am being injected". In our case this would be
> InjectionPoint representing Bar.foo field.
>
> This is no different from a producer method injecting InjectionPoint
> directly.
>
>
> On 11/21/2014 10:23 AM, Romain Manni-Bucau wrote:
>>
>> yes but what would mean any of the values? Not bound to any injection
>> it doesn't mean anything
>>
>>
>> Romain Manni-Bucau
>> @rmannibucau
>> http://www.tomitribe.com
>> http://rmannibucau.wordpress.com
>> https://github.com/rmannibucau
>>
>>
>> 2014-11-21 10:19 GMT+01:00 Jozef Hartinger <jharting at redhat.com>:
>>>
>>> It means "give me an instance of type InjectionPoint and @Default
>>> qualifier". In default setup this should be served by the built-in
>>> Bean<InjectionPoint>".
>>>
>>>
>>> On 11/21/2014 10:12 AM, Romain Manni-Bucau wrote:
>>>>
>>>> @Jozef: InjectionPoint ip = getBean(InjectionPoint.class); doesn't
>>>> mean anything in the absolute. So why should it be allowed?
>>>>
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau
>>>> http://www.tomitribe.com
>>>> http://rmannibucau.wordpress.com
>>>> https://github.com/rmannibucau
>>>>
>>>>
>>>> 2014-11-21 9:57 GMT+01:00 Jozef Hartinger <jharting at redhat.com>:
>>>>>
>>>>> The workaround is very ugly. Instead of going that path OWB should be
>>>>> fixed
>>>>> to support the simple way.
>>>>>
>>>>>
>>>>> On 11/20/2014 11:22 PM, arjan tijms wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On Thu, Nov 20, 2014 at 11:07 PM, Romain Manni-Bucau
>>>>>> <rmannibucau at gmail.com> wrote:
>>>>>>>
>>>>>>> Not sure what it means actually. InjectionPoint is highly contextual
>>>>>>> so
>>>>>>> having an exception (not a npe of course) would make sense to me.
>>>>>>>
>>>>>>> Bean#create is a "you know what you do" from my understanding since
>>>>>>> interceptors/decorators are not supported for instance so it shouldnt
>>>>>>> rely
>>>>>>> of things like that, no?
>>>>>>
>>>>>> Sure, no interceptor/decorators, but the injection point -is- there of
>>>>>> course. I can see it being set in OWB as a special property on the
>>>>>> creational context if I walk down the stack trace in a debugger when
>>>>>> my Bean#create method is being called. An injection point is something
>>>>>> that implementations of Bean could always need, for instance to
>>>>>> retrieve the name of the field into which injection is taking place.
>>>>>>
>>>>>> Of course, it being a "you know what you do", it's okay that it's not
>>>>>> as simple as having it injected into the Bean, and that some extra
>>>>>> code is needed to obtain it. As long as there is at least -a- way to
>>>>>> get hold of it.
>>>>>>
>>>>>> The method I posted in the openings post does in fact work, but it
>>>>>> feels slightly hacky. If that's an acceptable way to get the injection
>>>>>> point, then so be it. But just wondering if it's not something that
>>>>>> works by chance and may break later.
>>>>>>
>>>>>> Kind regards,
>>>>>> Arjan
>>>>>> _______________________________________________
>>>>>> cdi-dev mailing list
>>>>>> cdi-dev at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>
>>>>>> Note that for all code provided on this list, the provider licenses
>>>>>> the
>>>>>> code under the Apache License, Version 2
>>>>>> (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
>>>>>> provided on this list, the provider waives all patent and other
>>>>>> intellectual
>>>>>> property rights inherent in such information.
>>>>>
>>>>>
>


More information about the cdi-dev mailing list