
io.mstream.trader.simulation.config.ServiceModule Maven / Gradle / Ivy
package io.mstream.trader.simulation.config;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.google.inject.TypeLiteral;
import io.mstream.trader.commons.config.ConfigModule;
import io.mstream.trader.commons.config.model.DownstreamService;
import io.mstream.trader.commons.config.supplier.ConfigSupplier;
import io.mstream.trader.commons.utils.cache.CacheModule;
import io.mstream.trader.commons.validation.ValidationModule;
import io.mstream.trader.simulation.IdGenerator;
import io.mstream.trader.simulation.UUIDGenerator;
import io.mstream.trader.simulation.handlers.HandlersModule;
import io.mstream.trader.simulation.handlers.api.simulation
.SimulationHandlerModule;
import io.mstream.trader.simulation.security.Secret;
import io.mstream.trader.simulation.security.SecurityModule;
import io.mstream.trader.simulation.simulation.SimulationModule;
import io.mstream.trader.simulation.stocks.StocksModule;
import io.mstream.trader.simulation.stocks.datafeed.DataFeedModule;
import io.mstream.trader.simulation.stocks.datafeed.api.DataFeed;
import java.util.function.Supplier;
public class ServiceModule
extends AbstractModule {
private static final TypeLiteral>
CONFIG_SUPPLIER_TYPE =
new TypeLiteral>() {
};
private static final TypeLiteral>
STRING_SUPPLIER_TYPE =
new TypeLiteral>() {
};
private static final TypeLiteral>
DOWNSTREAM_SERVICE_SUPPLIER_TYPE =
new TypeLiteral>() {
};
@Override
protected void configure() {
install(
new ConfigModule(
"simulation",
CONFIG_SUPPLIER_TYPE
)
);
install(new ValidationModule());
install(new HandlersModule());
install(new DataFeedModule());
install(new SimulationHandlerModule());
install(new StocksModule());
install(new SimulationModule());
install(new SecurityModule());
install(new CacheModule());
bind(IdGenerator.class)
.to(UUIDGenerator.class)
.in(Scopes.SINGLETON);
bind(STRING_SUPPLIER_TYPE)
.annotatedWith(Secret.class)
.to(SecretSupplier.class);
bind(DOWNSTREAM_SERVICE_SUPPLIER_TYPE)
.annotatedWith(DataFeed.class)
.to(DataFeedConfigSupplier.class);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy