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

Reply via email to