Well, the IP resolving is always done against getTypes(). But I think this is uninamously understood the same in all impls, isn't?
The only discussion I remembered was around the getTypes() vs getBeanClass() for proxing. Thus my answers. Again: test would be cool, then we could help much faster. txs and LieGrue, strub > Am 11.09.2017 um 12:36 schrieb John D. Ament <johndam...@apache.org>: > > So remember. The question here is about injection point, not the bean > type. Some of the problems described are deployment problems. E.g. you > try to inject using a type that's forbidden because of @Typed, then that > should result in UnsatisfiedDependencies, at deployment time. > > On Mon, Sep 11, 2017 at 6:07 AM Arne Limburg <arne.limb...@openknowledge.de> > wrote: > >> Yes, that's interesting, you could get a proxy that directly extends >> Object. So you could invoke no method on that bean (except toString(), >> equals(...), hashCode(), ...) >> >> >> Does not seem to be usefull at all >> >> ________________________________ >> Von: Mark Struberg <strub...@yahoo.de.INVALID> >> Gesendet: Montag, 11. September 2017 11:13:20 >> An: openwebbeans-dev >> Betreff: Re: Odd behavior in InjectionPointProducer >> >> yes I'm also really sure it must get resolved as per the spec. >> The question is just which proxy you get once there is also a normal scope >> on the class >> >> >> @Named >> @Typed >> @ApplicationScoped >> public class MyBla extends SomeComplicatedThing implements AFewInterfaces { >> ... >> } >> >> >> LieGrue, >> strub >> >>> Am 11.09.2017 um 09:41 schrieb Arne Limburg < >> arne.limb...@openknowledge.de>: >>> >>> Quick look into the spec >> http://docs.jboss.org/cdi/spec/2.0/cdi-spec.html#name_resolution >>> >>> @Named >>> >>> @Typed() >>> >>> seems to be valid and the bean should be found by EL. >>> >>> ________________________________ >>> Von: Romain Manni-Bucau <rmannibu...@gmail.com> >>> Gesendet: Montag, 11. September 2017 09:31:38 >>> An: openwebbeans-dev >>> Betreff: Re: Odd behavior in InjectionPointProducer >>> >>> Not sure it is 100% related but looks like a bean without types so not >> even >>> sure @Named should be "matchable" since you dont match types at all (we >>> often used @Typed = @Vetoed in CDI 1.0) >>> >>> >>> Romain Manni-Bucau >>> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>> <https://blog-rmannibucau.rhcloud.com> | Old Blog >>> <http://rmannibucau.wordpress.com> | Github < >> https://github.com/rmannibucau> | >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory >>> <https://javaeefactory-rmannibucau.rhcloud.com> >>> >>> 2017-09-11 9:29 GMT+02:00 Mark Struberg <strub...@yahoo.de.invalid>: >>> >>>> Btw, what I've seen quite a few times is the following: >>>> >>>> @Named >>>> @Typed() >>>> public class MyBla extends SomeComplicatedThing implements >> AFewInterfaces { >>>> ... >>>> } >>>> >>>> Means the @Typed got purely used to not have it picked up by type but >> only >>>> via EL. >>>> And in that case the proxy in Weld is most likely not working? >>>> Is this a valid use case? >>>> >>>> LieGrue, >>>> strub >>>> >>>>> Am 11.09.2017 um 09:23 schrieb Romain Manni-Bucau < >> rmannibu...@gmail.com >>>>> : >>>>> >>>>> Surely the one to test: >>>>> https://github.com/cdi-spec/cdi-tck/blob/master/impl/src/ >>>> main/java/org/jboss/cdi/tck/tests/lookup/injectionpoint/dynamic/ >>>> DynamicInjectionPointTest.java >>>>> >>>>> >>>>> Romain Manni-Bucau >>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>>> <https://blog-rmannibucau.rhcloud.com> | Old Blog >>>>> <http://rmannibucau.wordpress.com> | Github <https://github.com/ >>>> rmannibucau> | >>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory >>>>> <https://javaeefactory-rmannibucau.rhcloud.com> >>>>> >>>>> 2017-09-11 9:20 GMT+02:00 Arne Limburg <arne.limb...@openknowledge.de >>> : >>>>> >>>>>> I'm with Mark here, >>>>>> >>>>>> InjectionPoint#getType() should return a ParameterizedType >> Instance<Foo> >>>>>> >>>>>> So in the code below we simply should return parameterizedType I >> think. >>>>>> >>>>>> Would that pass the TCK? If yes, we definitely should file a TCK >> issue, >>>>>> there seems to be a test missing. >>>>>> >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Arne >>>>>> >>>>>> ________________________________ >>>>>> Von: Mark Struberg <strub...@yahoo.de.INVALID> >>>>>> Gesendet: Montag, 11. September 2017 09:04:41 >>>>>> An: openwebbeans-dev >>>>>> Betreff: Re: Odd behavior in InjectionPointProducer >>>>>> >>>>>> Hmm, if you have a class >>>>>> >>>>>> public class Bla { >>>>>> private @Inject Instance<Foo> myInstance; >>>>>> } >>>>>> >>>>>> then I'd asssume that the InjectionPoint.getType for myInstance would >> be >>>>>> Instance<Foo> and not Foo alone. >>>>>> >>>>>>> The problem is that Bean.getBeanClass() can never be null, by >>>> definition, >>>>>>> but also should not be used for type safe resolution (we actually >> had a >>>>>>> discussion about this on the EG list as I had the opposite belief). >>>>>> >>>>>> Yes, there was a discussion which never got finished... >>>>>> >>>>>> Weld guys assume that they can infere the proxy type of a bean just by >>>>>> getTypes(). >>>>>> I don't believe that. Especially if @Typed is involved or if the real >>>>>> AnnotatedType got modified then it is definitely not possible. >>>>>> At least it's pretty expensive to detect. Would get my head around it >>>>>> again tbh. >>>>>> >>>>>> In OWB we introduced an own method getReturnType() in OwbBean. >>>>>> This get's evaluated and cached based on a few criteria. >>>>>> Most of the time it simply uses the getBeanClass() type. >>>>>> >>>>>> I'll have to dig deeper into your sample to understand what you wanted >>>> to >>>>>> do with it. >>>>>> >>>>>> Could you probably put your use case in an OWB unit test and ship it >> as >>>>>> patch? >>>>>> >>>>>> The only thing you have to do is to extend AbstractUnit test and then >>>> use: >>>>>> startcontainer(ClassX.class, ClassY.class, ...); >>>>>> >>>>>> >>>>>> txs and LieGrue, >>>>>> strub >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> LieGrue, >>>>>> strub >>>>>> >>>>>>> Am 10.09.2017 um 22:54 schrieb John D. Ament <johndam...@apache.org >>> : >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I'm running some tests locally using OWB and Instance objects. I >>>> noticed >>>>>>> that when the injection point is Instance<Foo> and I attempt to get >> an >>>>>>> injectable reference to the InjectionPoint, I get a very odd value >> for >>>>>>> InjectionPoint.getType(). As far as I understand it, this value >> should >>>>>> be >>>>>>> the type being injected into, e.g. Foo in my case. What I actually >> get >>>>>>> back is the value of Bean.getBeanClass(). That makes very little >>>> sense. >>>>>>> As best as I can tell, the following code snippet is the cause: >>>>>>> >>>>>>> if (ParameterizedType.class.isInstance(type)) >>>>>>> { >>>>>>> ParameterizedType parameterizedType = >>>>>>> ParameterizedType.class.cast(type); >>>>>>> if (parameterizedType.getRawType() == Instance.class) >>>>>>> { >>>>>>> Bean<InjectionPoint> bean = >>>>>>> creationalContextImpl.getBean(); >>>>>>> return new InjectionPointDelegate( >>>>>>> injectionPoint, >>>>>>> bean.getBeanClass() != null ? >>>>>>> bean.getBeanClass() : parameterizedType.getActualTypeArguments()[0]); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> The problem is that Bean.getBeanClass() can never be null, by >>>> definition, >>>>>>> but also should not be used for type safe resolution (we actually >> had a >>>>>>> discussion about this on the EG list as I had the opposite belief). >>>> But >>>>>> I >>>>>>> do believe that the else value is in fact what should always be >> used, I >>>>>>> always should be getting the expected parameterized value. >>>>>>> >>>>>>> If you guys agree, I can submit a patch to fix this. >>>>>>> >>>>>>> John >>>>>> >>>>>> >>>>>> . >>>>>> >>>> >>>> >> >>