I haven't tested this (and am writing it on my phone), but try
installing FactoryModuleBuilder as normal and then binding the
mapbinder with mapBinder.addBinding(blah).toProvider(getProvider
(MyFactory.class)). "getProvider" being the important bit here.
Sam
On Jul 22, 2010, at 2:11 PM, Leigh Klotz <[email protected]> wrote:
I seem to ask questions about these three things fairly regularly, so
please bear with me if you find it repetitive.
With earlier versions of assistedinject, I could use
FactoryProvider.newFactory like this:
mapbinder.addBinding("orange").
toProvider(FactoryProvider.newFactory(FruitFactory.class,
Orange.class));
mapbinder.addBinding("banana").
toProvider(FactoryProvider.newFactory(FruitFactory.class,
Banana.class));
@Inject Map<String, FruitFactory> map;
map.get(fruitname).bear(3);
See discussion of this "command" pattern with mapbinder and
assistedinject here: http://tinyurl.com/22t28y6
With FactoryModuleBuilder, I'm not sure how to obtain the Provider
object to put into the mapbinder.
Below are some half-baked ideas I've pursued; if you already know what
I mean by reading the above, this part probably will just be
confusing.
I did see that I can create annotated providers, in answer to a
question I asked about FactoryModuleBuilder: http://tinyurl.com/
2baormz
But it's not clear to me that this gives me the indirection I need to
bear dynamic fruit.
I also see you can use TypeLiteral with FactoryModuleBuilder. So
perhaps I could simply drop the mapbinder altogether and change Fruit
to be Fruit<T> and let Guice's type mechanism satisfy the type
injection of FruitFactory<Orange>, but I still lack the indirection
necessary to obtain a FruitFactory where the fruit class is known only
at runtime.
Thank you,
Leigh.
--
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.