]
Tomas Remes commented on CDI-627:
---------------------------------
This will need additional fix - see my comment
fix wording regression for beans.xml alternative check introduced in
1.2
------------------------------------------------------------------------
Key: CDI-627
URL:
https://issues.jboss.org/browse/CDI-627
Project: CDI Specification Issues
Issue Type: Bug
Components: Concepts
Affects Versions: 1.2.Final
Reporter: Mark Struberg
Assignee: Mark Struberg
Fix For: 2.0 .Final
My scenario is the following:
I have an @Alternative MockMailService class which should only be used during testing to
not send out 5k mails to customers and employees when running the unit and integration
test suite.
{code}
@Alternative
@ApplicationScoped
@Exclude(ifProjectStage=Production.class)
public class MockMailService implements MailService {...}
{code}
Of course I only need to activate it in beans.xml:
{code}
<beans>
<alternatives>
<class>org.acme.MockMailService</class>
</alternatives>
</beans>
{code}
This is perfectly fine in CDI 1.0 but might be interpreted as not be allowed in the CDI
1.2 wording paragraph 5.1.1.2. "Declaring selected alternatives for a bean
archive".
Please note that we introduced a check in CDI 1.0 purely to help the customer eagerly
detect possible wrong configuration. E.g. if he simply has a typo in the classname. It was
_not_ intended to restrict useful use cases!
What the intention was: all is fine IF one of
* There exists a class T with the given name
* That class T (or a contained producer field or producer method) is annotated with
@Alternative
* There is a Bean<T> with isAlternative() == true