Looks like you already applied a fix.  There's still one issue.  Your bean
behind CDI.current() has an any qualifier on it.  AFAIK it should not.
This causes programmatic lookup to try to include Any in the qualifiers
which doesn't make sense.  Since you fixed the NPE now I'm able to see that
(

Qualifiers:
[@javax.enterprise.inject.Any(),@ws.ament.hammock.jpa.Database(value="__default")]
)

I'm inclined to say that InstanceBean should be extended to have a second
constructor which takes qualifiers (since @any is expected in @Inject @Any
Instance<Blah>) and pass that up the chain.  Can be as simple as calling
the other constructor in BeanAttributesImpl.

I haven't tried it yet, but I suspect you may need to strip Any from the
qualifiers as well.  I think the
test InstanceQualifierInjectionPointTest.checkQualfiers may be incorrect as
well.

I can give you a patch to fix this if you're in agreement that it's right
course of action.

John

On Wed, Dec 28, 2016 at 5:13 AM Romain Manni-Bucau <[email protected]>
wrote:

> think I spotted the issue(s):
>
> 1. a NPE when missing an injection point (trivial to solve)
> 2. we dont strip Default qualifier when user
> select(AnotherQualifier.LITERAL) which leads to something pretty much never
> resolvable
>
> will check if i can fix it in my spare time today
>
>
> 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>
>
> 2016-12-28 10:11 GMT+01:00 Romain Manni-Bucau <[email protected]>:
>
> > looks like a bug, we reused InstanceBean (https://github.com/apache/
> > openwebbeans/blob/trunk/webbeans-impl/src/main/java/
> > org/apache/webbeans/container/OwbCDI.java#L45) but this only works with
> > injection points. Using our injection resolver would work (from the
> > webbeanscontext).
> >
> > We have a release coming very soon, do you want to propose a patch? Happy
> > to help if you need.
> >
> >
> > 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>
> >
> > 2016-12-28 1:08 GMT+01:00 John D. Ament <[email protected]>:
> >
> >> Its a single classloader.  Programmatic lookup is just
> >>
> >> CDI.current().select(SomeClass.class).select(someAnnotationL
> >> iteral).get();
> >>
> >> This fails, I would imagine, at least last time I did this on OWB,
> because
> >> there's no injection point defined
> >>
> >> @Inject
> >> @SomeAnnotation
> >> private SomeClass sc;
> >>
> >> and the bean has scope dependent.
> >>
> >> John
> >>
> >> On Tue, Dec 27, 2016 at 6:29 PM Romain Manni-Bucau <
> [email protected]
> >> >
> >> wrote:
> >>
> >> > Hi John
> >> >
> >> > What does the lookup look like? Using the related bean manager un
> >> several
> >> > apps with success.
> >> >
> >> > Side note: is your classloader well setup?
> >> >
> >> >
> >> > Le 27 déc. 2016 23:29, "John D. Ament" <[email protected]> a
> écrit
> >> :
> >> >
> >> > > Hi,
> >> > >
> >> > > So I'm starting to run into my old friend, where instance doesn't
> work
> >> > the
> >> > > same in OWB and Weld.  Basically anytime I use CDI.current() to
> >> resolve a
> >> > > bean, it fails.  The same lookup works when using
> >> > BeanManager.getReference,
> >> > > or even the DeltaSpike utilities.
> >> > >
> >> > > My understanding is that I should be able to look up any bean via
> >> > > CDI.current() not just beans that have injection targets.  So I was
> >> > > wondering, would it make sense to relax the requirement on injection
> >> > > points?
> >> > >
> >> > > John
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to