[cdi-dev] Alternative producer methods

Mark Struberg struberg at yahoo.de
Sun Apr 1 12:06:03 EDT 2012


To be more clear what I mean with the @Disposal issue please consider the following class:

public class DefaultBeanProducer
{
    public static boolean gotDumped = false;

    @Produces @QualifierProducerBased
    public IProducedBean generateBean()
    {
        return new ProducedBean("default", this);
    }

    public void dumpBean(@Disposes @QualifierProducerBased IProducedBean bean)
    {
        gotDumped = true;
    }
}


And the following @Alternative:

@Alternative
public class AlternativeOnClassAndProducerMethodBean
{
    @Produces
    @Alternative
    @QualifierProducerBased
    public IProducedBean generateBean2()
    {
        return new ProducedBean("AlternativeOnClassAndProducerMethodBean", this);
    }
}



In OWB this currently creates the following Exception:
WebBeansConfigurationException: Producer method component of the disposal method : dumpBean in class : org.apache.webbeans.newtests.concepts.alternatives.common.DefaultBeanProducer must be in the same class!

This behaviour is exactly as defined in the current spec afaik.
But certainly this is not very useful...

wdyt? Did I overlook something?

LieGrue,
strub




----- Original Message -----
> From: Mark Struberg <struberg at yahoo.de>
> To: cdi-dev <cdi-dev at lists.jboss.org>
> Cc: 
> Sent: Sunday, April 1, 2012 3:51 PM
> Subject: [cdi-dev] Alternative producer methods
> 
> 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