CDI.current() in AfterDeploymentValidation

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

CDI.current() in AfterDeploymentValidation

John Ament

So I know during the reception of AfterDeploymentValidation, the container isn't fully bootstrapped.  However, its valid to look up beans.  I would therefore expect that CDI.current().select()... to work fine.  However, at least in Weld it doesn't.  This is because CDI.current() cannot figure out what container to use (it's not fully bootstrapped yet).  So my question - is this a Weld issue, or a spec clarification?


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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

Martin Kouba
Hi John,

I think it's valid to call CDI.current() from within an extension. WRT
Weld - what version and environment do you use? There was an issue in
Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).

Martin

[1]
https://issues.jboss.org/browse/WELD-2256

Dne 3.4.2017 v 04:36 John Ament napsal(a):

> So I know during the reception of AfterDeploymentValidation, the
> container isn't fully bootstrapped.  However, its valid to look up
> beans.  I would therefore expect that CDI.current().select()... to work
> fine.  However, at least in Weld it doesn't.  This is because
> CDI.current() cannot figure out what container to use (it's not fully
> bootstrapped yet).  So my question - is this a Weld issue, or a spec
> clarification?
>
>
> 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
> [hidden email]
> 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
_______________________________________________
cdi-dev mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

John Ament

All,


So Martin below is saying its valid, but then in the ticket is saying its not valid.  I'll wait for others to voice opinions on this one.


John





From: Martin Kouba <[hidden email]>
Sent: Monday, April 3, 2017 2:48 AM
To: John Ament; cdi-dev
Subject: Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
 
Hi John,

I think it's valid to call CDI.current() from within an extension. WRT
Weld - what version and environment do you use? There was an issue in
Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).

Martin

[1]
https://issues.jboss.org/browse/WELD-2256

Dne 3.4.2017 v 04:36 John Ament napsal(a):
> So I know during the reception of AfterDeploymentValidation, the
> container isn't fully bootstrapped.  However, its valid to look up
> beans.  I would therefore expect that CDI.current().select()... to work
> fine.  However, at least in Weld it doesn't.  This is because
> CDI.current() cannot figure out what container to use (it's not fully
> bootstrapped yet).  So my question - is this a Weld issue, or a spec
> clarification?
>
>
> 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
> [hidden email]
> 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

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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

Martin Kouba
John,

that's not true. I'm saying that calling CDI.current() and
CDI.getBeanManager() is valid. However, it is not portable (and NOT
supported by Weld ATM) to call other CDI methods (CDI.select() etc.)
before the application initialization is completed.

See also 11.3.1. Obtaining a reference to the CDI container:
"A portable extension or other object may obtain a reference to the
current container by calling CDI.current(). CDI.getBeanManager() may be
called at any time after the container fires the BeforeBeanDiscovery
container lifecycle event until the container fires the BeforeShutdown
container lifecycle event. Other methods on CDI may be called after the
application initialization is completed until the application shutdown
starts. If methods on CDI are called at any other time, non-portable
behavior results."

I believe the spec is clear...

Martin

Dne 3.4.2017 v 14:49 John Ament napsal(a):

> All,
>
>
> So Martin below is saying its valid, but then in the ticket is saying
> its not valid.  I'll wait for others to voice opinions on this one.
>
>
> John
>
>
>
>
> ------------------------------------------------------------------------
> *From:* Martin Kouba <[hidden email]>
> *Sent:* Monday, April 3, 2017 2:48 AM
> *To:* John Ament; cdi-dev
> *Subject:* Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
>
> Hi John,
>
> I think it's valid to call CDI.current() from within an extension. WRT
> Weld - what version and environment do you use? There was an issue in
> Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).
>
> Martin
>
> [1]
> https://issues.jboss.org/browse/WELD-2256
>
> Dne 3.4.2017 v 04:36 John Ament napsal(a):
>> So I know during the reception of AfterDeploymentValidation, the
>> container isn't fully bootstrapped.  However, its valid to look up
>> beans.  I would therefore expect that CDI.current().select()... to work
>> fine.  However, at least in Weld it doesn't.  This is because
>> CDI.current() cannot figure out what container to use (it's not fully
>> bootstrapped yet).  So my question - is this a Weld issue, or a spec
>> clarification?
>>
>>
>> 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
>> [hidden email]
>> 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
> ------------------------------------------------------------------------
> 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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

Martin Kouba
FYI I've created https://issues.jboss.org/browse/WELD-2371.

