Revision: 1233
Author: [email protected]
Date: Wed Sep 15 15:30:59 2010
Log: Fix singletons to be eager as intended.
http://code.google.com/p/google-guice/source/detail?r=1233

Modified:
 /trunk/extensions/mini/src/com/google/inject/mini/MiniGuice.java
 /trunk/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java

=======================================
--- /trunk/extensions/mini/src/com/google/inject/mini/MiniGuice.java Mon Sep 13 00:25:39 2010 +++ /trunk/extensions/mini/src/com/google/inject/mini/MiniGuice.java Wed Sep 15 15:30:59 2010
@@ -260,6 +260,7 @@

private void putBinding(Key key, Provider<Object> provider, boolean singleton) {
     if (singleton) {
+      singletons.add(key);
       final Provider<Object> unscoped = provider;
       provider = new Provider<Object>() {
         private Object onlyInstance = UNINITIALIZED;
=======================================
--- /trunk/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java Mon Sep 13 00:25:39 2010 +++ /trunk/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java Wed Sep 15 15:30:59 2010
@@ -16,6 +16,7 @@
 package com.google.inject.mini;

 import com.google.inject.Provides;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -221,4 +222,33 @@
   public static class Q extends P {
     @Inject Q() {}
   }
-}
+
+  public void testSingletonsAreEager() {
+    final AtomicBoolean sInjected = new AtomicBoolean();
+
+    R.injected = false;
+    MiniGuice.inject(A.class, new Object() {
+      @Provides F provideF(R r) {
+        return new F();
+      }
+
+      @Provides @Singleton S provideS() {
+        sInjected.set(true);
+        return new S();
+      }
+    });
+
+    assertTrue(R.injected);
+    assertTrue(sInjected.get());
+  }
+
+  @Singleton
+  static class R {
+    static boolean injected = false;
+    @Inject R() {
+      injected = true;
+    }
+  }
+
+  static class S {}
+}

--
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice-dev?hl=en.

Reply via email to