Hi all,
here are my two cents on this (pretty much covered that in the PR comments, just
didn't get much attention there):
* I am also standing behind the idea to keep ManageableContext (MC) in the current
hierarchy. It should extend AlterableContext and obviously we will need to add
activate/deactivate methods there.
** In short... Yes, I see this as a _Context_ :)
* As an entry point, BeanManager seems a good way.
** BM.getContext() can stay as it is now, therefore we won't break any compatibility.
It will return the running context, throw exception otherwise
** We should add BM.getManageableContext (or something along those lines) which will give
you an instance of ManageableContext which you can then activate
* As for people implementing this on their own (and registering via extension which was
the argument against it)
** There might not really be any harm in it; or at least I see none, though I may be
missing something
** And if you feel otherwise, we might still change the doc and say that this is
forbidden
** Again, such doc change will not cause any backward compatibility because there are not
apps which would have it now.
Matej
----- Original Message -----
From: "Martin Kouba" <mkouba(a)redhat.com>
To: cdi-dev(a)lists.jboss.org
Sent: Tuesday, July 19, 2016 9:26:25 AM
Subject: Re: [cdi-dev] Hierarchy of ManageableContext and Context
Hi John,
I don't see a problem if we introduce a ManageableContext interface
(with activate/deactivate) and a custom context implements it. In other
words, I don't think it has to be used only for built-in contexts.
Also the context definition is clear (6.2. The Context interface) and
again, if these are two different things then we should not call it a
context at all [1].
Martin
[1]
https://github.com/cdi-spec/cdi/pull/296#issuecomment-229942823
Dne 18.7.2016 v 13:19 John D. Ament napsal(a):
> All,
>
> I'm starting a discussion thread outside of the PR to avoid folks on the
> EG not receiving github notifications. I want to drive to get the
> opinions of the broader EG and use this as feedback on whether or not we
> change the hierarchy.
>
> I've been against having ManageableContext (MC) extend
> Context/AlterableContext (AC). There's a few reasons. First,
> semantically I can register a context, but I shouldn't be able to
> register a MC. That means from an inheritance standpoint MC does not
> pass the is-a check on AC. MC may be a composition style, or nothing at
> all since it may not be associated to any specific thread in the
> future. While we can put in spec verbiage and exceptions to cover the
> cases where someone does implement MC and try to register it,
> realistically if it's there as a compilation time option, I shouldn't
> get an error if it passes.
>
> I can agree that the bulk of the methods on MC should match AC. That's
> where I introduced a new base class for the two and had MC extend that.
> The base class provided no behavior, just method signatures. The second
> key thing for me is in this area. AC is more like a definition, where
> as MC is a running instance of that definition. Since these are
> different, it shows that MC doesn't inherit the use-case of the parent AC.
>
> Third issue I have with extending is that AC is meant to be implemented
> by developers to create custom contexts. Developers aren't intended to
> implement MC. The container should provide these instances, since they
> are intended only for built in contexts. We allow developers who
> implement AC to control their activation, as a result we've already
> provided a means to disassociate a custom AC from any thread.
>
> I want to get others opinions on whether these reasons make sense and if
> they guide to the same conclusion about not extending AC. For what its
> worth, I've shown these classes to some of my own developers to get
> their feedback, who have had to do things like quartz integration or
> responding to netty requests and activate contexts. The concerns I
> raise are based on questions they've asked me.
>
> John
>
>
> _______________________________________________
> 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.
>
_______________________________________________
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.