[cdi-dev] Veto and Requires
Pete Muir
pmuir at redhat.com
Tue Oct 18 10:41:16 EDT 2011
Yeah, @Veto makes this use of @Typed "first class".
Any thoughts on the naming Mark?
On 18 Oct 2011, at 15:37, Mark Struberg wrote:
> Hi!
>
> Nope, CODI has none of those methods, because
>
> @Veto can already be done via @Typed(), even in CDI-1.0. The mechanics of ProcessAnnotatedType#veto() and @Typed() are a bit different, but they lead to the same result.
> Rick, you need @Veto or @Typed() if you e.g. have a producer method for a class in a BDA. Otherwise you will get an AmbiguousResolutionException (because both the class and the producer methods are Bean<YourClass>).
>
>
> @Requires is really needed in the CDI-1.1 spec. Because the Seam3 @Optional Extension is not really portable as it assumes that NoClassDefFoundErrors and ClassNotFoundExceptions will get swallowed while the BeanManager performs the Classpath scanning. This has to be specified in CDI-1.1
>
>
> LieGrue,
> strub
>
>
>
>
> ----- Original Message -----
>> From: Pete Muir <pmuir at redhat.com>
>> To: Rick Hightower <richardhightower at gmail.com>
>> Cc: cdi-dev <cdi-dev at lists.jboss.org>
>> Sent: Tuesday, October 18, 2011 3:25 PM
>> Subject: Re: [cdi-dev] Veto and Requires
>>
>>
>> On 18 Oct 2011, at 06:59, Rick Hightower wrote:
>>
>>> "Any class or package may be prevented from providing bean definitions
>> based on the availability of other classes by adding the @Requires annotation on
>> the class or package."
>>>
>>>
>>> @Requires({Customer.class, Supplier.class}) public class Order { ...
>>>
>>> }
>>>
>>>
>>>
>>>
>>> Spring has something similar called @Required with some different behavior.
>> But now that I think on it... it is different enough....
>>>
>>> I'd prefer explicit names for these annotations. @ExcludeFromCDI and @
>> ExcludeFromCDIIfMissing.
>>>
>>> I know those are horrible names too. Not a big fan of @Veto and
>> @Requires.
>>
>> Hmm. Those names are not particularly consistent with the language style or
>> meaning used in CDI (for example, we never talk about CDI that way in the spec).
>>
>> @Veto is consistent with the .veto() method in the SPI, which is why it was
>> chosen.
>>
>> @Requires we agonised over for a long time, but couldn't come up with
>> anything better. If anyone has a better idea, please speak :-)
>>
>>> How about @ExcludeAsSource, and it has an optional attribute called
>> requires that takes an array of class types?
>>
>> I'm not sure this makes any sense, you aren't "excluded it as
>> source" (the class definition is still available), but vetoing the use of
>> the class as a bean. @Excludes could work (and is consistent with the CDI
>> style), possibly with an attribute called unlessAvailable (or something like
>> that).
>>
>>>
>>> I really really hate @Veto and @Requires. I guess I should search the mail
>> list and see if I missed this conversation.
>>
>> This was originally discussed on the seam or weld mailing lists, we had a long
>> discussion there.
>>
>> I think CODI has something similar, but can't find the naming right now.
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>
More information about the cdi-dev
mailing list