support binding of generic interfaces from SpringModule
This commit is contained in:
committed by
Dave Syer
parent
9dae979d39
commit
061aef36f2
@@ -11,6 +11,7 @@ import org.junit.Test;
|
||||
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Key;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import com.google.inject.name.Names;
|
||||
|
||||
public abstract class AbstractCompleteWiringTests {
|
||||
@@ -74,6 +75,12 @@ public abstract class AbstractCompleteWiringTests {
|
||||
public void getNamedInjectedInstance() {
|
||||
assertNotNull(this.injector.getInstance(Thing.class).thang);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getParameterizedType() {
|
||||
Parameterized<String> instance = this.injector.getInstance(Key.get(new TypeLiteral<Parameterized<String>>() {}));
|
||||
assertNotNull(instance);
|
||||
}
|
||||
|
||||
public interface Service {
|
||||
}
|
||||
@@ -121,4 +128,7 @@ public abstract class AbstractCompleteWiringTests {
|
||||
|
||||
public static class Thang {
|
||||
}
|
||||
|
||||
public static interface Parameterized<T> {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import javax.inject.Singleton;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import com.google.inject.name.Names;
|
||||
|
||||
/**
|
||||
@@ -38,6 +39,7 @@ public class GuiceWiringTests extends AbstractCompleteWiringTests {
|
||||
bind(Service.class).to(MyService.class);
|
||||
bind(Baz.class).in(Singleton.class);
|
||||
bind(Thang.class).annotatedWith(Names.named("thing")).to(Thang.class);
|
||||
bind(new TypeLiteral<Parameterized<String>>(){}).toInstance(new Parameterized<String>(){});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,6 +80,11 @@ public class ModuleBeanWiringTests extends AbstractCompleteWiringTests {
|
||||
public Baz baz(Service service) {
|
||||
return new Baz(service);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Parameterized<String> parameterizedBean() {
|
||||
return new Parameterized<String>() {};
|
||||
}
|
||||
}
|
||||
|
||||
protected static class Spam {
|
||||
|
||||
@@ -86,6 +86,11 @@ public class ModuleNamedBeanWiringTests extends AbstractCompleteWiringTests {
|
||||
public Baz baz(Service service) {
|
||||
return new Baz(service);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Parameterized<String> parameterizedBean() {
|
||||
return new Parameterized<String>() {};
|
||||
}
|
||||
}
|
||||
|
||||
protected static class Spam {
|
||||
|
||||
@@ -48,6 +48,10 @@ public class SpringWiringTests extends AbstractCompleteWiringTests {
|
||||
public Thang other() {
|
||||
return new Thang();
|
||||
}
|
||||
@Bean
|
||||
public Parameterized<String> parameterizedBean() {
|
||||
return new Parameterized<String>() {};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,10 @@ public class SpringModuleWiringTests extends AbstractCompleteWiringTests {
|
||||
public Thing that() {
|
||||
return new Thing();
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public Parameterized<String> parameterizedBean() {
|
||||
return new Parameterized<String>(){};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user