diff options
author | limpbizkit <limpbizkit@d779f126-a31b-0410-b53b-1d3aecad763e> | 2008-09-29 18:24:45 +0000 |
---|---|---|
committer | limpbizkit <limpbizkit@d779f126-a31b-0410-b53b-1d3aecad763e> | 2008-09-29 18:24:45 +0000 |
commit | cb93c79d6a5431f7708f5aaf46d83494ee037070 (patch) | |
tree | 2f0909e55762e5bd453ca2d47ab5bc8aa2fb9ab4 /extensions | |
parent | 51273654db8ac690140c1854310eca4b85ec47be (diff) | |
download | guice-cb93c79d6a5431f7708f5aaf46d83494ee037070.tar.gz |
jmourits' changes to assistedinject so toString() etc. on the proxies work. Previously they were blowing up with NPEs in some situations.
git-svn-id: https://google-guice.googlecode.com/svn/trunk@627 d779f126-a31b-0410-b53b-1d3aecad763e
Diffstat (limited to 'extensions')
-rwxr-xr-x | extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java | 6 | ||||
-rwxr-xr-x | extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProviderTest.java | 16 |
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 |