Martin

Dne 3.4.2017 v 14:59 Martin Kouba napsal(a):

> John,
>
> that's not true. I'm saying that calling CDI.current() and
> CDI.getBeanManager() is valid. However, it is not portable (and NOT
> supported by Weld ATM) to call other CDI methods (CDI.select() etc.)
> before the application initialization is completed.
>
> See also 11.3.1. Obtaining a reference to the CDI container:
> "A portable extension or other object may obtain a reference to the
> current container by calling CDI.current(). CDI.getBeanManager() may be
> called at any time after the container fires the BeforeBeanDiscovery
> container lifecycle event until the container fires the BeforeShutdown
> container lifecycle event. Other methods on CDI may be called after the
> application initialization is completed until the application shutdown
> starts. If methods on CDI are called at any other time, non-portable
> behavior results."
>
> I believe the spec is clear...
>
> Martin
>
> Dne 3.4.2017 v 14:49 John Ament napsal(a):
>> All,
>>
>>
>> So Martin below is saying its valid, but then in the ticket is saying
>> its not valid.  I'll wait for others to voice opinions on this one.
>>
>>
>> John
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>> *From:* Martin Kouba <[hidden email]>
>> *Sent:* Monday, April 3, 2017 2:48 AM
>> *To:* John Ament; cdi-dev
>> *Subject:* Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
>>
>> Hi John,
>>
>> I think it's valid to call CDI.current() from within an extension. WRT
>> Weld - what version and environment do you use? There was an issue in
>> Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).
>>
>> Martin
>>
>> [1]
>> https://issues.jboss.org/browse/WELD-2256
>>
>> Dne 3.4.2017 v 04:36 John Ament napsal(a):
>>> So I know during the reception of AfterDeploymentValidation, the
>>> container isn't fully bootstrapped.  However, its valid to look up
>>> beans.  I would therefore expect that CDI.current().select()... to work
>>> fine.  However, at least in Weld it doesn't.  This is because
>>> CDI.current() cannot figure out what container to use (it's not fully
>>> bootstrapped yet).  So my question - is this a Weld issue, or a spec
>>> clarification?
>>>
>>>
>>> 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
>>> [hidden email]
>>> 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
>> ------------------------------------------------------------------------
>> 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.
>

--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic
_______________________________________________
cdi-dev mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

Antoine Sabot-Durand
Administrator
John,

During AfterDeploymentValidation, you can use BeanManager.createInstance() to retrieve a bean instance. It was added for that.

Antoine

On Tue, Apr 4, 2017 at 9:12 AM Martin Kouba <[hidden email]> wrote:
FYI I've created https://issues.jboss.org/browse/WELD-2371.

Martin

Dne 3.4.2017 v 14:59 Martin Kouba napsal(a):
> John,
>
> that's not true. I'm saying that calling CDI.current() and
> CDI.getBeanManager() is valid. However, it is not portable (and NOT
> supported by Weld ATM) to call other CDI methods (CDI.select() etc.)
> before the application initialization is completed.
>
> See also 11.3.1. Obtaining a reference to the CDI container:
> "A portable extension or other object may obtain a reference to the
> current container by calling CDI.current(). CDI.getBeanManager() may be
> called at any time after the container fires the BeforeBeanDiscovery
> container lifecycle event until the container fires the BeforeShutdown
> container lifecycle event. Other methods on CDI may be called after the
> application initialization is completed until the application shutdown
> starts. If methods on CDI are called at any other time, non-portable
> behavior results."
>
> I believe the spec is clear...
>
> Martin
>
> Dne 3.4.2017 v 14:49 John Ament napsal(a):
>> All,
>>
>>
>> So Martin below is saying its valid, but then in the ticket is saying
>> its not valid.  I'll wait for others to voice opinions on this one.
>>
>>
>> John
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>> *From:* Martin Kouba <[hidden email]>
>> *Sent:* Monday, April 3, 2017 2:48 AM
>> *To:* John Ament; cdi-dev
>> *Subject:* Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
>>
>> Hi John,
>>
>> I think it's valid to call CDI.current() from within an extension. WRT
>> Weld - what version and environment do you use? There was an issue in
>> Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).
>>
>> Martin
>>
>> [1]
>> https://issues.jboss.org/browse/WELD-2256
>>
>> Dne 3.4.2017 v 04:36 John Ament napsal(a):
>>> So I know during the reception of AfterDeploymentValidation, the
>>> container isn't fully bootstrapped.  However, its valid to look up
>>> beans.  I would therefore expect that CDI.current().select()... to work
>>> fine.  However, at least in Weld it doesn't.  This is because
>>> CDI.current() cannot figure out what container to use (it's not fully
>>> bootstrapped yet).  So my question - is this a Weld issue, or a spec
>>> clarification?
>>>
>>>
>>> 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
>>> [hidden email]
>>> 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
>> ------------------------------------------------------------------------
>> 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.
>

