Excellent! Thanks a ton for the explanation.

-Rakesh

On Jun 7, 5:00 am, Fred Faber <[email protected]> wrote:
> This is a classic case for using a Mapbinder:
>  http://code.google.com/p/google-guice/wiki/Multibindings
>
> The two key aspects:
>
> public void FetcherModule extends AbstractModule {
>
>   @Override
>   protected void configure() {
>       Mapbinder<FetchType, IFetcher> mapbinder =
>          MapBinder.newMapBinder(binder(), FetchType.class, IFetcher.class);
>       mapbinder.addBinding(FetchType.STREAM, StreamFetcher.class);
>       mapbinder.addBinding(FetchType.MEMOBERY, MemoryFetcher.class);
>       ....
>    }
>
> }
>
> And then:
>
> class InvokeFetcher {
>
>   private final Map<FetchType, IFetcher> fetchersByType;
>
>   @Inject
>   InvokeFetcher(Map<FetchType, IFetcher> fetchersByType) {
>      this.fetchersByType = fetchersByType;
>   }
>
>   void fetch(FetchRecord fetchRecord) {
>       IFetcher fetcher = com.google.base.Preconditions.checkNonNull(
>            fetchersByType.get(fetchRecord.getType),
>            "No fetcher found for type [%s] within [%s]",
> fetchRecord.getType(), fetchersByType));
>       fetcher.fetch();
>    }
>
> }
>
> -Fred
>
>
>
> On Sun, Jun 6, 2010 at 3:09 AM, xp <[email protected]> wrote:
> > Hi,
>
> > I am new to guice and trying to explore on how to use it in my
> > project. I have the following use case:
>
> > 1) interface IFetcher { void fetch();  }
>
> > 2) Multiple implementation:
> > class StreamFetcher implements IFetcher { void fetch(){}  }
> > class MemoryFetcher implements IFetcher { void fetch(){} }
> > class DBFetcher implements IFetcher { void fetch(){} }
> > ..... There are around 6-7 types.
>
> > 3) class FetchRecord {
> > private FetchType fetchType;
> > // ... data
> > public getType(){
> > return fetchType;
> > }
> > }
>
> > 4) Have a fetcherCaller
> > class InvokeFetcher {
> > private EnumMap<FetchType, IFetcher> fetcherMap;
> > public fetch(FetchRecord record) {
> > fetcherMap.get(record.getType).fetch();
> > }
> > }
>
> > Currently I have modeled this using spring ioc. Could anyone guide me
> > on how to achieve this using guice?
>
> > 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]<google-guice%2bunsubscr...@google 
> > groups.com>
> > .
> > 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.

Reply via email to