Author: limpbizkit
Date: Fri Jun  5 11:15:21 2009
New Revision: 998

Modified:
    trunk/src/com/google/inject/binder/LinkedBindingBuilder.java
    trunk/src/com/google/inject/internal/BindingBuilder.java
    trunk/test/com/google/inject/spi/ElementsTest.java

Log:
Fix for issue 381, contributed by robsonbraga. Plus a test.

Modified: trunk/src/com/google/inject/binder/LinkedBindingBuilder.java
==============================================================================
--- trunk/src/com/google/inject/binder/LinkedBindingBuilder.java        
(original)
+++ trunk/src/com/google/inject/binder/LinkedBindingBuilder.java        Fri Jun 
 5  
11:15:21 2009
@@ -66,5 +66,11 @@
     * See the EDSL examples at {...@link com.google.inject.Binder}.
     */
    ScopedBindingBuilder toProvider(
+      TypeLiteral<? extends Provider<? extends T>> providerType);
+
+  /**
+   * See the EDSL examples at {...@link com.google.inject.Binder}.
+   */
+  ScopedBindingBuilder toProvider(
        Key<? extends Provider<? extends T>> providerKey);
  }

Modified: trunk/src/com/google/inject/internal/BindingBuilder.java
==============================================================================
--- trunk/src/com/google/inject/internal/BindingBuilder.java    (original)
+++ trunk/src/com/google/inject/internal/BindingBuilder.java    Fri Jun  5  
11:15:21 2009
@@ -118,6 +118,10 @@
      return toProvider(Key.get(providerType));
    }

+  public BindingBuilder<T> toProvider(TypeLiteral<? extends Provider<?  
extends T>> providerType) {
+    return toProvider(Key.get(providerType));
+  }
+
    public BindingBuilder<T> toProvider(Key<? extends Provider<? extends T>>  
providerKey) {
      checkNotNull(providerKey, "providerKey");
      checkNotTargetted();

Modified: trunk/test/com/google/inject/spi/ElementsTest.java
==============================================================================
--- trunk/test/com/google/inject/spi/ElementsTest.java  (original)
+++ trunk/test/com/google/inject/spi/ElementsTest.java  Fri Jun  5 11:15:21  
2009
@@ -356,6 +356,7 @@
              bind(String.class).toProvider(aProvider);
              bind(List.class).toProvider(ListProvider.class);
              bind(Collection.class).toProvider(Key.get(ListProvider.class));
+            bind(Iterable.class).toProvider(new  
TypeLiteral<TProvider<List>>() {});
            }
          },

@@ -400,6 +401,20 @@
              });
              return null;
            }
+        },
+
+        new FailingElementVisitor() {
+          @Override public <T> Void visit(Binding<T> command) {
+            assertTrue(command instanceof ProviderKeyBinding);
+            assertEquals(Key.get(Iterable.class), command.getKey());
+            command.acceptTargetVisitor(new FailingTargetVisitor<T>() {
+              @Override public Void visit(ProviderKeyBinding<? extends T>  
binding) {
+                assertEquals(new Key<TProvider<List>>() {},  
binding.getProviderKey());
+                return null;
+              }
+            });
+            return null;
+          }
          }
      );
    }
@@ -1056,6 +1071,12 @@
    private static class ListProvider implements Provider<List> {
      public List get() {
        return new ArrayList();
+    }
+  }
+
+  private static class TProvider<T> implements Provider<T> {
+    public T get() {
+      return null;
      }
    }


--~--~---------~--~----~------------~-------~--~----~
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