--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic
_______________________________________________
cdi-dev mailing list
[hidden email]
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.

_______________________________________________
cdi-dev mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: CDI.current() in AfterDeploymentValidation

Martin Kouba
Hm, that's not very consistent :-(

E.g. BeanManager.getReference() can only be used during
AfterDeploymentValidation. But BeanManager.createInstance() even during
AfterBeanDiscovery.

Martin


Dne 4.4.2017 v 16:55 Antoine Sabot-Durand napsal(a):

> John,
>
> During AfterDeploymentValidation, you can use
> BeanManager.createInstance() to retrieve a bean instance. It was added
> for that.
>
> Antoine
>
> On Tue, Apr 4, 2017 at 9:12 AM Martin Kouba <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     FYI I've created https://issues.jboss.org/browse/WELD-2371.
>
>     Martin
>
>     Dne 3.4.2017 v 14:59 Martin Kouba napsal(a):
>     > John,
>     >
>     > that's not true. I'm saying that calling CDI.current() and
>     > CDI.getBeanManager() is valid. However, it is not portable (and NOT
>     > supported by Weld ATM) to call other CDI methods (CDI.select() etc.)
>     > before the application initialization is completed.
>     >
>     > See also 11.3.1. Obtaining a reference to the CDI container:
>     > "A portable extension or other object may obtain a reference to the
>     > current container by calling CDI.current(). CDI.getBeanManager()
>     may be
>     > called at any time after the container fires the BeforeBeanDiscovery
>     > container lifecycle event until the container fires the BeforeShutdown
>     > container lifecycle event. Other methods on CDI may be called
>     after the
>     > application initialization is completed until the application shutdown
>     > starts. If methods on CDI are called at any other time, non-portable
>     > behavior results."
>     >
>     > I believe the spec is clear...
>     >
>     > Martin
>     >
>     > Dne 3.4.2017 v 14:49 John Ament napsal(a):
>     >> All,
>     >>
>     >>
>     >> So Martin below is saying its valid, but then in the ticket is saying
>     >> its not valid.  I'll wait for others to voice opinions on this one.
>     >>
>     >>
>     >> John
>     >>
>     >>
>     >>
>     >>
>     >>
>     ------------------------------------------------------------------------
>     >> *From:* Martin Kouba <[hidden email] <mailto:[hidden email]>>
>     >> *Sent:* Monday, April 3, 2017 2:48 AM
>     >> *To:* John Ament; cdi-dev
>     >> *Subject:* Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
>     >>
>     >> Hi John,
>     >>
>     >> I think it's valid to call CDI.current() from within an
>     extension. WRT
>     >> Weld - what version and environment do you use? There was an issue in
>     >> Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).
>     >>
>     >> Martin
>     >>
>     >> [1]
>     >> https://issues.jboss.org/browse/WELD-2256
>     >>
>     >> Dne 3.4.2017 v 04:36 John Ament napsal(a):
>     >>> So I know during the reception of AfterDeploymentValidation, the
>     >>> container isn't fully bootstrapped.  However, its valid to look up
>     >>> beans.  I would therefore expect that CDI.current().select()...
>     to work
>     >>> fine.  However, at least in Weld it doesn't.  This is because
>     >>> CDI.current() cannot figure out what container to use (it's not
>     fully
>     >>> bootstrapped yet).  So my question - is this a Weld issue, or a spec
>     >>> clarification?
>     >>>
>     >>>
>     >>> 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
>     >>> [hidden email] <mailto:[hidden email]>
>     >>> 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
>     >>
>     ------------------------------------------------------------------------
>     >> 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.
>     >
>
>     --
>     Martin Kouba
>     Senior Software Engineer
>     Red Hat, Czech Republic
>     _______________________________________________
>     cdi-dev mailing list
>     [hidden email] <mailto:[hidden email]>
>     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
_______________________________________________
cdi-dev mailing list
[hidden email]
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.