Dne 15.5.2016 v 17:14 John D. Ament napsal(a):
Romain,
On Sun, May 15, 2016 at 11:05 AM Romain Manni-Bucau
<rmannibucau(a)gmail.com <mailto:rmannibucau@gmail.com>> wrote:
Hi Jon
Le 15 mai 2016 16:15, "John D. Ament" <john.d.ament(a)gmail.com
<mailto:john.d.ament@gmail.com>> a écrit :
>
> Hey guys
>
> Seems like we have some issues in JIRA all focused on managing
the lifecycle of Dependent scoped beans. It also seems like we have
many differing opinions about how to manage them.
>
> - Martin raised a PR to add a release() method to Instance to
help destroy a dependent bean
https://github.com/cdi-spec/cdi/pull/286
> - I raised a PR
https://github.com/cdi-spec/cdi/pull/289 to
update the spec to clarify how to manage a dependent scoped bean.
>
> Right now, it seems that the big disagreement is whether
Instance.destroy() can destroy objects not created by it (the case
being around the CDI utility class, being an impl of Instance). I'm
currently heavily against Martin's proposed changes, but want to get
input from others on the group to understand their perspective.
>
> - Does the spec require destroy() to be called only on instances
that it created? When I read 5.6.1 the only requirement I see is
that it has to be a dependent scoped bean. Note when I ask this I'm
asking from the spec perspective, its a different problem if there's
some issues with implementations following suite (I would imagine
there needs to be some shared global registry of dependent scoped
beans for this to work).
>
Sound the only clean impl. Any other is not symmetric and
potentially lead to "oops this time it didnt work". I also not
seeing any use case limitation with that so think it is the same
solution
I'm not sure I follow or if this isn't an answer to "Does the spec
require destroy() to be called only on instances that it created?" ?
Anyways I did look a bit closer and it seems that Martin's statement is
consistent with how OWB works,
https://github.com/apache/openwebbeans/blob/trunk/webbeans-impl/src/main/...
so
I wonder if there's a part of the spec I'm missing, or if there was some
offline agreement on how to understand it.
John, I believe Instance CANNOT be used to destroy a dependent bean
instance it didn't created, because a dependent bean instance doesn't
know the dependent objects it depends on - that's what CreationalContext
is for.
So if you pass any dependent instance to Instance.destroy() there is no
CreationalContext apart from the one Instance<> has. In other words you
wouldn't be able to destroy the @Dependent dependencies of a @Dependent
bean instane. Does it make sense?
See also
https://issues.jboss.org/browse/CDI-519 (cdi-spec/cdi/pull/278
is already merged).
John
> - Do we want two methods that effectively do the same thing? I
don't see a strong difference between the two.
>
> On the flipside, my change is more a spec clarification. I'm
thinking more now that it belongs as a reword of 5.6.1 to clarify
how to use destroy() on dependent beans, rather than where I put
it. I think realistically we have all of the tools needed to manage
the lifecycle of these classes, just need to clarify them for people
to use.
>
> John
>
> _______________________________________________
> cdi-dev mailing list
> cdi-dev(a)lists.jboss.org <mailto:cdi-dev@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.
_______________________________________________
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.
--
Martin Kouba
Software Engineer
Red Hat, Czech Republic