fixes issue 478.
git-svn-id: https://google-guice.googlecode.com/svn/trunk@1159 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
index d3e2783..ee8f9fe 100644
--- a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
+++ b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
@@ -455,7 +455,7 @@
if(constructor == null) {
binder.bind(assistedReturnType).to((Key)returnType);
} else {
- binder.bind(assistedReturnType).toConstructor((Constructor)constructor);
+ binder.bind(assistedReturnType).toConstructor((Constructor)constructor, (TypeLiteral)returnType.getTypeLiteral());
}
}
}
diff --git a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
index 6a8de20..940fe93 100644
--- a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
+++ b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
@@ -17,9 +17,12 @@
package com.google.inject.assistedinject;
import com.google.inject.AbstractModule;
+
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.TypeLiteral;
import com.google.inject.name.Named;
import com.google.inject.name.Names;
@@ -152,6 +155,18 @@
Beetle beetle = factory.getBeetle(Color.GREEN);
assertEquals(Color.GREEN, beetle.color);
}
+
+ public void testParameterizedClassesWithNoImplements() {
+ Injector injector = Guice.createInjector(new AbstractModule() {
+ @Override
+ protected void configure() {
+ install(new FactoryModuleBuilder().build(new TypeLiteral<Foo.Factory<String>>() {}));
+ }
+ });
+
+ Foo.Factory<String> factory = injector.getInstance(Key.get(new TypeLiteral<Foo.Factory<String>>() {}));
+ Foo<String> foo = factory.create(new Bar());
+ }
interface Car {}
@@ -192,4 +207,15 @@
this.color = color;
}
}
+
+ public static class Foo<E> {
+ static interface Factory<E> {
+ Foo<E> create(Bar bar);
+ }
+ @Inject Foo(@Assisted Bar bar, Baz<E> baz) {}
+ }
+
+ public static class Bar {}
+ public static class Baz<E> {}
+
}