From 8710b1cff0006d68007bf468ad4b561b5f557784 Mon Sep 17 00:00:00 2001 From: "Sinha, Abhinav" Date: Mon, 23 Oct 2023 18:50:16 -0400 Subject: [PATCH] Add custom Configuration class for interoperation module (FINERACT-1932) --- .../service/InteropServiceImpl.java | 40 ++---------- .../starter/InteroperationConfiguration.java | 62 +++++++++++++++++++ 2 files changed, 67 insertions(+), 35 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/interoperation/starter/InteroperationConfiguration.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java index 828821c14..7b884d4fd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java @@ -38,6 +38,8 @@ import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Locale; import java.util.function.Predicate; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.commands.domain.CommandWrapper; @@ -104,22 +106,17 @@ import org.apache.fineract.portfolio.savings.domain.SavingsHelper; import org.apache.fineract.portfolio.savings.exception.InsufficientAccountBalanceException; import org.apache.fineract.portfolio.savings.exception.SavingsAccountNotFoundException; import org.apache.fineract.useradministration.domain.AppUser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@Slf4j +@RequiredArgsConstructor public class InteropServiceImpl implements InteropService { - private static final Logger LOG = LoggerFactory.getLogger(InteropServiceImpl.class); - private final PlatformSecurityContext securityContext; private final InteropDataValidator dataValidator; @@ -143,33 +140,6 @@ public class InteropServiceImpl implements InteropService { private final DefaultToApiJsonSerializer toApiJsonSerializer; private final DatabaseSpecificSQLGenerator sqlGenerator; - @Autowired - public InteropServiceImpl(PlatformSecurityContext securityContext, InteropDataValidator interopDataValidator, - SavingsAccountRepository savingsAccountRepository, SavingsAccountTransactionRepository savingsAccountTransactionRepository, - ApplicationCurrencyRepository applicationCurrencyRepository, NoteRepository noteRepository, - PaymentTypeRepository paymentTypeRepository, InteropIdentifierRepository identifierRepository, LoanRepository loanRepository, - SavingsHelper savingsHelper, SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, - SavingsAccountDomainService savingsAccountService, final JdbcTemplate jdbcTemplate, - final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, - final DefaultToApiJsonSerializer toApiJsonSerializer, DatabaseSpecificSQLGenerator sqlGenerator) { - this.securityContext = securityContext; - this.dataValidator = interopDataValidator; - this.savingsAccountRepository = savingsAccountRepository; - this.savingsAccountTransactionRepository = savingsAccountTransactionRepository; - this.currencyRepository = applicationCurrencyRepository; - this.noteRepository = noteRepository; - this.paymentTypeRepository = paymentTypeRepository; - this.identifierRepository = identifierRepository; - this.loanRepository = loanRepository; - this.savingsHelper = savingsHelper; - this.savingsAccountTransactionSummaryWrapper = savingsAccountTransactionSummaryWrapper; - this.savingsAccountService = savingsAccountService; - this.jdbcTemplate = jdbcTemplate; - this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; - this.toApiJsonSerializer = toApiJsonSerializer; - this.sqlGenerator = sqlGenerator; - } - private static final class KycMapper implements RowMapper { private final DatabaseSpecificSQLGenerator sqlGenerator; @@ -661,7 +631,7 @@ public class InteropServiceImpl implements InteropService { "idType", idType.name(), accountId); } - LOG.error("Error occured.", dve); + log.error("Error occured.", dve); throw new PlatformDataIntegrityException("error.msg.interop.unknown.data.integrity.issue", "Unknown data integrity issue with resource."); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/starter/InteroperationConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/starter/InteroperationConfiguration.java new file mode 100644 index 000000000..9f5ce202d --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/starter/InteroperationConfiguration.java @@ -0,0 +1,62 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.interoperation.starter; + +import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; +import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.interoperation.domain.InteropIdentifierRepository; +import org.apache.fineract.interoperation.serialization.InteropDataValidator; +import org.apache.fineract.interoperation.service.InteropService; +import org.apache.fineract.interoperation.service.InteropServiceImpl; +import org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository; +import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; +import org.apache.fineract.portfolio.note.domain.NoteRepository; +import org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountDomainService; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionSummaryWrapper; +import org.apache.fineract.portfolio.savings.domain.SavingsHelper; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +public class InteroperationConfiguration { + + @Bean + @ConditionalOnMissingBean(InteropService.class) + public InteropService interopService(PlatformSecurityContext securityContext, InteropDataValidator interopDataValidator, + SavingsAccountRepository savingsAccountRepository, SavingsAccountTransactionRepository savingsAccountTransactionRepository, + ApplicationCurrencyRepository applicationCurrencyRepository, NoteRepository noteRepository, + PaymentTypeRepository paymentTypeRepository, InteropIdentifierRepository identifierRepository, LoanRepository loanRepository, + SavingsHelper savingsHelper, SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, + SavingsAccountDomainService savingsAccountService, JdbcTemplate jdbcTemplate, + PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, + DefaultToApiJsonSerializer toApiJsonSerializer, DatabaseSpecificSQLGenerator sqlGenerator) { + return new InteropServiceImpl(securityContext, interopDataValidator, savingsAccountRepository, savingsAccountTransactionRepository, + applicationCurrencyRepository, noteRepository, paymentTypeRepository, identifierRepository, loanRepository, savingsHelper, + savingsAccountTransactionSummaryWrapper, savingsAccountService, jdbcTemplate, commandsSourceWritePlatformService, + toApiJsonSerializer, sqlGenerator); + } +}