I think the problem here is that we do fail in correctly handling parameterized
types in a generic way.
Having the InjectionPoint is only really important for @Dependent beans. When
you resolve them manually via BeanManager#getReference, then you don't have an
InjectionPoint at all!
If you look at all the 3 'special' beans, then the only info taken from the
injection point is about the Paremeterized types info.
But you will get the same problems if you use
BeanManager#getBeans( new TypeLiteral<MyBean<UserDbt>>(){}.getType() );
The info about the parameterized type simply will get lost ...
Btw, not sure if this works in Weld - but I think it should ;)
LieGrue,
strub
----- Original Message -----
> From: Arne Limburg <[email protected]>
> To: "[email protected]" <[email protected]>
> Cc:
> Sent: Saturday, September 24, 2011 8:22 PM
> Subject: AW: Yan: proper Handling of InjectionPoints
>
> Hi,
>
> I think the conceptual problem here is, that OWB has exactly one InstanceBean
> and one EventBean. In fact we should have one InstanceBean per
> InjectionPoint.
> This bean would have enough information to remove the ThreadLocal. But I
> don't know how much impact such change would have on the code. I'll take
> a look at that, too. Maybe that could be done with not much changes.
>
> Btw. OWB-567 is that same problem
>
> Cheers,
> Arne
>
> --
>
> Arne Limburg - Enterprise Architekt
> open knowledge GmbH, Oldenburg
> Bismarckstraße 13, 26122 Oldenburg
> Mobil: +49 (0) 151 108 22 942
> Tel: +49 (0) 441 - 4082-0
> Fax: +49 (0) 441 - 4082-111
> [email protected]
> http://www.openknowledge.de
>
> Registergericht: Amtsgericht Oldenburg, HRB 4670
> Geschäftsführer: Lars Röwekamp, Jens Schumann
>
>
> -----Ursprüngliche Nachricht-----
> Von: Mark Struberg [mailto:[email protected]]
> Gesendet: Samstag, 24. September 2011 17:01
> An: openwebbeans-dev
> Betreff: Re: Yan: proper Handling of InjectionPoints
>
> Hi!
>
> Yes, I think it was the best solution in the short time we had back then. But
> now we should aim for a better solution I think.
>
> Imo we should add the InjectionPoint info to our internal createInstance
> methods
> somehow, wdyt?
>
>
> LieGrue,
> strub
>
>
>
>
>> ________________________________
>> From: Gurkan Erdogdu <[email protected]>
>> To: "[email protected]"
> <[email protected]>; Mark
>> Struberg <[email protected]>
>> Sent: Saturday, September 24, 2011 3:04 PM
>> Subject: Yan: proper Handling of InjectionPoints
>>
>>
>> Hello Mark,
>>
>>
>> As far as I remembered, these tricks were required to satisfy circular
> injections and some other complex stuff. I have to look at the code in
> detailed
> to provide more satisfying answers!
>>
>>
>>
>> Cheers,
>>
>>
>> Gurkan
>>
>>
>>
>>
>> ________________________________
>> Kimden: Mark Struberg <[email protected]>
>> Kime: openwebbeans-dev <[email protected]> Gönderildiği
>> Tarih: 24 Eylül 2011 13:57 Cumartesi
>> Konu: proper Handling of InjectionPoints
>>
>> Hi!
>>
>> Whilst working on OWB-617 I figured that we still have this utterly ugly
> public ThreadLocals in a few of our Beans (InstanceBean, EventBean,
> InjectionPointBean).
>> All of them just need the information about the InjectionPoint they get
> injected to. Cant we just solve this somehow different?
>>
>> This is really broken because of a few reasons:
>>
>> 1.) Some of this code just crashes with a NPE if the contextual instances
> get resolved via BeanManager#getReference manually. Because in this situation
> there is no InjectionPoint and the code which usually fills the ThreadLocals
> didn't get called earlier...
>>
>> 2.) We will crash heavily (or more worse: produce wrong results) if the
>> creation is nested somehow. Because the ThreadLocal can only contain 1
>> entry for each
> thread. but if (while creating one bean) we need to inject another one of
> that
> kind, then we are doomed! This situation might happen if we have a few nested
> @Dependent beans or if we touch a subsequent member in any @Inject or
> @PostConstruct methods.
>>
>> Anyone got an idea how to solve this? Gurkan?
>> I have looked through our code and have some gut feeling already, but I
> might need some feedback from you guys!
>> We can walk through the code together via IRC or hold a quick voicemail,
> teamspeak or skype meeting if you like.
>>
>> LieGrue,
>> strub
>>
>>
>>
>>
>>
>>
>