aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xextensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java6
-rwxr-xr-xextensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java16
2 files changed, 21 insertions, 1 deletions
diff --git a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
index cde1f777..0022c5de 100755
--- a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
+++ b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
@@ -209,8 +209,12 @@ public class FactoryProvider<F, R> implements Provider<F> {
InvocationHandler invocationHandler = new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] creationArgs) throws Throwable {
+ // pass methods from Object.class to the proxy
+ if (method.getDeclaringClass().equals(Object.class)) {
+ return method.invoke(this, creationArgs);
+ }
+
AssistedConstructor<?> constructor = factoryMethodToConstructor.get(method);
-
Object[] constructorArgs = gatherArgsForConstructor(
constructor, creationArgs);
Object objectToReturn = constructor.newInstance(constructorArgs);
diff --git a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java
index 0ca95d91..23b5b4f8 100755
--- a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java
+++ b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java
@@ -518,6 +518,22 @@ public class FactoryProviderTest extends TestCase {
"Parameter of type 'double' is not injectable or annotated with @Assisted");
}
}
+
+ public void testMethodsDeclaredInObject() {
+ Injector injector = Guice.createInjector(new AbstractModule() {
+ @Override protected void configure() {
+ bind(Double.class).toInstance(5.0d);
+ bind(ColoredCarFactory.class)
+ .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Mustang.class));
+ }
+ });
+
+ ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);
+
+ carFactory.equals(carFactory);
+ carFactory.hashCode();
+ carFactory.toString();
+ }
// TODO(jessewilson): test for duplicate constructors
} \ No newline at end of file