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

uk.co.mruoc.promo.config.SpringDomainConfig Maven / Gradle / Ivy

The newest version!
package uk.co.mruoc.promo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import uk.co.mruoc.promo.entity.account.AccountFactory;
import uk.co.mruoc.promo.entity.promo.PromoFactory;
import uk.co.mruoc.promo.usecase.account.AccountPopulator;
import uk.co.mruoc.promo.usecase.account.AccountRepository;
import uk.co.mruoc.promo.usecase.account.AccountService;
import uk.co.mruoc.promo.usecase.PromoClaimService;
import uk.co.mruoc.promo.usecase.PromoFacade;
import uk.co.mruoc.promo.usecase.promo.PromoRepository;
import uk.co.mruoc.promo.usecase.promo.PromoPopulator;
import uk.co.mruoc.promo.usecase.promo.PromoService;

@Configuration
public class SpringDomainConfig {

    @Bean
    public AccountFactory accountFactory() {
        return new AccountFactory();
    }

    @Bean
    public PromoFactory promoFactory() {
        return new PromoFactory();
    }

    @Bean
    public AccountPopulator accountPopulator(AccountFactory factory, AccountService service) {
        return AccountPopulator.builder()
                .factory(factory)
                .service(service)
                .build();
    }

    @Bean
    public PromoPopulator promoPopulator(PromoFactory factory, PromoService service) {
        return PromoPopulator.builder()
                .factory(factory)
                .service(service)
                .build();
    }

    @Bean
    public PromoFacade promoFacade(PromoClaimService claimService,
                                   PromoService promoService) {
        return PromoFacade.builder()
                .claimService(claimService)
                .promoService(promoService)
                .build();
    }

    @Bean
    public PromoClaimService promoClaimService(AccountService accountService,
                                               PromoService promoService) {
        return PromoClaimService.builder()
                .accountService(accountService)
                .promoService(promoService)
                .build();
    }

    @Bean
    public AccountService accountService(AccountRepository repository) {
        return new AccountService(repository);
    }

    @Bean
    public PromoService promoService(PromoRepository repository) {
        return PromoService.builder()
                .repository(repository)
                .build();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy