Just have a look at com.google.inject.multibindings.MapBinder

Unfortunately it is only available in the trunk and I do not know if
this extensions is going to work with Guice 1.0. Just give it a try.

Sven

On Sep 16, 5:01 pm, Toki <[EMAIL PROTECTED]> wrote:
> Hi people,
>
> Let's consider the following situation.
>
> We have a service manager that handles the service specific operations
> and is
> unique per service.
>
> class ServiceManager {
>   private BackendClient backend;
>   private String serviceId;
>
>   @Inject public ServiceManager(BackendClient backend, String
> serviceId) {
>     this.backend = backend;
>     this.serviceId = serviceId;
>   }
>
>   public boolean equals(Object obj) {
>     //.....
>     return Objects.equals(serviceId, ((ServiceManager)obj).serviceId);
>   }
>
>   public void handle() {
>     // here are bussuiness logic
>     backend.doThis1();
>     backend.doThis2();
>     // ...
>   }
>
> }
>
> I want to have the collection of ServiceManager in one of the standard
> scopes,
> let it be singleton scope. How is it possible to implement this with
> Guice?
>
> The trivial implementation would be creating a SuperServiceManager
> that aggregates
> these ServiceManager classes.
>
> class SuperServiceManager {
>   private Map<String, ServiceManager> mngrs = Maps.newHashMap();
>   private BackendClient backend;
>
>   @Inject public SuperServiceManager(BackendClient backend) {
>     this.backend = backend;
>   }
>
>   public ServiceManager getManager(String serviceId) {
>     if (!mngrs.contains(serviceId))
>     {
>         mngrs.put(new ServiceManager(backend, serviceId);
>     }
>     return mngrs.get(serviceId);
>   }
>
> }
>
> And then we have to place SuperServiceManager in required scope.
> class MyModule extends AbstractModule {
>   public void configure()
>   {
>     bind(SuperServiceManager.class).in(Scopes.SINGLETON);
>   }
>
> }
>
> But it's the case where keyword "new" arise and some dependencies are
> handled by hands,
> like putting BackendClient. Maybe there is much more wise solution
> using some kinda
> general provider or one of Guice2 cool features.
>
> I hope that problem explained by me in this post is frequent enough
> that you'd solved it.
>
> Thank you.
--~--~---------~--~----~------------~-------~--~----~
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