Hi, comment inline.
----- Original Message -----
From: "Laird Nelson" <ljnelson(a)gmail.com>
To: cdi-dev(a)lists.jboss.org
Sent: Thursday, February 16, 2017 11:11:41 PM
Subject: [cdi-dev] Extensions and spec-related observer method injection points question
This section (
http://docs.jboss.org/cdi/spec/2.0-PFD/cdi-spec.html#init_events ) says: "If
other beans [other than the BeanManager ] are injected into an [portable]
extension’s observer methods, non-portable behavior results."
Rephrased: a portable extension's observer methods must have a minimum of one
parameter (the event being observed) and a maximum of two parameters (that
plus the BeanManager ), and none other if you want to stay truly portable.
That's correct interpretation.
For true container lifecycle events, I understand this (you don't
have beans
to inject yet). But given that a bean must be provided by the container for
a portable extension (
http://docs.jboss.org/cdi/spec/2.0-PFD/cdi-spec.html#init_events ), wouldn't
it be reasonable to permit extra injection points in a portable extension's
non -container-lifecycle-event-observing observer methods?
Concretely, I'd like to do this:
// In my portable extension
private static final void doSomethingAtStartup(@Observes
@Initialized(ApplicationScoped.class) final Object event, final Frobnicator
someBean) {
someBean.doSomething();
}
While you cannot do this, you can still get hold of BeanManager and use it to resolve your
bean.
...but that would seem to be in violation of the specification. Could someone
kindly explain why?
Not really sure, perhaps Martin or Antoine can share the details.
But I would say this could create quite some confusion if in some observer you could
inject certain beans and in others you couldn't.
Even in your sample, you can only inject AppScoped beans, so imagine you do such observer
for, say, SessionScoped, what can you inject there?
SessionScoped for sure, how about Req? Conversation?
Thanks,
Best,
Laird
_______________________________________________
cdi-dev mailing list
cdi-dev(a)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.