<div dir="ltr">Including CDI-DEV<div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Todor Boev</b> <span dir="ltr">&lt;<a href="mailto:rinsvind@gmail.com">rinsvind@gmail.com</a>&gt;</span><br>Date: Fri, Sep 8, 2017 at 11:03 AM<br>Subject: Re: [cdi-dev] Correct way to programatically instantiate a Bean<br>To: Matej Novotny &lt;<a href="mailto:manovotn@redhat.com">manovotn@redhat.com</a>&gt;<br><br><br><div dir="ltr">Hi Matej,<div><br></div><div>I am struggling to understand what do you mean by &quot;bean&quot;.</div><div>The Bean&lt;T&gt; object that produces objects of type T, or each individual object of type T?</div><div><br></div><div>If it is the T this should be the first of my code snippets: a new CreationalContext for every new T.<br></div><div>If it is the Bean&lt;T&gt; this should be the second of my code snippets: one CreationalContext all new T.</div><div><br></div><div>Regards,</div><div>Todor</div><div><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 8, 2017 at 8:42 AM, Matej Novotny <span dir="ltr">&lt;<a href="mailto:manovotn@redhat.com" target="_blank">manovotn@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Todor,<br>
<br>
if I am not mistaken, the CreationalContext is a way to bind<br>
dependent instances to bean (and so align their lifecycles).<br>
<br>
Which means I&#39;d use new CreationalContext for each bean.<br>
<br>
Matej<br>
<div><div class="m_-1828454808226036098h5"><br>
----- Original Message -----<br>
&gt; From: &quot;Todor Boev&quot; &lt;<a href="mailto:rinsvind@gmail.com" target="_blank">rinsvind@gmail.com</a>&gt;<br>
&gt; To: <a href="mailto:cdi-dev@lists.jboss.org" target="_blank">cdi-dev@lists.jboss.org</a><br>
&gt; Sent: Thursday, September 7, 2017 5:07:35 PM<br>
&gt; Subject: [cdi-dev] Correct way to programatically instantiate a Bean<br>
&gt;<br>
&gt; Hello,<br>
&gt;<br>
&gt; I need to create beans from a portable extension.<br>
&gt; It is not clear to me if every instance of a bean must have an associated<br>
&gt; instance of CreationalContext or rather one CreationalContext must be used<br>
&gt; for all instances:<br>
&gt;<br>
&gt; // Store a CreationalContext per bean instance<br>
&gt; BeanManager manager = ...<br>
&gt; Bean&lt;T&gt; bean = ...<br>
&gt; Context ctx = manager.getContext(bean.getSco<wbr>pe());<br>
&gt;<br>
&gt; Map&lt;T, CreationalContext&lt;T&gt;&gt; dependents = ...<br>
&gt;<br>
&gt; public T createBean() {<br>
&gt; CreationalContext&lt;T&gt; cctx = manager.createCreationalContex<wbr>t(bean);<br>
&gt; T instance = ctx.get(bean, cctx);<br>
&gt; dependents.put(instance, cctx);<br>
&gt; return instance;<br>
&gt; }<br>
&gt;<br>
&gt; public void destroyBean(T instance) {<br>
&gt; dependents.computeIfPresent(in<wbr>stance, (inst, cctx) -&gt; {<br>
&gt; bean.destroy(inst, cctx);<br>
&gt; return null;<br>
&gt; });<br>
&gt; }<br>
&gt;<br>
&gt; // CDI tracks dependents for me<br>
&gt; BeanManager manager = ...<br>
&gt; Bean&lt;T&gt; bean = ...<br>
&gt; Context ctx = manager.getContext(bean.getSco<wbr>pe());<br>
&gt; CreationalContext cctx = manager.createCreationalContex<wbr>t(bean);<br>
&gt;<br>
&gt; public T createBean() {<br>
&gt; T instance = ctx.get(bean, cctx);<br>
&gt; return instance;<br>
&gt; }<br>
&gt;<br>
&gt; public void destroyBean(T instance) {<br>
&gt; bean.destroy(instance, cctx);<br>
&gt; }<br>
&gt;<br>
&gt; Best Regards,<br>
&gt; Todor<br>
&gt;<br>
</div></div>&gt; ______________________________<wbr>_________________<br>
&gt; cdi-dev mailing list<br>
&gt; <a href="mailto:cdi-dev@lists.jboss.org" target="_blank">cdi-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/cdi-dev</a><br>
&gt;<br>
&gt; Note that for all code provided on this list, the provider licenses the code<br>
&gt; under the Apache License, Version 2<br>
&gt; (<a href="http://www.apache.org/licenses/LICENSE-2.0.html" rel="noreferrer" target="_blank">http://www.apache.org/license<wbr>s/LICENSE-2.0.html</a>). For all other ideas<br>
&gt; provided on this list, the provider waives all patent and other intellectual<br>
&gt; property rights inherent in such information.<br>
</blockquote></div><br></div></div></div></div>
</div><br></div></div>