Thanks

On Monday, January 16, 2017 at 4:19:14 PM UTC-8, scl wrote:
>
> If you only want to add server to the MapBinder then there is no need to 
> overwrite modules.
>
> From the JavaDoc [1]:
> Contributing mapbindings from different modules is supported. For example, 
> it is okay to have both CandyModule and ChipsModule both create their own 
> MapBinder<String, 
> Snack>, and to each contribute bindings to the snacks map. When that map 
> is injected, it will contain entries from both modules.
>
> [1] 
> http://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/multibindings/MapBinder.html
>
>
> On 17.01.2017 00:52, Rchytas wrote:
>
> I was wondering where does override go (Sorry if its a dumb question, I'm 
> new to Guice). I've module deployed in web app as below - 
>
>
> import com.google.inject.multibindings.MapBinder;
>
> public class ExternalDatabaseModule extends AbstractModule implements 
> com.abc.Module {
>   public void configure() {
>     MapBinder<String, ExternalDatabaseConnection> m = 
> MapBinder.newMapBinder(binder(), String.class, 
> ExternalDatabaseConnection.class);
>     m.addBinding("DBServer1).to(ExternalDBServer1Connection.class);
>     m.addBinding("DBServer2").to(ExternalDBServer2Connection.class);
>         
>   }  
> }
>
> I then created another module and exported this to a jar file and then 
> added this jar to tomcat/web-inf/lib. But my new binding did not get 
> discovered
>
> public class ABCExternalDatabaseModule extends AbstractModule implements
> com.abc.Module {
> @Override
> public void configure() {
> MapBinder<String, ExternalDatabaseConnection> m = MapBinder
> .newMapBinder(binder(), String.class,
> ExternalDatabaseConnection.class);
> m.addBinding("DBServer3").to(ExternalDBServer3Connection.class);
>
> }
>
> public ABCExternalDatabaseModule() {
> Guice.createInjector(Modules.override(
> new ExternalDatabaseModule()).with(
> new ABCExternalDatabaseModule()));
> }
>
> }
>
>
> On Monday, January 17, 2011 at 11:27:39 PM UTC-8, Reinhard Nägele wrote: 
>>
>> I just discovered that bindings created with a MapBinder cannot be 
>> overridden. Here's an example: 
>>
>> Module module1 = new AbstractModule() { 
>>     @Override 
>>     protected void configure() { 
>>         MapBinder<String, String> mapBinder = 
>>             MapBinder.newMapBinder(binder(), String.class, 
>> String.class); 
>>         mapBinder.addBinding("foo").toInstance("foo1"); 
>>     } 
>> }; 
>>
>> Module module2 = new AbstractModule() { 
>>     @Override 
>>     protected void configure() { 
>>         MapBinder<String, String> mapBinder = 
>>             MapBinder.newMapBinder(binder(), String.class, 
>> String.class); 
>>         mapBinder.addBinding("foo").toInstance("foo2"); 
>>     } 
>> }; 
>>
>> Guice.createInjector(Modules.override(module1).with(module2)); 
>>
>>
>> Executing the above code yields the following error in Guice 2.0 and 
>> 3.0-rc2: 
>>
>> Exception in thread "main" com.google.inject.CreationException: Guice 
>> creation errors: 
>>
>> 1) Map injection failed due to duplicated key "foo" 
>>   at com.google.inject.multibindings.MapBinder$RealMapBinder 
>> $1.initialize(MapBinder.java:355) 
>>   at spielplatz.TestApp$2.configure(TestApp.java:31) 
>>
>> 1 error 
>>         at 
>> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:
>>  
>>
>> 416) 
>>         at 
>> com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:
>>  
>>
>> 175) 
>>         at 
>> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:
>>  
>>
>> 109) 
>>         at com.google.inject.Guice.createInjector(Guice.java:95) 
>>         at com.google.inject.Guice.createInjector(Guice.java:72) 
>>         at com.google.inject.Guice.createInjector(Guice.java:62) 
>>         at spielplatz.TestApp.main(TestApp.java:36) 
>>
>>
>> Is this intended behavior? It looks like a bug to me, or am I missing 
>> something? 
>>
>> Reinhard 
>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "google-guice" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to google-guice...@googlegroups.com <javascript:>.
> To post to this group, send email to google...@googlegroups.com 
> <javascript:>.
> Visit this group at https://groups.google.com/group/google-guice.
> To view this discussion on the web visit 
> <https://groups.google.com/d/msgid/google-guice/7d227d88-812a-4abe-92e7-77e79d2f644c%40googlegroups.com?utm_medium=email&utm_source=footer>
> https://groups.google.com/d/msgid/google-guice/7d227d88-812a-4abe-92e7-77e79d2f644c%40googlegroups.com
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-guice+unsubscr...@googlegroups.com.
To post to this group, send email to google-guice@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/239a0f19-057b-462a-b39e-f8777e90b72b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to