package org.myeslib.example.hazelcast.modules; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.name.Named; import com.hazelcast.config.Config; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import lombok.AllArgsConstructor; import org.myeslib.example.hazelcast.infra.HazelcastConfigFactory; import org.myeslib.example.hazelcast.infra.InventoryItemMapConfigFactory; import org.myeslib.example.hazelcast.infra.InventoryItemSerializersConfigFactory; import org.myeslib.util.hazelcast.HzMapStore; import javax.inject.Singleton; @AllArgsConstructor public class HazelcastModule extends AbstractModule { int writeDelaySeconds ; @Provides @Singleton @Named("writeDelaySeconds") public int writeDelaySeconds() { return writeDelaySeconds; } @Provides @Singleton public Config config(InventoryItemMapConfigFactory mapConfigFactory, InventoryItemSerializersConfigFactory serializersFactory) { return new HazelcastConfigFactory(mapConfigFactory.create(), serializersFactory.create()).getConfig(); } @Provides @Singleton public HazelcastInstance hazelcastInstance(Config config) { return Hazelcast.newHazelcastInstance(config); } @Override protected void configure() { bind(HzMapStore.class); } }