package microservices.sample.persistence;
import com.google.inject.AbstractModule;
import com.hazelcast.core.HazelcastInstance;
import microservices.sample.discovery.ServiceRegistry;
import microservices.sample.discovery.hazelcast.HazelcastBuilder;
import microservices.sample.discovery.hazelcast.HazelcastServiceRegistry;
import microservices.sample.persistence.ratpack.EntitiesCollectionHandler;
import microservices.sample.persistence.ratpack.PersistenceHandlerFactory;
/**
* @author mamad
* @since 17/03/15.
*/
public class PersistenceModule extends AbstractModule {
private final String ipAddress;
private final int port;
private final String version;
public PersistenceModule(String ipAddress, int port, String version) {
this.ipAddress = ipAddress;
this.port = port;
this.version = version;
}
@Override
protected void configure() {
//ratpack handlers
bind(PersistenceHandlerFactory.class);
bind(EntitiesCollectionHandler.class);
HazelcastInstance hazelcastInstance = HazelcastBuilder.create().build();
ServiceRegistry serviceRegistry = new HazelcastServiceRegistry(hazelcastInstance);
bind(ServiceRegistry.class).toInstance(serviceRegistry);
bind(HazelcastInstance.class).toInstance(hazelcastInstance);
bind(EntityStore.class).to(HazelcastEntityStore.class);
ServiceRegistrar serviceRegistrar = new ServiceRegistrar(ipAddress, port, serviceRegistry, version);
//now publish service into into registry
serviceRegistrar.register();
}
}