John is right, we should likely check for @Any in ThirdPartyBean and add it if 
missing.


LieGrue,
Strub


> Am 28.12.2016 um 14:44 schrieb Romain Manni-Bucau <rmannibu...@gmail.com>:
> 
> Almost there too except on "declare qualifier" which was for me through
> annotation which implied custom beans had to do it themself. Not sure to be
> honest.
> 
> @Mark: how do you read it on your side?
> 
> 
> 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 14:42 GMT+01:00 John D. Ament <johndam...@apache.org>:
> 
>> It does not.  I'm not sure I should add it though.  When I look at the
>> relevant section of the spec
>> http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#programmatic_lookup
>> <http://docs.jboss.org/cdi/spec/2.0.EDR2/cdi-spec.html#programmatic_lookup>
>> the
>> example mentions that the resulting bean only has the selected qualifier.
>> 
>> In addition section 2.3.1
>> http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#builtin_qualifiers says
>> "Every bean has the built-in qualifier @Any, even if it does not explicitly
>> declare this qualifier," so it sounds like the correct thing to do is to
>> add @Any to any custom registered beans.
>> 
>> So that means the test is right, just something missing when
>> programmatically adding beans.
>> 
>> John
>> 
>> On Wed, Dec 28, 2016 at 8:33 AM Romain Manni-Bucau <rmannibu...@gmail.com>
>> wrote:
>> 
>>> I'm not sure about this one since pretty much all beans should match Any,
>>> is my assumption your database bean doesnt add it correct?
>>> 
>>> 
>>> 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 14:29 GMT+01:00 John D. Ament <johndam...@apache.org>:
>>> 
>>>> 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 <
>>> rmannibu...@gmail.com>
>>>> 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 <rmannibu...@gmail.com
>>> :
>>>>> 
>>>>>> 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 <johndam...@apache.org>:
>>>>>> 
>>>>>>> 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 <
>>>>> rmannibu...@gmail.com
>>>>>>>> 
>>>>>>> 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" <johndam...@apache.org>
>> 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