package dgm.modules;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.multibindings.Multibinder;
import dgm.Service;
/**
* Extends this class so you have two helper methods to do
* {@link Service} or regular multibindings
*/
public abstract class ServiceModule extends AbstractModule
{
protected <S extends Service> void bindService(Class<S> serviceClass)
{
Multibinder.newSetBinder(binder(), Service.class).addBinding().to(serviceClass).in(Scopes.SINGLETON);
}
protected <S> LinkedBindingBuilder<S> multiBind(Class<S> c)
{
return Multibinder.newSetBinder(binder(), c).addBinding();
}
}