package microservices.sample.user; import com.google.inject.AbstractModule; import com.hazelcast.core.HazelcastInstance; import microservices.sample.discovery.ServiceDiscovery; import microservices.sample.discovery.ServiceDiscoveryImpl; import microservices.sample.discovery.hazelcast.HazelcastBuilder; import microservices.sample.discovery.hazelcast.PublishServiceListener; import microservices.sample.user.ratpack.UserHandlerFactory; import microservices.sample.user.ratpack.UsersCollectionHandler; /** * @author mamad * @since 15/03/15. */ public class UserModule extends AbstractModule { public static final String PERSISTENCE_SERVICE_VERSION = "v1"; @Override protected void configure() { //build the discovery service ServiceDiscovery serviceDiscovery = new ServiceDiscoveryImpl(); bind(ServiceDiscovery.class).toInstance(serviceDiscovery); HazelcastInstance hazelcastInstance = HazelcastBuilder.create() .withListener(new PublishServiceListener(serviceDiscovery)) .build(); bind(HazelcastInstance.class).toInstance(hazelcastInstance); AutoDiscoveryPersistenceServiceProvider persistenceServiceProvider = new AutoDiscoveryPersistenceServiceProvider(PERSISTENCE_SERVICE_VERSION); //to notify persistenceServiceProvider whenever a new persistenceService is up and running serviceDiscovery.addListener(persistenceServiceProvider); bind(PersistenceServiceProvider.class).toInstance(persistenceServiceProvider); bind(UserStore.class).to(UserStoreImpl.class); //ratpack handlers bind(UsersCollectionHandler.class); bind(UserHandlerFactory.class); } }