[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