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