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

Jozef Hartinger jharting at redhat.com
Fri Nov 21 04:31:49 EST 2014


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