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 <
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.
>>>>
>>>
>