Producer is made an alternative if the declaring bean class is an alternative
-----------------------------------------------------------------------------

                 Key: WELD-930
                 URL: https://issues.jboss.org/browse/WELD-930
             Project: Weld
          Issue Type: Bug
          Components: Producers (Methods, Fields and Disposers)
    Affects Versions: 1.1.0.Final
            Reporter: Alexey Kazakov


I'm looking at examples from 
https://github.com/pmuir/jboss-as-developer-guide/tree/master/quickstarts

There is org.jboss.as.quickstarts.login.EJBUserManager:

{code:title=org.jboss.as.quickstarts.login.EJBUserManager|borderStyle=solid}
...
@Named("userManager")
@RequestScoped
@Alternative
@Stateful
public class EJBUserManager implements UserManager {
...
    @Produces
    @Named
    @RequestScoped
    public List<User> getUsers() throws Exception {
        ...
    }
...
}
{code}

And there is also another bean 
org.jboss.as.quickstarts.login.ManagedBeanUserManager:

{code:title=org.jboss.as.quickstarts.login.ManagedBeanUserManager|borderStyle=solid}
...
@Named("userManager")
@RequestScoped
public class ManagedBeanUserManager implements UserManager {

   @SuppressWarnings("unchecked")
   @Produces
   @Named
   @RequestScoped
   public List<User> getUsers() throws Exception {
       ...
   }
...
}
{code}

This code works in Weld even if EJBUserManager.getUsers() is not annotated 
@Alternative. But regarding the spec such a method has an ambiguous EL name 
"users":

{quote}
5.3.1. Ambiguous EL names
An ambiguous EL name exists in an EL expression when an EL name resolves to 
multiple beans. When an ambiguous EL
name exists, the container attempts to resolve the ambiguity. If any of the 
beans are alternatives, the container eliminates
all beans that are not alternatives, *except for producer methods and fields of 
beans that are alternatives*. If there is exactly
one bean remaining, the container will select this bean, and the ambiguous EL 
name is called resolvable.
{quote}

There is a comment from Pete Muir:
{quote}
This looks to me like a bug in Weld (one that crept in from a pre-final spec 
revision) - that it checks if the declaring bean class is an alternative, and 
if it is, makes the producer an alternative. Can you file a WELD issue for 
this? I'll update the quickstart to explicitly make the producer an alternative.

Pete
{quote}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues

Reply via email to