Pete,<br><br>So, I&#39;ve always treated Nonbinding as not binding against the parameter, treating separate values as separate qualifiers.� When using a producer, you end up needing separate producers for each value that you want to support.� This thought is roughly what I was trying to dive through.<br>
<br>John<br><br><div class="gmail_quote">On Thu, Sep 8, 2011 at 12:19 PM, Pete Muir <span dir="ltr">&lt;<a href="mailto:pmuir@redhat.com">pmuir@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;">
Oh yes, let me redo it ;-)<br>
<div class="im"><br>
@Retention(RUNTIME)<br>
@interface Foo {<br>
<br>
 �String bar();<br>
<br>
}<br>
<br>
And use it:<br>
<br>
@RequestScoped<br>
class A {<br>
<br>
�/// Illegal<br>
�@Inject InjectionPoint ip;<br>
<br>
}<br>
<br>
class B {<br>
<br>
</div>@Inject @Foo(bar=&quot;baz&quot;) A a;<br>
<br>
}<br>
<br>
class C {<br>
<br>
@Inject @Foo(bar=&quot;qux&quot;) A a;<br>
<div class="im"><br>
}<br>
<br>
And then let&#39;s say we have:<br>
<br>
@RequestScoped<br>
class D {<br>
<br>
@Inject C c;<br>
@Inject B b;<br>
<br>
}<br>
<br>
</div><div class="im">On 8 Sep 2011, at 12:15, John D. Ament wrote:<br>
<br>
&gt; I think something&#39;s wrong with your example, but I think I get what you mean.<br>
&gt;<br>
&gt; My point is that if Foo were a qualifier and not just an annotation, should they really be the same injected instance?<br>
<br>
</div>If &quot;bar&quot; was binding, it would be a different instance, if bar was non binding, it would be the same instance.<br>
<div class="im"><br>
&gt; �It seems like @Nonbinding when used in @RequestScoped is irrelevant,<br>
<br>
</div>It&#39;s not really relevant or irrelevant, it&#39;s just orthogonal. @Nonbinding affects type bean resolution, which is an orthogonal concept to scoping of beans.<br>
<br>
But a non binding attribute is still non binding when used with @RequestScoped.<br>
<div class="im"><br>
&gt; but i&#39;m not sure the spec makes this clear (though in actuality I&#39;m against that idea that it wouldn&#39;t work).<br>
<br>
</div>I think we still have a mismatch in understanding here, as really @Nonbinding has nothing to do with scoping, which is why the spec doesn&#39;t call this out.<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; On Thu, Sep 8, 2011 at 11:59 AM, Pete Muir &lt;<a href="mailto:pmuir@redhat.com">pmuir@redhat.com</a>&gt; wrote:<br>
&gt; No.<br>
&gt;<br>
&gt; Continuing my example, I introduce some new annotation (not a qualifier):<br>
&gt;<br>
&gt; @Retention(RUNTIME)<br>
&gt; @interface Foo {<br>
&gt;<br>
&gt; � String bar();<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; And use it:<br>
&gt;<br>
&gt; @RequestScoped<br>
&gt; class A {<br>
&gt;<br>
&gt; �/// Illegal<br>
&gt; �@Inject InjectionPoint ip;<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; class B {<br>
&gt;<br>
&gt; @Inject @Bar(&quot;baz&quot;) A a;<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; class C {<br>
&gt;<br>
&gt; @Inject @Bar(&quot;qux&quot;) A a;<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; And then let&#39;s say we have:<br>
&gt;<br>
&gt; @RequestScoped<br>
&gt; class D {<br>
&gt;<br>
&gt; @Inject C c;<br>
&gt; @Inject B b;<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; The *same* instance of A will be injected into B &amp; C when D is accessed. The injection points allow access to the Annotated, which reflects two different injection points.<br>
&gt;<br>
&gt; Not gonna work ;-)<br>
&gt;<br>
&gt;<br>
&gt; On 8 Sep 2011, at 11:40, John D. Ament wrote:<br>
&gt;<br>
&gt; &gt; Pete, Mark,<br>
&gt; &gt;<br>
&gt; &gt; So I get there is no single injection point, however it should be the case that every injection point is declared the same way, no? �E.g. they&#39;re the &quot;same&quot; in the sense that the line of code is the same, but different in that they exist in different areas.<br>

&gt; &gt;<br>
&gt; &gt; John<br>
&gt; &gt;<br>
&gt; &gt; On Wed, Sep 7, 2011 at 8:38 AM, Pete Muir &lt;<a href="mailto:pmuir@redhat.com">pmuir@redhat.com</a>&gt; wrote:<br>
&gt; &gt; For a request scoped bean there is not a single injection point, like there is for dependent beans. Say I have a request scoped bean, Bean A.<br>
&gt; &gt;<br>
&gt; &gt; I have two other beans, of any scope, Bean B and Bean C.<br>
&gt; &gt;<br>
&gt; &gt; If both beans B and C inject A in the same request, then the injection point for A is both Bean B and Bean C.<br>
&gt; &gt;<br>
&gt; &gt; Furthermore, client proxies mean that bean A is instantiated lazily, to solve the circular injection problem, and so has no knowledge of it&#39;s injection point when actually created.<br>
&gt; &gt;<br>
&gt; &gt; On 7 Sep 2011, at 01:10, John D. Ament wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; CDI Experts<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Was wondering if you could help me understand rationale. �In request scoped objects, when you create a producer method that creates request scoped instances, why is there no access to the underlying injection point?<br>

&gt; &gt; &gt;<br>
&gt; &gt; &gt; Let&#39;s say that you have a qualifier with a single String value attribute that is nonbinding; let&#39;s say @JmsDestination. �You have the following injection points:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; @Inject @JmsDestination(&quot;jms/MyQueue&quot;) MessageProducer queueProducer;<br>
&gt; &gt; &gt; @Inject @JmsDestination(&quot;jms/MyTopic&quot;) MessageProducer topicProducer;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; In this case, two distinct MessageProducers should be injected. �The CDI container should be able to differentiate the two, since they have different values on the qualifier. �However, CDI disallows this since the producer methods used to create them would not have access to the injection point. �If a second injection point is found, CDI should return the same instance.<br>

&gt; &gt; &gt;<br>
&gt; &gt; &gt; I hope it doesn&#39;t sound like I&#39;m babbling, but I wanted to put the question out there to see if it&#39;s something that could be addressed.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Regards,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; John<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; cdi-dev mailing list<br>
&gt; &gt; &gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt; &gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br>