package com.metrink.croquet.examples.crm; import com.google.inject.AbstractModule; import com.google.inject.TypeLiteral; import com.google.inject.assistedinject.FactoryModuleBuilder; import com.google.inject.name.Names; import com.metrink.croquet.examples.crm.data.CompanyBean; import com.metrink.croquet.examples.crm.data.GenericDataProvider.GenericDataProviderFactory; import com.metrink.croquet.examples.crm.data.PeopleDataProvider.PeopleDataProviderFactory; /** * A Guice module that binds dependencies. */ public class CrmModule extends AbstractModule { private final CrmSettings settings; /** * Constructor that takes a settings instance. * @param settings the settings. */ public CrmModule(final CrmSettings settings) { this.settings = settings; } @Override protected void configure() { bind(String.class).annotatedWith(Names.named("current-user")).toInstance(settings.getCurrentUser()); install(new FactoryModuleBuilder().build(PeopleDataProviderFactory.class)); install(new FactoryModuleBuilder().build(new TypeLiteral<GenericDataProviderFactory<CompanyBean>>() { })); } }