I think you hit the nail on the head with your last paragraph. Basically it only matters that the bean (or producer in this case) matches all of the qualifiers on the injection point. From the perspective of the specification it doesn't matter if the bean has extra qualifiers beyond those on the injection point. Section 5.3 is another key section here.
Sincerely, Joe On Wed, Sep 29, 2010 at 12:30 PM, Jakob Korherr <[email protected]> wrote: > Hi, > > I tested some scenarios when using multiple qualifiers for test-cases > in MyFaces CODI and stumbled upon the following scenario, which is not > totally clear to me. > > Image you have the following producer methods: > > �...@produces > �...@qualifier2 > �...@applicationscoped > public ProducerBean createWithQualifier2() > { > return new ProducerBean(); > } > > �...@produces > �...@qualifier1 > �...@qualifier2 > �...@applicationscoped > public ProducerBean createWithQualifier1And2() > { > return new ProducerBean(); > } > > > and you want to inject the instances produced by these producers. Now > you can use @Inject @Qualifier1 or @Inject @Qualifier1 @Qualifier2, > but when using @Inject @Qualifier2 you will get an exception, because > the injection point is ambiguous (both producers provide @Qualifier2). > > However I was wondering if this is really unresolvable ambiguous, > because if you think about it, it would make sence to take the > producer createWithQualifier2() in this scenario (because the other > one provides additional qualifiers). > > I also took a look in the CDI spec about this, but could only find the > following from section 2.3.4: "A bean may only be injected to an > injection point if it has all the qualifiers of the injection point." > Of course this applies to both producers and thus, yes, it's kinda > ambiguous. > > WDYT? > > Regards, > Jakob > > -- > Jakob Korherr > > blog: http://www.jakobk.com > twitter: http://twitter.com/jakobkorherr > work: http://www.irian.at >
