Yes, it's kind of different to ProcessAnnotatedType#veto(), but it has the same 
effect - your class and your producer don't clash anymore ;)

And it comes without any expenses straight out of CDI-1.0

LieGrue,
strub




----- Original Message -----
> From: John D. Ament <[email protected]>
> To: [email protected]; Mark Struberg <[email protected]>
> Cc: 
> Sent: Sunday, 19 May 2013, 14:14
> Subject: Re: [OWB] CDI - how to realize default producer?
> 
> Well, I think @Typed is another work around.  It doesn't remove the object
> from the archive simply says you can't reference it by anything but 
> what's
> in @Typed.
> 
> 
> On Sun, May 19, 2013 at 6:19 AM, Mark Struberg <[email protected]> wrote:
> 
>>  CDI-1.0 _has_ a concept of vetoing. Simply annotate Foo with
>> 
>>  @Typed()
>> 
>>  LieGrue,
>>  strub
>> 
>> 
>> 
>> 
>>  ----- Original Message -----
>>  > From: John D. Ament <[email protected]>
>>  > To: [email protected]
>>  > Cc:
>>  > Sent: Sunday, 19 May 2013, 4:37
>>  > Subject: Re: [OWB] CDI - how to realize default producer?
>>  >
>>  >T he easiest way is to actually put a qualifier on the class itself, 
> and
>>  > then never inject based on that qualifier.  CDI 1.0 has no concept of 
> a
>>  > veto'd bean, but you could write an extension yourself that 
> veto'd your
>>  > class.
>>  >
>>  > Extensions exist out there, I believe CODI has one and Seam3 has one.
>>  > Seam3 uses @Veto to mark these beans as veto'd.
>>  >
>>  >
>>  > On Sat, May 18, 2013 at 6:48 PM, Reinis Vicups 
> <[email protected]> wrote:
>>  >
>>  >>  Hi,
>>  >>
>>  >>  I'd like to use a producer method in ALL CASES when 
> @Injecting a
>>  >>  particular bean.
>>  >>
>>  >>  It looks like this:
>>  >>
>>  >>  public class FooProducer {
>>  >>
>>  >>      @Produces
>>  >>      public Foo produceFoo() {
>>  >>          Foo foo = new Foo();
>>  >>          return foo;
>>  >>      }
>>  >>  }
>>  >>
>>  >>  public class Foo {}
>>  >>
>>  >>  With this example I get:
>>  >>
>>  >>  SEVERE - CDI Beans module deployment failed
>>  >>  javax.enterprise.inject.**AmbiguousResolutionException: Ambiguous
>>  >>  resolution
>>  >>  found beans:
>>  >>  Foo, Name:null, WebBeans Type:MANAGED, API
>>  > Types:[....Foo,java.lang.**Object],
>>  >>  Qualifiers:[javax.enterprise.**inject.Any,javax.enterprise.**
>>  >>  inject.Default]
>>  >>  Foo, Name:null, WebBeans Type:PRODUCERMETHOD, API
>>  Types:[....Foo,java.lang.
>>  >>  **Object],
>>  Qualifiers:[javax.enterprise.**inject.Any,javax.enterprise.**
>>  >>  inject.Default]
>>  >>
>>  >>  I tried applying @Default with no success.
>>  >>
>>  >>  And I don't want to make specific @Qualifier annotation, 
> because this
>>  > is
>>  >>  unnecessary in my case and will cause errors in those cases when 
> I
>>  forget
>>  >>  to provide that @Qualifier at injection point.
>>  >>
>>  >>  If anyone could help me with setting up a correct way to provide
>>  default
>>  >>  producer, would be great.
>>  >>
>>  >>  thanks and kind regards
>>  >>  Reinis
>>  >>
>>  >
>> 
>

Reply via email to