Just for information:

I do not have to bind the "providerMap" itself somehow? Is it working
like this because there is this "binder()" call?

At:

MapBinder.newMapBinder(binder(), String.class, MyInterface.class);

On Tue, Nov 29, 2011 at 6:55 PM, Xanadu <[email protected]> wrote:
> Thanks a lot for your support.
>
> It works like a charm now. Finally, The easier the better !
>
> I didn't know that you can define your module with Map<String,
> MyInterface> and then inject Map<String,
> Provider<MyInterface>>
>
>
> On 29 nov, 18:05, Bartosz Michalik <[email protected]> wrote:
>> On 11/29/2011 05:39 PM, Xanadu wrote:
>>
>> > public class MyModule extends AbstractModule {
>> >    @Override
>> >    protected void configure() {
>> >              MapBinder<String, Provider<MyInterface>>  providerMap =
>> > MapBinder.newMapBinder(binder(), new TypeLiteral<String>() {}, new
>> > TypeLiteral<Provider<MyInterface>>(){});
>>
>> > providerMap.addBinding("myKey1").to(MyInterfaceImpl1Provider.class);
>>
>> > providerMap.addBinding("myKey2").to(MyInterfaceImpl2Provider.class);
>> >          }
>> > }
>>
>> > Maybe my configuration is wrong...
>>
>> Try this
>>
>> public class MyModule extends AbstractModule {
>>         @Override
>>         protected void configure() {
>>                 MapBinder<String, MyInterface> binder =
>> MapBinder.newMapBinder(binder(), String.class, MyInterface.class);
>>                 binder.addBinding("X").toProvider(ProviderX.class);
>>                 binder.addBinding("Another")
>>                  .toProvider(AnotherProviderX.class);
>>         }
>>
>> }
>>
>> public class Other {
>> @Inject public Other(Map<String, Provider<MyInterface> param) {}
>>
>> }
>>
>> and then you can use both Map<String, MyInterface> and Map<String,
>> Provider<MyInterface>> as parameters for other elements. The difference
>> is  (as mentioned before) that in the first case object are created
>> before injection in the second case when the get() method of a provider
>> is called.
>>
>> Best regards,
>> Bartosz
>
> --
> You received this message because you are subscribed to the Google Groups 
> "google-guice" 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?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" 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?hl=en.

Reply via email to