Thank you guys for the excellent info! Now that i know what to search for, theres actually some discussion going on over this subject in internet.
Although it works for me, i have the feeling that both solutions (@Typed and @Veto) are rather workarounds (i saw on stacktrace one more suggestion to annotate the bean to be produced with @Alternative without enabling it) because the intent of those annotations is different(?) Just for the sake of completeness, why would @Default or @New or @Any together with @Produces on producer method will not work? Br Reinis -----Ursprüngliche Nachricht----- Betreff: Re: [OWB] CDI - how to realize default producer? Von: "Mark Struberg" <[email protected]> An: [email protected] Datum: 2013/05/19 14:40:52 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 >> >> >> > >> >
