[cdi-dev] [JBoss JIRA] (CDI-517) assignability to parameterized required type

Martin Kouba (JIRA) issues at jboss.org
Tue Mar 10 03:40:18 EDT 2015


    [ https://issues.jboss.org/browse/CDI-517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13048442#comment-13048442 ] 

Martin Kouba commented on CDI-517:
----------------------------------

Well, it was added in this commit [42f5f8ec974e24dfdca5c34eadd3f85785077ca5|https://github.com/cdi-spec/cdi/commit/42f5f8ec974e24dfdca5c34eadd3f85785077ca5] (authored on 25 Feb 2013), the Proposed Final Draft was published on *06 Mar, 2013*, and the Final Release was on *24 May, 2013*. That's enough time for revision. It was also discussed in [DELTASPIKE-295|https://issues.apache.org/jira/browse/DELTASPIKE-295]. So I don't understand your "2 days" sentence.

In any case, it is incompatible in the sense that it *was not defined in CDI 1.0*. And in my opinion it was a mistake.

Also note that it's very easy to fix (and follow the rules explicitly defined in the CDI spec):
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.deltaspike.modules/deltaspike-jsf-module-impl/1.2.1/org/apache/deltaspike/jsf/impl/message/JsfMessageProducer.java#40 

Honestly Mark, do you think it's correct to allow something like this?
{code:java}
class Foo<T> {   
  private T ref;
  public Foo(T ref) {
    this.ref = ref;
  }        
}

@Produces
Foo createFoo() {
 Foo<Integer> foo = new Foo<Integer>(10);
 return foo;
}

// The producer would be assignable...
@Inject
Foo<String> stringFoo;
{code}


> assignability to parameterized required type
> --------------------------------------------
>
>                 Key: CDI-517
>                 URL: https://issues.jboss.org/browse/CDI-517
>             Project: CDI Specification Issues
>          Issue Type: Bug
>          Components: Resolution
>    Affects Versions: 1.1.PFD, 1.2.Final
>            Reporter: Mark Struberg
>
> 2 days before the CDI-1.1 spec went PDF the following backward-incomatible change was made:
> {quote}
> -A raw bean type is considered assignable to a parameterized required type if the raw types are identical.
> + A raw bean type is considered assignable to a parameterized required type if the raw types are identical and all type parameters of the bean type are either unbounded type variables or java.lang.Object.
> {quote} 
> This breaks a lot of projects and also is also not compatible with the JavaEE6 RI and the CDI-1.0 RI where this was explicitly allowed.
> This is a follow up to CDI-304.



--
This message was sent by Atlassian JIRA
(v6.3.11#6341)


More information about the cdi-dev mailing list