[weld-issues] [JBoss JIRA] (WELD-905) @Alternative broken if multiple implementations are in the classpath
Marko Lukša (JIRA)
jira-events at lists.jboss.org
Thu Mar 15 10:17:49 EDT 2012
[ https://issues.jboss.org/browse/WELD-905?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12677039#comment-12677039 ]
Marko Lukša commented on WELD-905:
----------------------------------
I've tested this on 7.1 and found that {{BeanA2}} plays no role here. Whether the second bean archive is included in WEB-INF/lib or not, it is always {{BeanA}} that gets injected into {{Page}}. And this appears to be the correct behavior according to section 5.1 of the spec:
{quote}
An alternative is not available for injection, lookup or EL resolution to classes or JSP/JSF pages *in a module unless the module is a bean archive and the alternative is explicitly selected in that bean archive*.
{quote}
Since the alternative is only selected in the first bean archive, and {{Page}} is located in the war (and not inside the first bean archive), the injected bean should in fact be {{BeanA}}. If you were to move {{Page}} into the first bean archive, only then would {{BeanA1}} be injected into {{Page}}, since {{BeanA1}} is selected as an alternative only in the first bean archive.
Can someone confirm this?
> @Alternative broken if multiple implementations are in the classpath
> --------------------------------------------------------------------
>
> Key: WELD-905
> URL: https://issues.jboss.org/browse/WELD-905
> Project: Weld
> Issue Type: Bug
> Components: Resolution (Typesafe and by Name)
> Affects Versions: 1.1.1.Final
> Reporter: Gerhard Petracek
> Assignee: Marko Lukša
> Priority: Critical
> Attachments: WELD-905.zip
>
>
> example (broken):
> bean-archive #1:
> - BeanA
> - BeanA1 (@Alternative)
> - beans.xml (activates BeanA1 as alternative)
> bean-archive #2:
> - BeanA2 (@Typed())
> - beans.xml (empty)
> BeanA1 doesn't get used (without an error or a warning BeanA is used instead - even though BeanA1 is activated as alternative in the same bean-archive)
> example (working):
> bean-archive #1:
> - BeanA
> - BeanA1 (@Alternative)
> - beans.xml (activates BeanA1 as alternative)
> jar #2 (no bean-archive):
> - BeanA2 (@Typed())
> BeanA1 gets activated as alternative (as expected) because jar #2 isn't a bean-archive (that's the difference compared to the broken example).
> that prevents >e.g.< portable extensions from providing extension-points to work around the broken @Alternative spec. section.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the weld-issues
mailing list