-
Bug
-
Resolution: Done
-
Major
-
None
-
None
@Inject is broken on Wildfly 8.1.0 Final when the interface to be injected is parameterized with a type that extends another type. Example code:
public interface Foo<T extends Serializable> { } // will fail public class FooBean implements Foo { } public interface Bar<T> { } // will work public class BarBean implements Bar { } @Singleton @Startup public class TestSingleton { @Inject private Instance<Foo> foo; @Inject private Instance<Bar> bar; @PostConstruct public void init() { System.out.println("##### foo is unsatisfied = " + foo.isUnsatisfied()); for (Foo f : foo) System.out.println("foo is: " + f.getClass().getCanonicalName()); System.out.println("##### bar is unsatisfied = " + bar.isUnsatisfied()); for (Bar b : bar) System.out.println("bar is: " + b.getClass().getCanonicalName()); } }
output:
22:30:25,904 INFO [stdout] (ServerService Thread Pool -- 50) ##### foo is unsatisfied = true 22:30:25,905 INFO [stdout] (ServerService Thread Pool -- 50) ##### bar is unsatisfied = false
The same code works on JBoss AS 7.1.1, so something must have changed for Wildfly.
The attached small example project can be used to reproduce the error.