Actually, my initial example was a bit different than the one I wrote. I don't see a reason to create the different bindings for the Factories. Just add a single binding, then use it as values for several entries in the map.
Fred On Mon, Jan 10, 2011 at 11:41 AM, Fred Faber <[email protected]> wrote: > To solve this you're able to bind the Factory using FactoryModule builder, > and then add it to the map. > > class Car { > @Inject Car(@Assisted Color color) { ...} > > interface CarFactory { > Car create(Color color); > } > } > > And let's say you want a map that gives you: > "green" => new Car(Color.GREEN) > "blue" => new Car(Color.BLUE) > > install(new FactoryModuleBuilder(). > .build(Key.get(CarFactory.class, Names.named("CreatesGreenCars")); > > > install(new FactoryModuleBuilder(). > .build(Key.get(CarFactory.class, Names.named("CreatesBlueCars")); > > MapBinder<Color, CarFactory> mapBinder = > MapBinder.newMapBinder(binder(), Color.class, CarFactory.class); > mapBinder.addBinding(Color.GREEN) > .to(Key.get(CarFactory.class, Names.named("CreatesGreenCars")); > mapBinder.addBinding(Color.BLUE) > .to(Key.get(CarFactory.class, Names.named("CreatesBlueCars")); > > That will give you what you're looking for, I believe. > > There's some boilerplate that a method or two could reduce e.g., Key > getKey(Color color) { ...} > > -Fred > > > On Mon, Jan 10, 2011 at 11:22 AM, kimchy <[email protected]> wrote: > >> Hi, >> >> Wondering how to use the new assisted inject with MapBinder, now that >> FactoryProvider is deprecated? For example, how to code >> this: mapBinder.addBinding(name).toProvider(FactoryProvider...) ? >> >> cheers, >> -shay.banon >> >> -- >> 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]<google-guice%[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.
