[cdi-dev] Alternative producer methods

Mark Struberg struberg at yahoo.de
Mon Apr 2 06:14:26 EDT 2012


Hi Pete!
Ok, summing up your elaboration means that

public class MyClassContainsProd {
  public @Produces @Alternative OtherDings createOtherDings() {
    return new OtherDings();
  }


is perfectly fine and 'MyClassContainsProd' doesn't need to be annotated as @Alternative, right?

LieGrue,
strub



----- Original Message -----
> From: Pete Muir <pmuir at redhat.com>
> To: Mark Struberg <struberg at yahoo.de>
> Cc: cdi-dev <cdi-dev at lists.jboss.org>
> Sent: Monday, April 2, 2012 11:30 AM
> Subject: Re: [cdi-dev] Alternative producer methods
> 
> Right now, I can't find a better path through the spec to explain this, if 
> anyone knows, then say, if not we should clarify for CDI 1.1
> 
> Looking at 11.1 getBeanClass() you can see that the bean class of a producer 
> method (or field) is the class of the bean declaring the producer method (or 
> field). This should probably be actually specified, rather than just in a 
> interface description!
> 
> From this, we can use Mark's reference to 5.1.1 to see that when we want to 
> enable an alternative producer, we in fact use the bean class name.
> 
> 
> 
> On 1 Apr 2012, at 14:51, Mark Struberg wrote:
> 
>>  Dear EG colleagues!
>> 
>> 
>>  I have a question about @Alternative on producer methods:
>>  consider the following class:
>> 
>>  // here is NO alternative annotation!
>> 
>>  public class AlternativeOnProducerMethodOnlyBean {
>>     @Produces  @Alternative
>>     public IProducedBean generateBean2() {..}
>>  }
>> 
>>  So the class itself is NOT annotated as @Alternative
>> 
>>  I'm not sure if 5.1.1 allows this or the other way around: if this must 
> be supported.
>> 
>>  Imo the important parts are (from 5.1.1)
>>>  Each child <class> element must specify the name of an 
> alternative bean class. 
>> 
>>>  If there is no class with the specified name, or if the class with the 
> specified 
>> 
>>>  name is not an alternative bean class, the container automatically 
> detects 
>> 
>>>  the problem and treats it as a deployment problem.
>> 
>>  The question is now how 'an alternative bean class' is to be 
> interpreted ^^
>>  The first paragraph of 5.1.1 says:
>> 
>>>    An alternative is selected for the bean archive if either ...
>>>  * the alternative is a producer method, field or resource, and the 
>> 
>>>  bean class that declares the method or field is listed, ...
>> 
>> 
>>  But does this qualify the AlternativeOnProducerMethodOnlyBean as 
> 'alternative bean class'?
>> 
>>  Any ideas?
>> 
>>  Btw: the whole topic of disposal methods for @Alternative producers are 
> completely unspecified...
>> 
>>  LieGrue,
>>  strub
>> 
>>  _______________________________________________
>>  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