aboutsummaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorlimpbizkit <limpbizkit@d779f126-a31b-0410-b53b-1d3aecad763e>2008-09-29 18:24:45 +0000
committerlimpbizkit <limpbizkit@d779f126-a31b-0410-b53b-1d3aecad763e>2008-09-29 18:24:45 +0000
commitcb93c79d6a5431f7708f5aaf46d83494ee037070 (patch)
tree2f0909e55762e5bd453ca2d47ab5bc8aa2fb9ab4 /extensions
parent51273654db8ac690140c1854310eca4b85ec47be (diff)
downloadguice-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-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