[cdi-dev] ProcessAnnotatedType & Bean Discovery mode

Martin Kouba mkouba at redhat.com
Tue Jul 25 02:56:13 EDT 2017


This is a problem of the test environment. Hammock tests are using 
arquillian-weld-embedded which does NOT support implicit bean archives 
(it's using flat deployment structure). I.e. Weld-specific Bootstrapper 
is not used at all. Instead, Weld is started within 
org.jboss.arquillian.container.weld.embedded.WeldMockContainer.deploy().

I believe that arquillian-container-se [1] would be a better match for 
such test cases.

Martin

[1]
https://github.com/arquillian/arquillian-container-se

Dne 24.7.2017 v 16:59 John Ament napsal(a):
> In this specific case, that may be what's happening.  I also am seeing 
> it on Entity classes.
> 
> 
> John D. Ament
> Cloud Software Architect**
> 
> Sparta Systems
> 
> p. 609.807.5466 |m.609.553.6130
> 
> john.ament at spartasystems.com <mailto:john.ament at spartasystems.com> 
> |www.spartasystems.com 
> <http://www.spartasystems.com><http://www.spartasystems.com/>
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> *From:* Matej Novotny <manovotn at redhat.com>
> *Sent:* Monday, July 24, 2017 10:36 AM
> *To:* John Ament
> *Cc:* Tomas Remes; cdi-dev
> *Subject:* Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
> Hi John,
> 
> I took a look at the Hammock test and I think you are sailing 
> unspecified waters, so to say.
> You are right that Weld picks up DefaultListener as a bean even without BDA.
> 
> In spec 2.0 section 26.2, there is this:
> "In Java EE, the container automatically discovers EJB session beans and 
> **other Java EE component class supporting injection**, in bean archives 
> like it does for managed bean as defined in Type and Bean discovery."
> 
> So in EE, Listeners should be picked up with `annotated` even without 
> having BDA.
> 
> Now, hammock is using a combination of Weld SE + Servlet right?
> So the EE isn't your case, but then again spec doesn't talk about 
> servlet at all.
> Therefore, I would say this is up to implementations to decide.
> 
> Thoughts,opinions?
> 
> Matej
> 
> ----- Original Message -----
>> From: "John Ament" <john.ament at spartasystems.com>
>> To: "Tomas Remes" <tremes at redhat.com>
>> Cc: "Matej Novotny" <manovotn at redhat.com>, "cdi-dev" <cdi-dev at lists.jboss.org>
>> Sent: Monday, July 24, 2017 2:49:53 PM
>> Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> 
>> Sorry, should have been "DefaultListener"
>> 
>> 
>> John
>> 
>> 
>> ________________________________
>> From: Tomas Remes <tremes at redhat.com>
>> Sent: Monday, July 24, 2017 7:59 AM
>> To: John Ament
>> Cc: Matej Novotny; cdi-dev
>> Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> 
>> 
>> DefaultServlet appears to have @Dependent annotation.
>> 
>> https://github.com/hammock-project/hammock/blob/hammock-1.5/web-tck/src/main/java/ws/ament/hammock/web/tck/DefaultServlet.java#L31
>> 
>> T.
>> 
>> ----- Original Message -----
>> From: "John Ament" <john.ament at spartasystems.com>
>> To: "Matej Novotny" <manovotn at redhat.com>
>> Cc: "cdi-dev" <cdi-dev at lists.jboss.org>
>> Sent: Monday, July 24, 2017 1:35:16 PM
>> Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> 
>> 
>> 
>> The issue has to do with ProcessAnnotatedType firing in a bean archive of
>> discovery mode "annotated." I think we all agree that if the discovery mode
>> is all with a trim flag, it works correctly.
>> 
>> 
>> 
>> 
>> It appears that if you have an Arquillian test in Weld, where a class has no
>> bean defining annotations, it still has a PAT fired. If you look at
>> https://github.com/hammock-project/hammock/blob/hammock-1.5/web-tck/src/main/java/ws/ament/hammock/web/tck/ServletTest.java
>> you'll see it includes a DefaultServlet class, which has no bean defining
>> annotations. In Weld, this generates a PAT, but in OWB it does not.
>> 
>> 
>> 
>> 
>> John
>> 
>> 
>> 
>> 
>> 
>> 
>> From: Matej Novotny <manovotn at redhat.com>
>> Sent: Monday, July 24, 2017 6:38 AM
>> To: John Ament
>> Cc: Antoine Sabot-Durand; Martin Kouba; cdi-dev
>> Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> What case exactly do you think Weld does incorrectly?
>> 
>> If you have beans.xml `all` with `<trimm/>`, you should be firing PAT for
>> all. That's what me and Martin said.
>> 
>> Matej
>> 
>> ----- Original Message -----
>> > From: "John Ament" <john.ament at spartasystems.com>
>> > To: "Antoine Sabot-Durand" <asd at redhat.com>, "Martin Kouba"
>> > <mkouba at redhat.com>
>> > Cc: "cdi-dev" <cdi-dev at lists.jboss.org>
>> > Sent: Monday, July 24, 2017 12:09:16 PM
>> > Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> >
>> >
>> >
>> > Then that means Weld is doing it wrong (firing PAT for all classes).
>> >
>> >
>> >
>> >
>> > John
>> >
>> > From: Antoine Sabot-Durand <asd at redhat.com>
>> > Sent: Monday, July 24, 2017 4:31 AM
>> > To: Martin Kouba
>> > Cc: John Ament; cdi-dev
>> > Subject: Re: [cdi-dev] ProcessAnnotatedType & Bean Discovery mode
>> > Yes it’s the correct interpretation.
>> > Confusion may come from the fact that we first considered to specify this
>> > feature the other way around (discover all types on implicites bean archive
>> > but only keep classes with BDA for bean discovery). We switched to this
>> > approach because we thought it was better for backward compatibility.
>> >
>> > Antoine
>> >
>> > > Le 24 juil. 2017 à 08:27, Martin Kouba <mkouba at redhat.com> a écrit :
>> > >
>> > > Hi John,
>> > >
>> > > I think OWB interpretation is correct.
>> > >
>> > > In an implicit bean archive (implicit = bean archive with
>> > > bean-discovery-mode=annotated) PAT is only fired for discovered types
>> > > and the container only discovers each class with a bean defining
>> > > annotation.
>> > >
>> > > For trimmed bean archive - only explicit bean archives may be marked as
>> > > 'trimmed'. PAT is fired there but if it does not have a bean defining
>> > > annotation it's removed from the set of discovered types, i.e. no bean
>> > > is created.
>> > >
>> > > Martin
>> > >
>> > > Dne 23.7.2017 v 14:32 John Ament napsal(a):
>> > >> Hi,
>> > >>
>> > >>
>> > >> An issue popped up in OWB wanted to get the EG's perspective on this.
>> > >>
>> > >>
>> > >> I have a given bean archive, with a class in it (no bean defining
>> > >> annotations). My interpretation of [1] and [2] is that this class is
>> > >> fired as a ProcessAnnotatedType, regardless of what is in beans.xml. In
>> > >> OWB, if I do bean-discovery-mode=annotated it does not get fired, but if
>> > >> it is all, even with a <trim/> a PAT gets fired. However it seems that
>> > >> it should get fired before anything is even considered about the class,
>> > >> and whether it has annotations.
>> > >>
>> > >>
>> > >> [1]:
>> > >> https://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#process_annotated_type
>> >
>> >
>> > Contexts and Dependency Injection for the Java EE platform
>> > docs.jboss.org
>> > A well-defined lifecycle for stateful objects bound to lifecycle contexts,
>> > where the set of contexts is extensible. A sophisticated, typesafe
>> > dependency injection ...
>> >
>> >
>> > >>
>> > >> [2]:
>> > >> https://docs.jboss.org/cdi/spec/2.0/cdi-spec.html#process_annotated_type
>> > >>
>> > >>
>> > >> John
>> > >>
>> > >>
>> > >> ------------------------------------------------------------------------
>> > >> NOTICE: This e-mail message and any attachments may contain
>> > >> confidential, proprietary, and/or privileged information which should be
>> > >> treated accordingly. If you are not the intended recipient, please
>> > >> notify the sender immediately by return e-mail, delete this message, and
>> > >> destroy all physical and electronic copies. Thank you.
>> > >>
>> > >>
>> > >> _______________________________________________
>> > >> cdi-dev mailing list
>> > >> cdi-dev at lists.jboss.org
>> > >> https://lists.jboss.org/mailman/listinfo/cdi-dev
>> >
>> >
>> > cdi-dev Info Page - lists.jboss.org Mailing Lists
>> > lists.jboss.org
>> > List to discuss the development of CDI (the specification) To see the
>> > collection of prior postings to the list, visit the cdi-dev Archives.
>> >
>> >
>> > >>
>> > >> Note that for all code provided on this list, the provider licenses the
>> > >> code under the Apache License, Version 2 (
>> > >> http://www.apache.org/licenses/LICENSE-2.0.html ). For all other ideas
>> > >> provided on this list, the provider waives all patent and other
>> > >> intellectual property rights inherent in such information.
>> > >>
>> > >
>> > > --
>> > > Martin Kouba
>> > > Senior Software Engineer
>> > > Red Hat, Czech Republic
>> > > _______________________________________________
>> > > cdi-dev mailing list
>> > > cdi-dev at lists.jboss.org
>> > > https://lists.jboss.org/mailman/listinfo/cdi-dev
>> > >
>> > > Note that for all code provided on this list, the provider licenses the
>> > > code under the Apache License, Version 2 (
>> > > http://www.apache.org/licenses/LICENSE-2.0.html ). For all other ideas
>> > > provided on this list, the provider waives all patent and other
>> > > intellectual property rights inherent in such information.
>> >
>> >
>> > NOTICE: This e-mail message and any attachments may contain confidential,
>> > proprietary, and/or privileged information which should be treated
>> > accordingly. If you are not the intended recipient, please notify the
>> > sender
>> > immediately by return e-mail, delete this message, and destroy all physical
>> > and electronic copies. Thank you.
>> >
>> > _______________________________________________
>> > cdi-dev mailing list
>> > cdi-dev at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/cdi-dev
>> >
>> > Note that for all code provided on this list, the provider licenses the
>> > code
>> > under the Apache License, Version 2
>> > ( http://www.apache.org/licenses/LICENSE-2.0.html ). For all other ideas
>> > provided on this list, the provider waives all patent and other
>> > intellectual
>> > property rights inherent in such information.
>> 
>> NOTICE: This e-mail message and any attachments may contain confidential,
>> proprietary, and/or privileged information which should be treated
>> accordingly. If you are not the intended recipient, please notify the sender
>> immediately by return e-mail, delete this message, and destroy all physical
>> and electronic copies. Thank you.
>> 
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>> 
>> Note that for all code provided on this list, the provider licenses the code
>> under the Apache License, Version 2
>> (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
>> provided on this list, the provider waives all patent and other intellectual
>> property rights inherent in such information.
>> 
>> --
>> Tomas Remes
>> 
>> 
>> ________________________________
>> NOTICE: This e-mail message and any attachments may contain confidential,
>> proprietary, and/or privileged information which should be treated
>> accordingly. If you are not the intended recipient, please notify the sender
>> immediately by return e-mail, delete this message, and destroy all physical
>> and electronic copies. Thank you.
>> 
> ------------------------------------------------------------------------
> NOTICE: This e-mail message and any attachments may contain 
> confidential, proprietary, and/or privileged information which should be 
> treated accordingly. If you are not the intended recipient, please 
> notify the sender immediately by return e-mail, delete this message, and 
> destroy all physical and electronic copies. Thank you.
> 
> 
> _______________________________________________
> cdi-dev mailing list
> cdi-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/cdi-dev
> 
> Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.
> 

-- 
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic


More information about the cdi-dev mailing list