All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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