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

io.mstream.trader.datafeed.config.ServiceModule Maven / Gradle / Ivy

The newest version!
package io.mstream.trader.datafeed.config;

import com.google.inject.AbstractModule;
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.guice.scope.ThreadScopeModule;
import io.mstream.trader.commons.http.HttpModule;
import io.mstream.trader.commons.ratpack.exception.RatpackModule;
import io.mstream.trader.commons.utils.cache.CacheModule;
import io.mstream.trader.commons.validation.ValidationModule;
import io.mstream.trader.datafeed.cache.repository.RepositoryCacheModule;
import io.mstream.trader.datafeed.handlers.HandlersModule;
import io.mstream.trader.datafeed.stocks.StocksModule;
import io.mstream.trader.datafeed.stocks.quandl.Quandl;

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(
                        "data-feed",
                        CONFIG_SUPPLIER_TYPE
                )
        );

        install(new RatpackModule());
        install(new ValidationModule());
        install(new ThreadScopeModule());
        install(new StocksModule());
        install(new HandlersModule());
        install(new HttpModule());
        install(new CacheModule());
        install(new RepositoryCacheModule());

        bind(DOWNSTREAM_SERVICE_SUPPLIER_TYPE)
                .annotatedWith(Quandl.class)
                .to(QuandlConfigSupplier.class);
    
        bind(STRING_SUPPLIER_TYPE)
                .to(QuandlApiKeySupplier.class);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy