-
Bug
-
Resolution: Done
-
Major
-
1.2.Final
-
None
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.
@Alternative @ApplicationScoped @Exclude(ifProjectStage=Production.class) public class MockMailService implements MailService {...}
Of course I only need to activate it in beans.xml:
<beans> <alternatives> <class>org.acme.MockMailService</class> </alternatives> </beans>
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