[cdi-dev] Today's meeting will be shorter and about SE
Romain Manni-Bucau
rmannibucau at gmail.com
Thu Dec 18 02:48:30 EST 2014
Hi guys,
- why shutdown and not AutoClosable?
- about instance: it uses TCCL to load the impls, not sure it is
intended but depending the deployment it can be an issue (is this api
100% JavaSE + flat classpath - ie more constrained than JavaSE?) +
most of javax SPI creates a new instance each time "creator" is
called.
- Why Booter and not Container (better than factory IMO)? 1) for
consistency with other spec, 2) why can I shutdown a booter ;)?
Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau
2014-12-18 8:37 GMT+01:00 Jozef Hartinger <jharting at redhat.com>:
>
> On 12/18/2014 04:33 AM, John D. Ament wrote:
>
> I thought today's meeting was pretty good. Based on one of the discussion
> points, I wanted to try putting together an interface that described the
> boot paradigm. Unfortunately even in Java 8 it doesn't work too well, I
> cannot assign a static variable in an interface the way I can in an abstract
> class. More importantly, it doesn't give us the private level expectation I
> would look for in this case. I best I could come up with using an interface
> is:
>
> public interface CDIBooter {
> default BeanManager initialize() {
> return initialize(new HashMap<>());
> }
>
> BeanManager initialize(Map<?,?> properties);
>
> Why BeanManager? I think it would be better to return CDI or its subclass
> rather than this low-level SPI. With the CDI class we get more user-friendly
> Instance<T> for free. We could also expose Event<T> similarly.
>
>
> void shutdown();
>
> class BootHolder {
>
> static CDIBooter instance = null;
>
> }
>
> static CDIBooter instance() {
> if(BootHolder.instance == null) {
> ServiceLoader<CDIBooter> serviceLoader =
> ServiceLoader.load(CDIBooter.class);
> for(CDIBooter booter : serviceLoader) {
> BootHolder.instance = booter;
> break;
> }
> }
> return BootHolder.instance;
> }
> }
>
> where as the abstract class is a bit briefer, while also being private.
>
> public abstract class CDIBooter {
> public BeanManager initialize() {
> return initialize(new HashMap<>());
> }
>
> public abstract BeanManager initialize(Map<?,?> properties);
>
> public abstract void shutdown();
>
> private static CDIBooter instance = null;
>
> public static CDIBooter instance() {
> if(instance == null) {
> ServiceLoader<CDIBooter> serviceLoader =
> ServiceLoader.load(CDIBooter.class);
> for(CDIBooter booter : serviceLoader) {
> instance = booter;
> break;
> }
> }
> return instance;
> }
> }
>
> Obviously ignore concurrency issues, etc. It does look to be safer to do an
> abstract class, rather than a factory-interface.
>
> John
>
>
> On Wed Dec 17 2014 at 10:40:44 AM Antoine Sabot-Durand
> <antoine at sabot-durand.net> wrote:
>>
>> Hi all,
>>
>>
>> I have business matter and will have to shorten the meeting tonight (half
>> an hour instead of 1h).
>>
>> I updated the SE doc and Antonio added useful annexes :
>> https://docs.google.com/document/d/1LgsGT-AAlrF72Z5pW4xNQiVjUHGUME46ZmB-wwF35Yw/edit?usp=sharing
>>
>> I propose we focus on this in these 30 mn
>>
>> regards,
>>
>> Antoine
>> _______________________________________________
>> 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.
>
>
>
> _______________________________________________
> 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.
>
>
>
> _______________________________________________
> 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.
More information about the cdi-dev
mailing list