Yes I tried that, but it doesn't solve my problem. :-(
Any other clues? Cheers, Rahul On Oct 4, 3:58 am, "James Strachan" <[EMAIL PROTECTED]> wrote: > Am not sure it totally solves your issue but you've seen how to get a > TypeLiteral from a Class > right?http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/injec...) > > 2008/10/3 Rahul <[EMAIL PROTECTED]>: > > > > > > > Context: I have a Store interface for saving various Entities - > > Project, ProjectGroup, ProjectNotifier - all extending from > > CommonUpdatableEntity: > > > public interface Store<T extends CommonUpdatableEntity, Q extends > > Query<T>> { > > public T save(T entity) throws StoreException; > > // ...omitted for brevity. > > } > > > and its implementation: > > > public class JpaStore<T extends CommonUpdatableEntity, Q extends > > Query<T>> implements Store<T, Q> { > > [EMAIL PROTECTED] > > public T save(T entity) throws StoreException { > > // ...omitted for brevity. > > return savedEntity; > > } > > } > > > configured via a module: > > > public class StoreModule extends AbstractModule { > > protected void configure() { > > bind(new TypeLiteral<Store<Project, Query<Project>>>() { > > }).to(new TypeLiteral<JpaStore<Project, Query<Project>>>() { > > }); > > bind(new TypeLiteral<Store<ProjectGroup, Query<ProjectGroup>>>() { > > }).to( > > new TypeLiteral<JpaStore<ProjectGroup, Query<ProjectGroup>>>() > > { > > }); > > bind(new TypeLiteral<Store<ProjectNotifier, > > Query<ProjectNotifier>>>() { > > }).to( > > new TypeLiteral<JpaStore<ProjectNotifier, > > Query<ProjectNotifier>>>() { > > }); > > } > > } > > > In my web actions (Controllers of MVC), I would like to retrieve the > > appropriate Store instance based on the Entity the action is creating/ > > updating. > > > To mimic this, I quickly created the following unit test which > > attempts to get a Store instance in a similar manner: > > > public class StoreTest{ > > @Inject > > Injector injector; > > > //...omitted > > > [EMAIL PROTECTED] > > public void testCreateProject() throws StoreException { > > Project project = new Project(); > > project.setName("sample-project"); > > Store<Project, Query<Project>> store = > > getStoreInstance(Project.class); > > Assert.assertTrue(null == project.getId()); // FAILS TO GET A > > STORE INSTANCE > > project = store.save(project); > > } > > > private <T extends CommonUpdatableEntity> Store<T, Query<T>> > > getStoreInstance(Class<T> entity) { > > List<Binding<Store<T, Query<T>>>> bindings = > > injector.findBindingsByType(new TypeLiteral<Store<T, Query<T>>>() { > > }); > > if (bindings.size() > 0) { > > return bindings.get(0).getProvider().get(); > > } > > return null; > > } > > > } > > > So, basically I want: > > - a JpaStore<Project, Query<Project>> instance for Project.class > > - a JpaStore<ProjectGroup, Query<ProjectGroup>> instance for > > ProjectGroup.class > > - so on ... > > > My question - How can I do such an instance retrieval using Guice API > > at runtime? > > > Thanks, > > > Rahul > > -- > James > -------http://macstrac.blogspot.com/ > > Open Source Integrationhttp://open.iona.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
