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

com.sportradar.unifiedodds.sdk.di.CustomisableSDKModule Maven / Gradle / Ivy

/*
 * Copyright (C) Sportradar AG. See LICENSE for full license governing this code
 */

package com.sportradar.unifiedodds.sdk.di;

import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Names;
import com.sportradar.uf.sportsapi.datamodel.MarketDescriptions;
import com.sportradar.unifiedodds.sdk.SnapshotRequestManager;
import com.sportradar.unifiedodds.sdk.impl.*;

/**
 * An injection module which is used to customise some of the SDK internal components
 */
public class CustomisableSDKModule extends AbstractModule {
    /**
     * Configures a {@link Binder} via the exposed methods.
     */
    @Override
    protected final void configure() {

        bind(ChannelMessageConsumer.class).to(provideMessageConsumerImplementationClass());
        bind(SnapshotRequestManager.class).to(provideSnapshotRequestSchedulerImplementationClass()).in(Singleton.class);

        bind(new TypeLiteral>() { })
                .annotatedWith(Names.named("AdditionalMarketMappingsProvider"))
                .to(providesAdditionalMarketMappingsProviderClass())
                .in(Singleton.class);
    }

    /**
     * Binds the message receiver that should be used to process received messages
     */
    protected Class provideMessageConsumerImplementationClass() {
        return ChannelMessageConsumerImpl.class;
    }

    /**
     * Binds the snapshot request manager that should be used to manage recovery requests
     */
    protected Class provideSnapshotRequestSchedulerImplementationClass() {
        return DefaultSnapshotRequestManager.class;
    }

    /**
     * Binds the optional additional market mappings provider
     */
    protected Class> providesAdditionalMarketMappingsProviderClass() {
        return DefaultAdditionalMarketMappingsProvider.class;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy