It looks to me you should write your own factory, containing a: Map<StoreEntityClassInfo, Provider<Adapter>> Where StoreEntityClassInfo contains both the store class and the entity class.
Your factory would then have a: create(Class<? extends Store> storeClass, Class<? extends Entity> entityClass); The last thing you need to do is register all your Adapter classes towards your factory. You might be able to do that with a multi binding. Cheers, Philippe On Tue, Nov 23, 2010 at 12:44 PM, Yuri de Wit <[email protected]> wrote: > I am a bit lost trying to bind generic classes. > > Consider the following pseudo classes: > > class Store { > void persist(Entity) > Adapter getAdapter(Entity) > } > class AStore: Store > class BStore: Store > > class Entity > class XEntity: Entity > class YEntity: Entity > > class Adapter > class AXAdapter: Adapter > class AYAdapter: Adapter > class BXAdapter: Adapter > class BYAdapter: Adapter > > How could I use Guice to implement a factory for adapters? I basically > want to call Store.persist(Entity) and have the Store base class get > the right adapter for the specific Store and the specific Entity. So, > for instance, AStore.getAdapter(XEntity) should return AXAdapter. It > is as if I could bind <Store,Entity> to a given adapter > implementation. Of course, it would be ideal if I could have a generic > implementation of the code instead of having to duplicate the code for > each Store subclass. > > I went as far as using injector.getBindingsByType() but the code > always returns nothing. Wondering if this is a supported usecase and > if others had implemented such Many-to-Many bindings before. > > thanks in advance. > > -- > 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.
