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
>> 
>> 
>> 
>> 
>> 
>> 
>

Reply via email to