From 6f7f55a227bbe2d8b403ab75a6019fc2032fc33d Mon Sep 17 00:00:00 2001 From: Janos Haber Date: Mon, 28 Nov 2022 11:34:47 +0100 Subject: [PATCH] FINERACT-1724 - [x] eliminate sonar security hotspots - [x] eliminate sonar bugs --- .../service/JournalEntryReadPlatformServiceImpl.java | 4 ++-- .../service/ProvisioningEntriesReadPlatformServiceImpl.java | 4 ++-- .../service/LoanChargeWritePlatformServiceImpl.java | 4 +++- .../service/LoanWritePlatformServiceJpaRepositoryImpl.java | 4 ++++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java index aaaddbd11..8dfa84213 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java @@ -385,9 +385,9 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat final GLJournalEntryMapper rm = new GLJournalEntryMapper(associationParametersData); // Programmatic query, disable sonar issue - final String sql = "select " + rm.schema() + " where journalEntry.id = ?"; // NOSONAR + final String sql = "select " + rm.schema() + " where journalEntry.id = ?"; - return this.jdbcTemplate.queryForObject(sql, rm, glJournalEntryId); + return this.jdbcTemplate.queryForObject(sql, rm, glJournalEntryId); // NOSONAR } catch (final EmptyResultDataAccessException e) { throw new JournalEntriesNotFoundException(glJournalEntryId, e); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java index e11a92337..8e21a8db5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java @@ -110,8 +110,8 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE public ProvisioningEntryData retrieveProvisioningEntryData(Long entryId) { ProvisioningEntryDataMapperWithSumReserved mapper1 = new ProvisioningEntryDataMapperWithSumReserved(); // Programmatic query, disable sonar - final String sql = "select" + mapper1.getSchema() + " where entry.id = ? group by entry.id, created.username, modified.username"; // NOSONAR - return this.jdbcTemplate.queryForObject(sql, mapper1, entryId); + final String sql = "select" + mapper1.getSchema() + " where entry.id = ? group by entry.id, created.username, modified.username"; + return this.jdbcTemplate.queryForObject(sql, mapper1, entryId);// NOSONAR } private static final class ProvisioningEntryDataMapper implements RowMapper { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java index 064ce0948..1a0560806 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java @@ -65,6 +65,7 @@ import org.apache.fineract.portfolio.account.data.PortfolioAccountData; import org.apache.fineract.portfolio.account.domain.AccountTransferDetailRepository; import org.apache.fineract.portfolio.account.domain.AccountTransferDetails; import org.apache.fineract.portfolio.account.domain.AccountTransferType; +import org.apache.fineract.portfolio.account.exception.AccountTransferNotFoundException; import org.apache.fineract.portfolio.account.service.AccountAssociationsReadPlatformService; import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; import org.apache.fineract.portfolio.accountdetails.domain.AccountType; @@ -621,7 +622,8 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo AccountTransferType.CHARGE_PAYMENT.getValue(), null, null, externalId, null, null, fromSavingsAccount, isRegularTransaction, isExceptionForBalanceCheck); Long transferTransactionId = this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); - AccountTransferDetails transferDetails = this.accountTransferDetailRepository.findById(transferTransactionId).get(); + AccountTransferDetails transferDetails = this.accountTransferDetailRepository.findById(transferTransactionId) + .orElseThrow(() -> new AccountTransferNotFoundException(transferTransactionId)); LoanTransaction loanTransaction = transferDetails.getAccountTransferTransactions().get(0).getToLoanTransaction(); return new CommandProcessingResultBuilder() // .withCommandId(command.commandId()) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java index ae7acca09..19d680f0a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -2113,6 +2113,10 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } LocalDate recalculateFrom = null; LoanTransaction writeOffTransaction = loan.findWriteOffTransaction(); + if (writeOffTransaction == null) { + throw new PlatformServiceUnavailableException("error.msg.loan.write.off.transaction.not.found", + "Loan :" + loanId + " write off transaction not found", loanId); + } businessEventNotifierService.notifyPreBusinessEvent(new LoanUndoWrittenOffBusinessEvent(writeOffTransaction)); ScheduleGeneratorDTO scheduleGeneratorDTO = this.loanUtilService.buildScheduleGeneratorDTO(loan, recalculateFrom);