Ok, I was able to get a decent reproducer on this, wrote up my notes in https://issues.apache.org/jira/browse/OWB-1216
John On Mon, Sep 11, 2017 at 8:21 AM Mark Struberg <strub...@yahoo.de.invalid> wrote: > 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 > >>>>>> > >>>>>> > >>>>>> . > >>>>>> > >>>> > >>>> > >> > >> > >