diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientTransactionsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientTransactionsApiResource.java index 8532fd630..8bcc5030e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientTransactionsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientTransactionsApiResource.java @@ -35,6 +35,7 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; @@ -49,12 +50,12 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.client.data.ClientTransactionData; import org.apache.fineract.portfolio.client.service.ClientTransactionReadPlatformService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Path("/clients/{clientId}/transactions") @Component -@Tag(name = "Client Transaction", description = "Client Transactions refer to transactions made directly againt a Client's internal account. Currently, these transactions are only created as a result of charge payments/waivers. You are allowed to undo a transaction, however you cannot explicitly create one. ") +@Tag(name = "Client Transaction", description = "Client Transactions refer to transactions made directly against a Client's internal account. Currently, these transactions are only created as a result of charge payments/waivers. You are allowed to undo a transaction, however you cannot explicitly create one. ") +@RequiredArgsConstructor public class ClientTransactionsApiResource { private final PlatformSecurityContext context; @@ -63,19 +64,6 @@ public class ClientTransactionsApiResource { private final ApiRequestParameterHelper apiRequestParameterHelper; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired - public ClientTransactionsApiResource(final PlatformSecurityContext context, - final ClientTransactionReadPlatformService clientTransactionReadPlatformService, - final DefaultToApiJsonSerializer toApiJsonSerializer, - final ApiRequestParameterHelper apiRequestParameterHelper, - final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { - this.context = context; - this.clientTransactionReadPlatformService = clientTransactionReadPlatformService; - this.toApiJsonSerializer = toApiJsonSerializer; - this.apiRequestParameterHelper = apiRequestParameterHelper; - this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; - } - @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -86,15 +74,14 @@ public class ClientTransactionsApiResource { public String retrieveAllClientTransactions(@PathParam("clientId") @Parameter(description = "clientId") final Long clientId, @Context final UriInfo uriInfo, @QueryParam("offset") @Parameter(description = "offset") final Integer offset, @QueryParam("limit") @Parameter(description = "limit") final Integer limit) { - this.context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_CHARGES_RESOURCE_NAME); + context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_CHARGES_RESOURCE_NAME); SearchParameters searchParameters = SearchParameters.forPagination(offset, limit); - final Page clientTransactions = this.clientTransactionReadPlatformService.retrieveAllTransactions(clientId, + final Page clientTransactions = clientTransactionReadPlatformService.retrieveAllTransactions(clientId, searchParameters); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, clientTransactions, - ClientApiConstants.CLIENT_TRANSACTION_RESPONSE_DATA_PARAMETERS); + final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return toApiJsonSerializer.serialize(settings, clientTransactions, ClientApiConstants.CLIENT_TRANSACTION_RESPONSE_DATA_PARAMETERS); } @GET @@ -109,14 +96,12 @@ public class ClientTransactionsApiResource { @PathParam("transactionId") @Parameter(description = "transactionId") final Long transactionId, @Context final UriInfo uriInfo) { - this.context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_CHARGES_RESOURCE_NAME); + context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_CHARGES_RESOURCE_NAME); - final ClientTransactionData clientTransaction = this.clientTransactionReadPlatformService.retrieveTransaction(clientId, - transactionId); + final ClientTransactionData clientTransaction = clientTransactionReadPlatformService.retrieveTransaction(clientId, transactionId); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, clientTransaction, - ClientApiConstants.CLIENT_TRANSACTION_RESPONSE_DATA_PARAMETERS); + final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return toApiJsonSerializer.serialize(settings, clientTransaction, ClientApiConstants.CLIENT_TRANSACTION_RESPONSE_DATA_PARAMETERS); } @POST @@ -131,19 +116,16 @@ public class ClientTransactionsApiResource { @QueryParam("command") @Parameter(description = "command") final String commandParam, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - String json = ""; if (is(commandParam, ClientApiConstants.CLIENT_TRANSACTION_COMMAND_UNDO)) { final CommandWrapper commandRequest = new CommandWrapperBuilder().undoClientTransaction(clientId, transactionId) .withJson(apiRequestBodyAsJson).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); + final CommandProcessingResult result = commandsSourceWritePlatformService.logCommandSource(commandRequest); - json = this.toApiJsonSerializer.serialize(result); + return toApiJsonSerializer.serialize(result); } else { throw new UnrecognizedQueryParamException("command", commandParam, ClientApiConstants.CLIENT_TRANSACTION_COMMAND_UNDO); } - - return json; } private boolean is(final String commandParam, final String commandValue) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java index 682910ad0..5620c838b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java @@ -20,10 +20,10 @@ package org.apache.fineract.portfolio.client.domain; import java.util.Collection; import java.util.List; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.client.exception.ClientNotActiveException; import org.apache.fineract.portfolio.client.exception.ClientNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,17 +33,12 @@ import org.springframework.transaction.annotation.Transactional; *

