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

io.mstream.trader.datafeed.handlers.api.stocks.price.GetPriceModule Maven / Gradle / Ivy

The newest version!
package io.mstream.trader.datafeed.handlers.api.stocks.price;

import com.google.inject.AbstractModule;
import com.google.inject.assistedinject.FactoryModuleBuilder;
import io.mstream.trader.commons.ratpack.exception.ValidationErrorHandler;
import io.mstream.trader.commons.validation.parameter.LocalDateValidator;
import io.mstream.trader.commons.validation.request.RequestValidator;
import io.mstream.trader.datafeed.handlers.api.stocks.price.data.PriceDataModule;
import io.mstream.trader.datafeed.handlers.api.stocks.price.data.StockPrice;
import io.mstream.trader.datafeed.handlers.api.stocks.price.data.StockPriceFactory;
import ratpack.handling.Handler;

import java.time.format.DateTimeFormatter;

import static com.google.inject.Scopes.SINGLETON;


public class GetPriceModule extends AbstractModule {

    @Override
    protected void configure() {

        install(new PriceDataModule());

        install(new FactoryModuleBuilder()
                .implement(StockPrice.class, StockPrice.class)
                .build(StockPriceFactory.class));

        bind(ValidationErrorHandler.class)
                .annotatedWith(GetPrice.class)
                .to(GetPriceValidationErrorHandler.class)
                .in(SINGLETON);

        bind(RequestValidator.class)
                .annotatedWith(GetPrice.class)
                .to(GetPriceRequestValidator.class)
                .in(SINGLETON);

        bind(Handler.class)
                .annotatedWith(GetPrice.class)
                .to(GetPriceHandler.class)
                .in(SINGLETON);

        bind(DateTimeFormatter.class)
                .toInstance(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

        bind(LocalDateValidator.class)
                .toProvider(LocalDateValidatorProvider.class)
                .in(SINGLETON);

        bind(ParameterNameProvider.class)
                .in(SINGLETON);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy