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
diff --git a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider.java
index cde1f77..0022c5d 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 @@
     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 0ca95d9..23b5b4f 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 @@
           "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