*/ @Service +@RequiredArgsConstructor public class ClientRepositoryWrapper { private final ClientRepository repository; private final PlatformSecurityContext context; - @Autowired - public ClientRepositoryWrapper(final ClientRepository repository, final PlatformSecurityContext context) { - this.repository = repository; - this.context = context; - } - @Transactional(readOnly = true) public Client findOneWithNotFoundDetection(final Long id) { return this.findOneWithNotFoundDetection(id, false); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransactionRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransactionRepositoryWrapper.java index 5e8aba44e..2703bfead 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransactionRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransactionRepositoryWrapper.java @@ -18,24 +18,18 @@ */ package org.apache.fineract.portfolio.client.domain; +import lombok.RequiredArgsConstructor; import org.apache.fineract.organisation.office.domain.OrganisationCurrencyRepositoryWrapper; import org.apache.fineract.portfolio.client.exception.ClientTransactionNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class ClientTransactionRepositoryWrapper { private final ClientTransactionRepository repository; private final OrganisationCurrencyRepositoryWrapper organisationCurrencyRepository; - @Autowired - public ClientTransactionRepositoryWrapper(final ClientTransactionRepository repository, - final OrganisationCurrencyRepositoryWrapper currencyRepositoryWrapper) { - this.repository = repository; - this.organisationCurrencyRepository = currencyRepositoryWrapper; - } - public ClientTransaction findOneWithNotFoundDetection(final Long clientId, final Long transactionId) { final ClientTransaction clientTransaction = this.repository.findById(transactionId) .orElseThrow(() -> new ClientTransactionNotFoundException(clientId, transactionId)); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java index dc7756bba..4b03043b9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java @@ -23,6 +23,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; import java.util.Collection; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.BooleanUtils; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; @@ -37,30 +38,20 @@ import org.apache.fineract.portfolio.charge.service.ChargeEnumerations; import org.apache.fineract.portfolio.client.api.ClientApiConstants; import org.apache.fineract.portfolio.client.data.ClientChargeData; import org.apache.fineract.portfolio.client.exception.ClientChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class ClientChargeReadPlatformServiceImpl implements ClientChargeReadPlatformService { private final PaginationHelper paginationHelper; private final JdbcTemplate jdbcTemplate; private final DatabaseSpecificSQLGenerator sqlGenerator; private final PlatformSecurityContext context; - private final ClientChargeMapper clientChargeMapper; - - @Autowired - public ClientChargeReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, - DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper paginationHelper) { - this.context = context; - this.jdbcTemplate = jdbcTemplate; - this.sqlGenerator = sqlGenerator; - this.clientChargeMapper = new ClientChargeMapper(); - this.paginationHelper = paginationHelper; - } + private final ClientChargeMapper clientChargeMapper = new ClientChargeMapper(); public static final class ClientChargeMapper implements RowMapper { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceImpl.java similarity index 91% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java rename to fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceImpl.java index f0133d0bc..dadec193c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceImpl.java @@ -26,6 +26,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -36,7 +38,6 @@ import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException; import org.apache.fineract.infrastructure.core.service.DateUtils; -import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.holiday.domain.HolidayRepositoryWrapper; import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepositoryWrapper; @@ -54,20 +55,16 @@ import org.apache.fineract.portfolio.client.domain.ClientTransaction; import org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail; import org.apache.fineract.portfolio.paymentdetail.service.PaymentDetailWritePlatformService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @Service -public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements ClientChargeWritePlatformService { +@RequiredArgsConstructor +@Slf4j +public class ClientChargeWritePlatformServiceImpl implements ClientChargeWritePlatformService { - private static final Logger LOG = LoggerFactory.getLogger(ClientChargeWritePlatformServiceJpaRepositoryImpl.class); - - private final PlatformSecurityContext context; private final ChargeRepositoryWrapper chargeRepository; private final ClientRepositoryWrapper clientRepository; private final ClientChargeDataValidator clientChargeDataValidator; @@ -79,27 +76,6 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client private final PaymentDetailWritePlatformService paymentDetailWritePlatformService; private final JournalEntryWritePlatformService journalEntryWritePlatformService; - @Autowired - public ClientChargeWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final ChargeRepositoryWrapper chargeRepository, final ClientChargeDataValidator clientChargeDataValidator, - final ClientRepositoryWrapper clientRepository, final HolidayRepositoryWrapper holidayRepositoryWrapper, - final ConfigurationDomainService configurationDomainService, final ClientChargeRepositoryWrapper clientChargeRepository, - final WorkingDaysRepositoryWrapper workingDaysRepository, final ClientTransactionRepository clientTransactionRepository, - final PaymentDetailWritePlatformService paymentDetailWritePlatformService, - final JournalEntryWritePlatformService journalEntryWritePlatformService) { - this.context = context; - this.chargeRepository = chargeRepository; - this.clientChargeDataValidator = clientChargeDataValidator; - this.clientRepository = clientRepository; - this.holidayRepository = holidayRepositoryWrapper; - this.configurationDomainService = configurationDomainService; - this.clientChargeRepository = clientChargeRepository; - this.workingDaysRepository = workingDaysRepository; - this.clientTransactionRepository = clientTransactionRepository; - this.paymentDetailWritePlatformService = paymentDetailWritePlatformService; - this.journalEntryWritePlatformService = journalEntryWritePlatformService; - } - @Override public CommandProcessingResult addCharge(Long clientId, JsonCommand command) { try { @@ -447,7 +423,7 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client "clientChargeId", clientChargeId); } - LOG.error("Error occured.", dve); + log.error("Error occured.", dve); throw new PlatformDataIntegrityException("error.msg.client.charges.unknown.data.integrity.issue", "Unknown data integrity issue with resource."); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java index 476c6aad9..fb2e795c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java @@ -23,6 +23,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; import java.util.Collection; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.service.Page; @@ -36,29 +37,20 @@ import org.apache.fineract.portfolio.client.domain.ClientTransactionType; import org.apache.fineract.portfolio.client.exception.ClientTransactionNotFoundException; import org.apache.fineract.portfolio.paymentdetail.data.PaymentDetailData; import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class ClientTransactionReadPlatformServiceImpl implements ClientTransactionReadPlatformService { private final JdbcTemplate jdbcTemplate; private final DatabaseSpecificSQLGenerator sqlGenerator; - private final ClientTransactionMapper clientTransactionMapper; + private final ClientTransactionMapper clientTransactionMapper = new ClientTransactionMapper(); private final PaginationHelper paginationHelper; - @Autowired - public ClientTransactionReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, DatabaseSpecificSQLGenerator sqlGenerator, - PaginationHelper paginationHelper) { - this.jdbcTemplate = jdbcTemplate; - this.sqlGenerator = sqlGenerator; - this.clientTransactionMapper = new ClientTransactionMapper(); - this.paginationHelper = paginationHelper; - } - private static final class ClientTransactionMapper implements RowMapper { private final String schemaSql; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionWritePlatformServiceJpaRepositoryImpl.java index 1f4320ec5..f041a386d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionWritePlatformServiceJpaRepositoryImpl.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.client.service; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder; @@ -31,10 +32,10 @@ import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.portfolio.client.domain.ClientTransaction; import org.apache.fineract.portfolio.client.domain.ClientTransactionRepositoryWrapper; import org.apache.fineract.portfolio.client.exception.ClientTransactionCannotBeUndoneException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class ClientTransactionWritePlatformServiceJpaRepositoryImpl implements ClientTransactionWritePlatformService { private final ClientTransactionRepositoryWrapper clientTransactionRepository; @@ -43,17 +44,6 @@ public class ClientTransactionWritePlatformServiceJpaRepositoryImpl implements C private final OrganisationCurrencyRepositoryWrapper organisationCurrencyRepository; private final JournalEntryWritePlatformService journalEntryWritePlatformService; - @Autowired - public ClientTransactionWritePlatformServiceJpaRepositoryImpl(final ClientTransactionRepositoryWrapper clientTransactionRepository, - final ClientRepositoryWrapper clientRepositoryWrapper, - final OrganisationCurrencyRepositoryWrapper organisationCurrencyRepositoryWrapper, - JournalEntryWritePlatformService journalEntryWritePlatformService) { - this.clientTransactionRepository = clientTransactionRepository; - this.clientRepository = clientRepositoryWrapper; - this.organisationCurrencyRepository = organisationCurrencyRepositoryWrapper; - this.journalEntryWritePlatformService = journalEntryWritePlatformService; - } - @Override public CommandProcessingResult undo(Long clientId, Long transactionId) {