package restx; import com.google.common.eventbus.EventBus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import restx.common.UUIDGenerator; import restx.common.metrics.api.health.HealthCheckRegistry; import restx.common.metrics.dummy.health.DummyHealthCheckRegistry; import restx.config.ConfigLoader; import restx.config.ConfigSupplier; import restx.factory.AutoStartable; import restx.factory.Factory; import restx.factory.Module; import restx.factory.Provides; import javax.inject.Named; /** */ @Module(priority = 10000) public class CoreModule { private static final Logger logger = LoggerFactory.getLogger(CoreModule.class); public static final String UUID_GENERATOR = "UUIDGenerator"; @Provides public ConfigSupplier coreAppConfigSupplier(ConfigLoader configLoader) { return configLoader.fromResource("restx/appConfig"); } @Provides public ConfigSupplier httpConfigSupplier(ConfigLoader configLoader) { return configLoader.fromResource("restx/httpConfig"); } @Provides public EventBus eventBus() { return new EventBus(); } @Provides public AutoStartable loadEventBusOnStartUp(EventBus eventBus) { return new AutoStartable() { @Override public void start() { logger.debug("started EventBus"); } }; } @Provides @Named(Factory.HEALTH_CHECK_REGISTRY) public HealthCheckRegistry healthCheckRegistry() { return new DummyHealthCheckRegistry(); } @Provides @Named(UUID_GENERATOR) public UUIDGenerator uuidGenerator() { return new UUIDGenerator.DefaultUUIDGenerator(); } }