Get what enhancements?
On Wed, Mar 4, 2015 at 7:28 AM Romain Manni-Bucau <rmannibucau(a)gmail.com>
wrote:
ok, initialize was returning a CDI instance then.
If CDI instance is so present why bothering container api with it? Just
looks like another Unmanaged. In this case I would enhance Unmanaged to
have shortcut like create() (shortcut for
produce()/inject()/postConstruct()) and destroy (preDestroy()/dispose()).
Said otherwise: the need is already in the API so why not letting EE
getting these enhancement as well?
Romain Manni-Bucau
@rmannibucau <
https://twitter.com/rmannibucau> | Blog
<
http://rmannibucau.wordpress.com> | Github
<
https://github.com/rmannibucau> | LinkedIn
<
https://www.linkedin.com/in/rmannibucau> | Tomitriber
<
http://www.tomitribe.com>
2015-03-04 13:09 GMT+01:00 John D. Ament <john.d.ament(a)gmail.com>:
> Same way as defined in the spec
>
> CDI.current().destroy(..)
>
> On Wed, Mar 4, 2015 at 6:44 AM Romain Manni-Bucau <rmannibucau(a)gmail.com>
> wrote:
>
>> hmm, and if the bean is @Dependent? how do you release it?
>>
>>
>> Romain Manni-Bucau
>> @rmannibucau <
https://twitter.com/rmannibucau> | Blog
>> <
http://rmannibucau.wordpress.com> | Github
>> <
https://github.com/rmannibucau> | LinkedIn
>> <
https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> <
http://www.tomitribe.com>
>>
>> 2015-03-04 12:37 GMT+01:00 John D. Ament <john.d.ament(a)gmail.com>:
>>
>>>
>>>
>>> On Wed, Mar 4, 2015 at 6:35 AM Romain Manni-Bucau <
>>> rmannibucau(a)gmail.com> wrote:
>>>
>>>> 2015-03-04 12:29 GMT+01:00 John D. Ament <john.d.ament(a)gmail.com>:
>>>>
>>>>> Hmm.. comments in line.
>>>>>
>>>>> On Wed, Mar 4, 2015 at 4:49 AM Antoine Sabot-Durand <
>>>>> antoine(a)sabot-durand.net> wrote:
>>>>>
>>>>>> Hi John,
>>>>>>
>>>>>> I think it could be a good idea to write down all of these to
have a
>>>>>> more stable doc for discussion. You should update the google doc
with the
>>>>>> result of this discussion.
>>>>>>
>>>>>> I agree with the following points in this thread :
>>>>>>
>>>>>> - Minimize the number of new Class / Interface. CDI and
CDIProvider
>>>>>> usage is still not very clear for end user so we should add the
strict
>>>>>> minimum and try to enhance existing API / SPI when possible
>>>>>>
>>>>>
>>>>> It seems odd to me that we're rehashing decisions made during the
EG
>>>>> meetings. Not putting it in CDI was discussed in several meetings at
the
>>>>> beginning of the year, and it seemed like the agreement was putting
it in
>>>>> CDI was a bad idea.
>>>>>
>>>>>
>>>>>> - Be able to bootstrap CDI without returning BeanManager (env if
the
>>>>>> API give possibility to access it if needed). End user don’t need
that :
>>>>>> CDI app can start with an observer for instance
>>>>>>
>>>>>
>>>>> Agreed, but I think we need to provide some entry point to allow
>>>>> those who aren't comfortable with programming with events to
leverage it.
>>>>> Returning the CDI instance makes that easier to do than returning
the
>>>>> BeanManager.
>>>>>
>>>>>
>>>>
>>>> Can you detail it please? CDI value is only its getBeanManager()
>>>> method IMO so it sounds like it is 1-1 for me.
>>>>
>>>
>>>
>>> Taken from the docs I"m working on:
>>>
>>> MyBean myBean = container.initialize().select(MyBean.class).get();
>>> myBean.doWork();
>>>
>>> Vs the 3-4 lines it takes to get a reference using just BeanManager.
>>>
>>>
>>>>
>>>>
>>>>>
>>>>>> Something not dealt with but that we should keep in mind :
>>>>>> - Providing a Java SE solution that could be easily used for a
>>>>>> servlet bootstrap of CDI. I don’t know if we’ll standardize this
but we
>>>>>> definitely should keep this use case in mind
>>>>>>
>>>>>> and my bonus, it’s out of scope but I didn’t see anytime there
that
>>>>>> prevent this nice to have:
>>>>>> - support the possibility to boot multiple BeanManager in Java
SE.
>>>>>>
>>>>>>
>>>>> We talked about this one as well on the EG, either this year or late
>>>>> last year. I thought the decision at that time was that we
wouldn't allow
>>>>> multiple containers at once in SE.
>>>>>
>>>>>
>>>>
>>>> wouldn't specify rather than wouldn't allow I think
>>>>
>>>>
>>>>> Antoine
>>>>>>
>>>>>>
>>>>>> Le 1 mars 2015 à 15:13, John D. Ament
<john.d.ament(a)gmail.com> a
>>>>>> écrit :
>>>>>>
>>>>>>
>>>>>> So, I think I've gathered enough feedback at this point, and
seen
>>>>>> some of the API changes. I'll hopefully be including some
doc changes this
>>>>>> week, but one question - do we want to start the SE specific
stuff as its
>>>>>> own asciidoc file?
>>>>>>
>>>>>> Changes made:
>>>>>>
>>>>>> - Changed return value to CDI<Object> to provide better
capability
>>>>>> out of the box.
>>>>>> - Added AutoCloseable to CDIContainer, provided default
>>>>>> implementation of calling shutdown.
>>>>>> - Added synchronization support to the method body that
retrieves
>>>>>> the singleton instance (BTW, I'm not sure if this is even
useful TBH as
>>>>>> each impl, including the RI, needs to provide this class in its
own format).
>>>>>> - Made the params map typed to <String,Object>
>>>>>>
>>>>>> @Romain Your case isn't really supportable yet, until we have
static
>>>>>> injection support. You'd still have to have a managed
version of Runner to
>>>>>> work against.
>>>>>>
>>>>>> John
>>>>>>
>>>>>> On Sat, Feb 28, 2015 at 4:11 PM Romain Manni-Bucau <
>>>>>> rmannibucau(a)gmail.com> wrote:
>>>>>>
>>>>>>> Yes but not the way to get an instance. Even Unmanaged does
it.
>>>>>>>
>>>>>>> What can be awesome is to have static inject for it:
>>>>>>>
>>>>>>> public class Runner {
>>>>>>>
>>>>>>> @Inject
>>>>>>> private static MyMain main;
>>>>>>>
>>>>>>> public static void main(String[] arg) {
>>>>>>> try (CDIContainer c = CDIContainer.newContainer()) {
>>>>>>> main.doWork();
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> And not a single additional line :).
>>>>>>> Le 28 févr. 2015 19:05, "John D. Ament"
<john.d.ament(a)gmail.com>
>>>>>>> a écrit :
>>>>>>>
>>>>>>> Maybe I'm misreading, but I don't see us adding
another API to do
>>>>>>>> the same thing here - we're introducing new
functionality.
>>>>>>>>
>>>>>>>> CDIContainer/Loader on startup/shutdown of the
application
>>>>>>>>
>>>>>>>> CDI for runtime usage within the application to interact
with the
>>>>>>>> container.
>>>>>>>>
>>>>>>>> John
>>>>>>>>
>>>>>>>> On Fri, Feb 27, 2015 at 3:40 AM Romain Manni-Bucau <
>>>>>>>> rmannibucau(a)gmail.com> wrote:
>>>>>>>>
>>>>>>>>> sure I fully agree excepted I think introducing yet
another API
>>>>>>>>> to do
>>>>>>>>> the same thing is not good so super tempting to skip
it and wait
>>>>>>>>> for
>>>>>>>>> feedbacks rather than introducing it eagerly.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Romain Manni-Bucau
>>>>>>>>> @rmannibucau
>>>>>>>>>
http://www.tomitribe.com
>>>>>>>>>
http://rmannibucau.wordpress.com
>>>>>>>>>
https://github.com/rmannibucau
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2015-02-27 8:05 GMT+01:00 Jozef Hartinger
<jharting(a)redhat.com>:
>>>>>>>>> > My point is that from the application
perspective, the user
>>>>>>>>> obtains one
>>>>>>>>> > container handle for eventual shutdown
(CDIContainer) and then
>>>>>>>>> looks up a
>>>>>>>>> > different container handle (CDI) that they can
use for real
>>>>>>>>> work (lookup /
>>>>>>>>> > event dispatch / etc.) It would be cleaner if
the container
>>>>>>>>> gave away a
>>>>>>>>> > single handle that can do all of that.
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > On 02/26/2015 05:42 PM, Romain Manni-Bucau
wrote:
>>>>>>>>> >
>>>>>>>>> > Not sure I get how a CDI instance can help.
>>>>>>>>> >
>>>>>>>>> > But container.getBeanManager() sounds nice is
not a shortcut for
>>>>>>>>> > CDI.current().getBm() otherwise it looks like
duplication to me.
>>>>>>>>> >
>>>>>>>>> > Can we make container not contextual - dont
think so? If so it
>>>>>>>>> makes sense
>>>>>>>>> > otherwise I fear it doesnt add much.
>>>>>>>>> >
>>>>>>>>> > Le 26 févr. 2015 16:19, "Jozef
Hartinger" <jharting(a)redhat.com>
>>>>>>>>> a écrit :
>>>>>>>>> >>
>>>>>>>>> >> I like the initialize + close() combination
and the
>>>>>>>>> try-with-resources
>>>>>>>>> >> usage.
>>>>>>>>> >> What looks weird to me is that at line one
you obtain a
>>>>>>>>> container handle:
>>>>>>>>> >>
>>>>>>>>> >> try (CDIContainer container =
CDIContainer.newCDIContai...
>>>>>>>>> >> CDI.current().getBeanManager() ...
>>>>>>>>> >>
>>>>>>>>> >> and then at line two you call a static
method to perform a
>>>>>>>>> container
>>>>>>>>> >> lookup :-/
>>>>>>>>> >>
>>>>>>>>> >> An API that allows you to use the container
handle you already
>>>>>>>>> got is way
>>>>>>>>> >> better IMO, e.g.:
>>>>>>>>> >>
>>>>>>>>> >> try (CDIContainer container =
CDIContainer.newCDIContai...
>>>>>>>>> >> container.getBeanManager()
>>>>>>>>> >>
>>>>>>>>> >> If CDIContainer.newCDIContainer() returns an
CDI instance or
>>>>>>>>> its subclass,
>>>>>>>>> >> we get this easily.
>>>>>>>>> >>
>>>>>>>>> >> On 02/26/2015 08:58 AM, Romain Manni-Bucau
wrote:
>>>>>>>>> >>>
>>>>>>>>> >>> Hi guys
>>>>>>>>> >>>
>>>>>>>>> >>> why note keeping it simple?
>>>>>>>>> >>>
>>>>>>>>> >>> try (CDIContainer container =
CDIContainer.newCDIContainer(/*
>>>>>>>>> optional
>>>>>>>>> >>> map to configure vendor features */)) {
>>>>>>>>> >>>
CDI.current().getBeanManager()....
>>>>>>>>> >>> }
>>>>>>>>> >>>
>>>>>>>>> >>> Not sure the point having initialize() +
having shutdown =
>>>>>>>>> close
>>>>>>>>> >>> really makes the API more fluent and
modern IMO.
>>>>>>>>> >>>
>>>>>>>>> >>> Also to be fully SE I guess provider()
method would be needed
>>>>>>>>> even if
>>>>>>>>> >>> optional (SPI usage by default):
>>>>>>>>> >>>
>>>>>>>>> >>> try (CDIContainer container =
>>>>>>>>> >>>
>>>>>>>>> >>>
CDIContainer.provider("org.jboss.weld.WeldCdiContainerProvid
>>>>>>>>> er").newCDIContainer())
>>>>>>>>> >>> {
>>>>>>>>> >>>
CDI.current().getBeanManager()....
>>>>>>>>> >>> }
>>>>>>>>> >>>
>>>>>>>>> >>> Finally I think having a kind of
getInstance shortcut could
>>>>>>>>> be a plus for
>>>>>>>>> >>> SE:
>>>>>>>>> >>>
>>>>>>>>> >>> try (CDIContainer container =
CDIContainer.newCDIContainer())
>>>>>>>>> {
>>>>>>>>> >>>
container.newInstance(MyAppRunner.class /* optional
>>>>>>>>> qualifiers */
>>>>>>>>> >>> ).run(args);
>>>>>>>>> >>> }
>>>>>>>>> >>>
>>>>>>>>> >>> Using container to get an instance would
create the instance
>>>>>>>>> and bind
>>>>>>>>> >>> it to the container lifecycle (mainly
for predestroy)
>>>>>>>>> avoiding this
>>>>>>>>> >>> boilerplate code in all main which will
surely only be used
>>>>>>>>> to launch
>>>>>>>>> >>> a soft.
>>>>>>>>> >>>
>>>>>>>>> >>> wdyt?
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>> Romain Manni-Bucau
>>>>>>>>> >>> @rmannibucau
>>>>>>>>> >>>
http://www.tomitribe.com
>>>>>>>>> >>>
http://rmannibucau.wordpress.com
>>>>>>>>> >>>
https://github.com/rmannibucau
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>> 2015-02-26 8:32 GMT+01:00 Jozef
Hartinger <
>>>>>>>>> jharting(a)redhat.com>:
>>>>>>>>> >>>>
>>>>>>>>> >>>> Comments inline
>>>>>>>>> >>>>
>>>>>>>>> >>>> On 02/25/2015 05:53 PM, John D.
Ament wrote:
>>>>>>>>> >>>>
>>>>>>>>> >>>> Sorry Jozef, your email fell into
the pits of google inbox's
>>>>>>>>> "smart
>>>>>>>>> >>>> sorting"
>>>>>>>>> >>>> features.
>>>>>>>>> >>>>
>>>>>>>>> >>>> On Thu, Feb 12, 2015 at 3:18 AM
Jozef Hartinger <
>>>>>>>>> jharting(a)redhat.com>
>>>>>>>>> >>>> wrote:
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Hi John, comments inline:
>>>>>>>>> >>>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> On 02/11/2015 06:02 PM, John D.
Ament wrote:
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Jozef,
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Most of what you see there is
taken from the original doc,
>>>>>>>>> since
>>>>>>>>> >>>>> everyone
>>>>>>>>> >>>>> seemed to be in agreement. I
think the map is just a
>>>>>>>>> safeguard in case
>>>>>>>>> >>>>> of
>>>>>>>>> >>>>> additional boot options
available in some implementations
>>>>>>>>> (e.g. I think
>>>>>>>>> >>>>> OWB/OpenEJB have some options..
currently OpenEJB supports
>>>>>>>>> an embedded
>>>>>>>>> >>>>> CDI
>>>>>>>>> >>>>> boot mode).
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> No, I am fine with the map. What
I am questioning is the
>>>>>>>>> type of the
>>>>>>>>> >>>>> map.
>>>>>>>>> >>>>> Usually, data structures with a
similar purpose use Strings
>>>>>>>>> as their
>>>>>>>>> >>>>> keys.
>>>>>>>>> >>>>> This applies to ServletContext
attributes,
>>>>>>>>> InvocationContext data,
>>>>>>>>> >>>>> Servlet
>>>>>>>>> >>>>> request/session attributes and
others. I am therefore
>>>>>>>>> wondering whether
>>>>>>>>> >>>>> there is a usecase for the
proposed unbound key signature
>>>>>>>>> or not.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> I think that's more of a
placeholder, I was assuming it
>>>>>>>>> would be
>>>>>>>>> >>>> Map<String,Object> once we
clarify everything.
>>>>>>>>> >>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> We spoke a few times about
BeanManager vs CDI. BeanManager
>>>>>>>>> was
>>>>>>>>> >>>>> preferable
>>>>>>>>> >>>>> since there's no easy way to
get the the instance, CDI is
>>>>>>>>> easier to get
>>>>>>>>> >>>>> and
>>>>>>>>> >>>>> more aligned with how you would
get it. Usually people
>>>>>>>>> expect the
>>>>>>>>> >>>>> BeanManager to be injected or
available via JNDI, neither
>>>>>>>>> would be the
>>>>>>>>> >>>>> case
>>>>>>>>> >>>>> here.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> If CDI 2.0 targets Java SE then
this container
>>>>>>>>> initialization API will
>>>>>>>>> >>>>> become something that ordinary
application developers use
>>>>>>>>> to start/stop
>>>>>>>>> >>>>> CDI
>>>>>>>>> >>>>> in their applications. It
therefore cannot be considered an
>>>>>>>>> SPI but
>>>>>>>>> >>>>> instead
>>>>>>>>> >>>>> should be something easy to use.
On the other hand,
>>>>>>>>> BeanManager is
>>>>>>>>> >>>>> definitely an SPI. It is used in
extension, frameworks and
>>>>>>>>> generally
>>>>>>>>> >>>>> for
>>>>>>>>> >>>>> integration. Not much by
applications directly. Therefore,
>>>>>>>>> I don't see
>>>>>>>>> >>>>> how
>>>>>>>>> >>>>> the container bootstrap API and
BeanManager fit together.
>>>>>>>>> IMO the
>>>>>>>>> >>>>> bootstrap
>>>>>>>>> >>>>> API should expose something that
makes common tasks
>>>>>>>>> (obtaining a
>>>>>>>>> >>>>> contextual
>>>>>>>>> >>>>> reference and firing and event)
easy, which the CDI class
>>>>>>>>> does.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Plus do not forget that
BeanManager can be obtained easily
>>>>>>>>> using
>>>>>>>>> >>>>> CDI.getBeanManager().
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> I'm not disagreeing.
There's a few things I'd consider:
>>>>>>>>> >>>>
>>>>>>>>> >>>> - Is this mostly for new apps or
existing? If existing,
>>>>>>>>> it's probably
>>>>>>>>> >>>> using
>>>>>>>>> >>>> some internal API, if new it can use
whatever API we give.
>>>>>>>>> >>>> - I don't want to return void,
we should give some kind of
>>>>>>>>> reference
>>>>>>>>> >>>> into
>>>>>>>>> >>>> the container when we're done
booting.
>>>>>>>>> >>>>
>>>>>>>>> >>>> Agreed, we should not be returning
void.
>>>>>>>>> >>>>
>>>>>>>>> >>>> - CDI is a one step retrievable
reference, where as
>>>>>>>>> BeanManager is a two
>>>>>>>>> >>>> step reference. With that said,
BeanManager makes more
>>>>>>>>> sense to return
>>>>>>>>> >>>> here. Another thought could be we
invent some new class
>>>>>>>>> that has both,
>>>>>>>>> >>>> but
>>>>>>>>> >>>> that's really redundant.
>>>>>>>>> >>>>
>>>>>>>>> >>>> Why do you think BeanManager makes
more sense here?
>>>>>>>>> Especially given the
>>>>>>>>> >>>> assumption that application code is
going to call this
>>>>>>>>> init/shutdown
>>>>>>>>> >>>> API, I
>>>>>>>>> >>>> don't see BeanManager as making
more sense.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Yes, this is the container start
API. Sounds like you have
>>>>>>>>> some good
>>>>>>>>> >>>>> ideas for things like XML
configuration or programmatic
>>>>>>>>> configuration,
>>>>>>>>> >>>>> both
>>>>>>>>> >>>>> of which are being tracked under
separate tickets. One
>>>>>>>>> idea might be
>>>>>>>>> >>>>> for an
>>>>>>>>> >>>>> optional param in the map to
control packages to
>>>>>>>>> scan/ignore, in that
>>>>>>>>> >>>>> map.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> I am wondering whether this
configuration should be
>>>>>>>>> something optional
>>>>>>>>> >>>>> built on top of the bootstrap
API or whether we should
>>>>>>>>> consider making
>>>>>>>>> >>>>> it
>>>>>>>>> >>>>> mandatory. Either way, we cannot
add the bootstrap API to
>>>>>>>>> the spec
>>>>>>>>> >>>>> without
>>>>>>>>> >>>>> explicitly defining how it
behaves. My implicit assumption
>>>>>>>>> of the
>>>>>>>>> >>>>> proposal
>>>>>>>>> >>>>> is that the container is
supposed to scan the entire
>>>>>>>>> classpath for
>>>>>>>>> >>>>> explicit
>>>>>>>>> >>>>> or implicit bean archives
(including e.g. rt.jar), discover
>>>>>>>>> beans, fire
>>>>>>>>> >>>>> extensions, etc. This worries me
as this default behavior
>>>>>>>>> is far from
>>>>>>>>> >>>>> being
>>>>>>>>> >>>>> lightweight, which CDI for Java
SE initially aimed to be.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> Yes, the spec must be updated to
reflect the behavior of SE
>>>>>>>>> mode. I
>>>>>>>>> >>>> plan to
>>>>>>>>> >>>> get that completely into the google
doc before opening any
>>>>>>>>> spec changes
>>>>>>>>> >>>> in a
>>>>>>>>> >>>> PR.
>>>>>>>>> >>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> We didn't want to over load
the CDI interface. It already
>>>>>>>>> does a lot.
>>>>>>>>> >>>>> This is really SPI code, CDI
even though it's in the spi
>>>>>>>>> package is
>>>>>>>>> >>>>> used in
>>>>>>>>> >>>>> a lot of application code.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> I would personally prefer to
have it all in one place.
>>>>>>>>> Having
>>>>>>>>> >>>>> CDIContainer,
CDIContainerLoader, CDI and CDIProvider makes
>>>>>>>>> it more
>>>>>>>>> >>>>> difficult to know when to use
what.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> The problem is that most CDI (the
interface) operations are
>>>>>>>>> against a
>>>>>>>>> >>>> running container. I think we spoke
about leveraging
>>>>>>>>> CDIProvider at one
>>>>>>>>> >>>> point (in fact, I mistakenly called
CDIContainer CDIProvider
>>>>>>>>> not even
>>>>>>>>> >>>> realizing it was there). I doubt
that most app developers
>>>>>>>>> use it
>>>>>>>>> >>>> currently,
>>>>>>>>> >>>> there's not even a way to get a
reference to it that I'm
>>>>>>>>> aware of. It's
>>>>>>>>> >>>> used by the implementor only.
>>>>>>>>> >>>>
>>>>>>>>> >>>> I don't think there's a
conflict. CDI class would still only
>>>>>>>>> provide
>>>>>>>>> >>>> methods
>>>>>>>>> >>>> to be run against a running
container. The difference is
>>>>>>>>> that there
>>>>>>>>> >>>> would be
>>>>>>>>> >>>> additional static methods to get
this running container (CDI
>>>>>>>>> class) to
>>>>>>>>> >>>> you
>>>>>>>>> >>>> by starting the container.
>>>>>>>>> >>>>
>>>>>>>>> >>>> Either way, I agree that reusing
CDIProvider is a must.
>>>>>>>>> There is no
>>>>>>>>> >>>> reason
>>>>>>>>> >>>> to define a new class for the same
purpose.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> I expect that my changes in the CDI
spec around this will
>>>>>>>>> state, along
>>>>>>>>> >>>> the
>>>>>>>>> >>>> lines of:
>>>>>>>>> >>>>
>>>>>>>>> >>>> To retrieve a CDIContainer to
launch, do this:
>>>>>>>>> >>>>
>>>>>>>>> >>>> CDIContainer container =
CDIContainerLocator.getCDICont
>>>>>>>>> ainer();
>>>>>>>>> >>>> container.initialize();
>>>>>>>>> >>>> ... do work
>>>>>>>>> >>>>
>>>>>>>>> >>>> Once you want to shutdown the
container, do this:
>>>>>>>>> >>>>
>>>>>>>>> >>>> container.shutdown();
>>>>>>>>> >>>>
>>>>>>>>> >>>> (we may want to consider
implementing AutoCloseable, an
>>>>>>>>> oversight on my
>>>>>>>>> >>>> part)
>>>>>>>>> >>>>
>>>>>>>>> >>>> and then later on
>>>>>>>>> >>>>
>>>>>>>>> >>>> - What happens if I call
CDIContainerLocator in an app server
>>>>>>>>> >>>>
>>>>>>>>> >>>> - It throws an
IllegalStateException.
>>>>>>>>> >>>>
>>>>>>>>> >>>> - The container provides no beans of
type CDIContainer, it
>>>>>>>>> is managed
>>>>>>>>> >>>> outside of the CDI container.
>>>>>>>>> >>>>
>>>>>>>>> >>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> John
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> On Wed Feb 11 2015 at 4:21:50 AM
Jozef Hartinger <
>>>>>>>>> jharting(a)redhat.com>
>>>>>>>>> >>>>> wrote:
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> Hi John, some thoughts:
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> - instead of using
BeanManager it makes more sense to me
>>>>>>>>> to return a
>>>>>>>>> >>>>>> CDI
>>>>>>>>> >>>>>> instance, which is a more
user-friendly API (and it also
>>>>>>>>> exposes
>>>>>>>>> >>>>>> access to
>>>>>>>>> >>>>>> BeanManager)
>>>>>>>>> >>>>>> - is there a usecase for
arbitrary keys of the "params"
>>>>>>>>> map or is
>>>>>>>>> >>>>>> Map<String, ?>
sufficient?
>>>>>>>>> >>>>>> - if we could move the
shutdown() method from CDIContainer
>>>>>>>>> to the
>>>>>>>>> >>>>>> actual
>>>>>>>>> >>>>>> container handle that we
obtain from initialize(), that
>>>>>>>>> would look
>>>>>>>>> >>>>>> more
>>>>>>>>> >>>>>> object-oriented
>>>>>>>>> >>>>>> - what exactly is
initialize() supposed to do? Is it
>>>>>>>>> supposed to start
>>>>>>>>> >>>>>> scanning the entire
classpath for CDI beans? That could be
>>>>>>>>> a problem
>>>>>>>>> >>>>>> especially with
spring-boot-like fat jars. I think we need
>>>>>>>>> an API to
>>>>>>>>> >>>>>> tell
>>>>>>>>> >>>>>> the container which classes
/ packages to consider.
>>>>>>>>> Something like
>>>>>>>>> >>>>>> Guice's
>>>>>>>>> >>>>>> binding API perhaps?
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> - the proposal makes me
wonder whether retrofitting this
>>>>>>>>> functionality
>>>>>>>>> >>>>>> to
>>>>>>>>> >>>>>> the CDI class wouldn't
be a better option. It could look
>>>>>>>>> like:
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> CDI container =
CDI.initialize();
>>>>>>>>> >>>>>>
container.select(Foo.class).get();
>>>>>>>>> >>>>>> container.shutdown();
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> compare it to:
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> CDIContainer container =
CDIContainerLoader.
>>>>>>>>> getCDIContainer();
>>>>>>>>> >>>>>> BeanManager manager =
container.initialize();
>>>>>>>>> >>>>>> manager.getBeans(...);
>>>>>>>>> >>>>>>
container.shutdown(manager);
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> On 02/10/2015 06:58 PM, John
D. Ament wrote:
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> All,
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> I have the updated API here,
and wanted to solicit any
>>>>>>>>> final feedback
>>>>>>>>> >>>>>> before updating the google
doc and spec pages.
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>>
https://github.com/johnament/cdi/commit/
>>>>>>>>> 2c362161e18dd521f8e83c27151ddad467a1c01c
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> Let me know your thoughts.
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> Thanks,
>>>>>>>>> >>>>>>
>>>>>>>>> >>>>>> 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.
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>> 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.
>>>>>
>>>>
>>