Arjan Tijms created OWB-893:
-------------------------------

             Summary: OpenWebBeans 1.2.1 fails when injecting generic value 
holder
                 Key: OWB-893
                 URL: https://issues.apache.org/jira/browse/OWB-893
             Project: OpenWebBeans
          Issue Type: Bug
          Components: Injection and Lookup
    Affects Versions: 1.2.1
            Reporter: Arjan Tijms


In OmniFaces we're using a producer method with the following signature:

{code}
@Produces
@Param
public <V> ParamValue<V> produce(InjectionPoint injectionPoint)
{code}

Injection then takes place into a bean as follows:

{code}
@Inject @Param
private ParamValue<String> text1;
{code}

{{@Param}} is a qualifier with only non-binding attributes.

See 
[RequestParameterProducer|https://code.google.com/p/omnifaces/source/browse/src/org/omnifaces/cdi/param/RequestParameterProducer.java]
 and 
[Param|https://code.google.com/p/omnifaces/source/browse/src/org/omnifaces/cdi/Param.java]

This works in all versions of Weld that we tested on and in OpenWebBeans 1.1.8 
(TomEE 1.5.2.). Unfortunately it does not work with OpenWebBeans 1.2.1-SNAPSHOT 
(TomEE 1.6.0-SNAPSHOT).

The problem seems to be that 1.2.1 has added an additional check in 
{{org.apache.webbeans.util.GenericsUtil.satisfiesDependency}} that wasn't there 
before:

{code}
return ClassUtil.isSame(injectionPointRawType, beanRawType)? 
isAssignableFrom(injectionPointType, beanType): false;
{code}

The problem is with {{isAssignableFrom}}, because the producer is always seen 
as producing a {{ParamValue<Object}}. The actual values at the point of 
evaluation with the above given injection example where:

{noformat}
injectionPoint = ParamValue<class java.lang.String> 
beanType = ParamValue<class java.lang.Object>
{noformat}

Those are not directly assignable so the injection fails.

Is OmniFaces doing something wrong here, is this check to strict, or should the 
producer type not be seen as {{ParamValue<Object>}}?



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to