[ https://issues.apache.org/jira/browse/OWB-893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13743607#comment-13743607 ]
Romain Manni-Bucau commented on OWB-893: ---------------------------------------- FYI: here is an extension https://github.com/rmannibucau/cdi-converters/blob/master/src/main/java/com/github/rmannibucau/converter/internals/ConverterExtension.java registering ParameterizedType which could match your need. > 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