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