Search code examples
jbosscdiwildflywildfly-8weld

Issues with CDI when injecting generic type : Wildfly 8.2.0.Final


We are facing weird injection issues in Widfly due to CDI changes. We have interface

public interface Command<I, O> {
}

and many classes implement this interface like this

public class ApproveUserRequests implements Command<ApproveUserRequestsRequest, List<String>> {
}

Application listener classes likes to get list of all classes available and uses injection like this

@Inject
private Instance<Command<I, O>> mActions;

However instance returned by mActions were always null. After debugging source found that the only way to get list of all instances is to use

@Inject
private Instance<Command<?, ?>> mActions;

Also we faced injection issues while using generic types , however using wildcard type helped us. - See more at: https://developer.jboss.org/thread/256783#sthash.1s6tuXsR.dpuf


Solution

  • The rules for parameterized types have been clarified in CDI 1.2. Have look at Section 5.2.4 Assignability of raw and parameterized types of the spec.