[ 
https://issues.apache.org/jira/browse/OWB-658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13246261#comment-13246261
 ] 

Andreas Erne commented on OWB-658:
----------------------------------

Our case is even simpler than the one you described:

>public class @Service MyBeanA extends BaseBean implements A ...
>public class @Service MyBeanB extends BaseBean implements B ...
>public class @Service @Alternative MyBeanBAlt extends BaseBean implements B ...

beanManager.getBeans(BaseBean.class, new ServiceQualifier()) should return 
MyBeanA and MyBeanBAlt

I understand that it is quite hard to define for which bean type filter 
criteria an alternative should be evaluated or not. For example:

>Example 1: beanManager.getBeans(Object.class)
>Example 2: beanManager.getBeans(BaseBean.class)
>Example 3: beanManager.getBeans(A.class)
>...

One solution could be to return all matching beans (inclusive alternatives) if 
the bean type filter criteria is not an interface (examples 1 and 2). For 
example 3, the alternatives for A are evaluated.


                
> BeanManager.getBeans(Type, Annotation...) can not be used to query all known 
> beans
> ----------------------------------------------------------------------------------
>
>                 Key: OWB-658
>                 URL: https://issues.apache.org/jira/browse/OWB-658
>             Project: OpenWebBeans
>          Issue Type: Bug
>          Components: Injection and Lookup
>    Affects Versions: 1.1.3
>            Reporter: Andreas Erne
>            Assignee: Mark Struberg
>             Fix For: 1.1.4
>
>
> Expected behaviour: beanManager.getBeans(Object.class, new 
> ServiceQualifier()) finds all beans that are qualified as "Service", 
> regardless of the beans implementation type
> Effective behaviour: The BeanManager fails if a base type (Object in this 
> example) is provided instead of a leaf type. In theses cases, the BeanManager 
> finds the Alternative beans only and forgets about all beans that lack of an 
> Alternative
> Reason: The BeanManager's helper 
> org.apache.webbeans.container.InjectionResolver fails in method 
> implResolveByType method as it can not handle collections of beans of 
> different types. It treats all beans as if they where of the same type (and 
> therefore have the same Alternative)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to