diff --git a/fineract-provider/config/checkstyle/checkstyle.xml b/fineract-provider/config/checkstyle/checkstyle.xml index 5720b78a5..b94e3f803 100644 --- a/fineract-provider/config/checkstyle/checkstyle.xml +++ b/fineract-provider/config/checkstyle/checkstyle.xml @@ -50,6 +50,7 @@ + @@ -189,7 +190,7 @@ - + diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformServiceImpl.java index 4584410db..f20bcf028 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformServiceImpl.java @@ -61,7 +61,7 @@ public class AccrualAccountingWritePlatformServiceImpl implements AccrualAccount .resource(PERIODIC_ACCRUAL_ACCOUNTING_RESOURCE_NAME); baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode(PERIODIC_ACCRUAL_ACCOUNTING_EXECUTION_ERROR_CODE, e.getMessage()); - throw new PlatformApiDataValidationException(dataValidationErrors); + throw new PlatformApiDataValidationException(dataValidationErrors, e); } return CommandProcessingResult.empty(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java index 92fa3f5d9..fab656449 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.accounting.closure.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when GL account closure resources are not found. @@ -28,4 +29,8 @@ public class GLClosureNotFoundException extends AbstractPlatformResourceNotFound public GLClosureNotFoundException(final Long id) { super("error.msg.glclosure.id.invalid", "Accounting Closure with identifier " + id + " does not exist", id); } + + public GLClosureNotFoundException(final Long id, EmptyResultDataAccessException e) { + super("error.msg.glclosure.id.invalid", "Accounting Closure with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java index 5f652aae9..a875f2e0b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java @@ -106,7 +106,7 @@ public class GLClosureReadPlatformServiceImpl implements GLClosureReadPlatformSe return glAccountData; } catch (final EmptyResultDataAccessException e) { - throw new GLClosureNotFoundException(glClosureId); + throw new GLClosureNotFoundException(glClosureId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java index e6350be58..6f18f84a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.accounting.financialactivityaccount.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when product to GL account mapping are not found. @@ -29,6 +30,10 @@ public class FinancialActivityAccountNotFoundException extends AbstractPlatformR super("error.msg.financialActivityAccount.not.found", "Financial Activity account with Id " + id + " does not exist", id); } + public FinancialActivityAccountNotFoundException(final Long id, EmptyResultDataAccessException e) { + super("error.msg.financialActivityAccount.not.found", "Financial Activity account with Id " + id + " does not exist", id, e); + } + public FinancialActivityAccountNotFoundException(final Integer financialActivityType) { super("error.msg.financialActivityAccount.not.found", "Financial Activity account with for the financial Activity with Id " + financialActivityType + " does not exist", diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java index 3937de1c3..e55256c3c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java @@ -67,7 +67,7 @@ public class FinancialActivityAccountReadPlatformServiceImpl implements Financia return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), this.financialActivityAccountMapper, new Object[] { financialActivityAccountId }); } catch (final EmptyResultDataAccessException e) { - throw new FinancialActivityAccountNotFoundException(financialActivityAccountId); + throw new FinancialActivityAccountNotFoundException(financialActivityAccountId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountNotFoundException.java index 9e4d63ccf..01b7c6322 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.accounting.glaccount.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when GL account resources are not found. @@ -28,4 +29,8 @@ public class GLAccountNotFoundException extends AbstractPlatformResourceNotFound public GLAccountNotFoundException(final Long id) { super("error.msg.glaccount.id.invalid", "General Ledger account with identifier " + id + " does not exist ", id); } + + public GLAccountNotFoundException(final Long id, EmptyResultDataAccessException e) { + super("error.msg.glaccount.id.invalid", "General Ledger account with identifier " + id + " does not exist ", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java index 893f4d05e..6c40a4fce 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java @@ -224,7 +224,7 @@ public class GLAccountReadPlatformServiceImpl implements GLAccountReadPlatformSe return glAccountData; } catch (final EmptyResultDataAccessException e) { - throw new GLAccountNotFoundException(glAccountId); + throw new GLAccountNotFoundException(glAccountId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java index 44778e71e..7ff6baf78 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.accounting.journalentry.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when journal entry resources are not found. @@ -34,4 +35,8 @@ public class JournalEntriesNotFoundException extends AbstractPlatformResourceNot public JournalEntriesNotFoundException(final Long entryId) { super("error.msg.journalEntries.id.invalid", "Journal Entry with entry Id " + entryId + " does not exist ", entryId); } + + public JournalEntriesNotFoundException(final Long entryId, EmptyResultDataAccessException e) { + super("error.msg.journalEntries.id.invalid", "Journal Entry with entry Id " + entryId + " does not exist ", entryId, e); + } } 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 56e322123..86e70ee2b 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 @@ -391,7 +391,7 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat return glJournalEntryData; } catch (final EmptyResultDataAccessException e) { - throw new JournalEntriesNotFoundException(glJournalEntryId); + throw new JournalEntriesNotFoundException(glJournalEntryId, e); } } @@ -534,7 +534,7 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat Object[] data = { transactionId, entityId, entityType }; return this.paginationHelper.fetchPage(this.jdbcTemplate, sqlCountRows, sql, data, rm); } catch (final EmptyResultDataAccessException e) { - throw new JournalEntriesNotFoundException(entityId); + throw new JournalEntriesNotFoundException(entityId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java index 0768b46a3..c32d47ba9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.accounting.rule.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when Accounting rule resources are not found. @@ -28,4 +29,8 @@ public class AccountingRuleNotFoundException extends AbstractPlatformResourceNot public AccountingRuleNotFoundException(final Long id) { super("error.msg.accounting.rule.id.invalid", "Accounting Rule with identifier " + id + " does not exist", id); } + + public AccountingRuleNotFoundException(final Long id, EmptyResultDataAccessException e) { + super("error.msg.accounting.rule.id.invalid", "Accounting Rule with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java index 2a54cad81..94f906ae2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java @@ -184,7 +184,7 @@ public class AccountingRuleReadPlatformServiceImpl implements AccountingRuleRead } return accountingRuleData; } catch (final EmptyResultDataAccessException e) { - throw new AccountingRuleNotFoundException(accountingRuleId); + throw new AccountingRuleNotFoundException(accountingRuleId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/exception/AdHocNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/exception/AdHocNotFoundException.java index e30cf213f..50de8b40c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/exception/AdHocNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/exception/AdHocNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.adhocquery.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when AdHoc resources are not found. @@ -28,4 +29,8 @@ public class AdHocNotFoundException extends AbstractPlatformResourceNotFoundExce public AdHocNotFoundException(final Long id) { super("error.msg.adhocquery.adhoc.id.invalid", "Adhoc Record with identifier " + id + " does not exist", id); } + + public AdHocNotFoundException(final Long id, EmptyResultDataAccessException e) { + super("error.msg.adhocquery.adhoc.id.invalid", "Adhoc Record with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java index 16492b0eb..4204934d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java @@ -66,7 +66,7 @@ public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { return this.jdbcTemplate.queryForObject(sql, this.adHocRowMapper, new Object[] { id }); } catch (final EmptyResultDataAccessException e) { - throw new AdHocNotFoundException(id); + throw new AdHocNotFoundException(id, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java index cd5861276..33d39303a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java @@ -139,7 +139,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla return new CommandProcessingResultBuilder().withEntityId(adHocId).build(); } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } @@ -160,7 +160,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } @@ -181,7 +181,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformServiceImpl.java index aea732f6e..3beab9e73 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformServiceImpl.java @@ -64,6 +64,7 @@ public class PortfolioCommandSourceWritePlatformServiceImpl implements Portfolio } @Override + @SuppressWarnings("AvoidHidingCauseException") public CommandProcessingResult logCommandSource(final CommandWrapper wrapper) { boolean isApprovedByChecker = false; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/exception/AccountNumberFormatNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/exception/AccountNumberFormatNotFoundException.java index 45d713b92..b9f7c9ab6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/exception/AccountNumberFormatNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/exception/AccountNumberFormatNotFoundException.java @@ -20,6 +20,7 @@ package org.apache.fineract.infrastructure.accountnumberformat.exception; import org.apache.fineract.infrastructure.accountnumberformat.service.AccountNumberFormatConstants; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when client resources are not found. @@ -31,4 +32,9 @@ public class AccountNumberFormatNotFoundException extends AbstractPlatformResour "AccountNumber format with identifier " + id + " does not exist", id); } + public AccountNumberFormatNotFoundException(final Long id, EmptyResultDataAccessException e) { + super(AccountNumberFormatConstants.EXCEPTION_ACCOUNT_NUMBER_FORMAT_NOT_FOUND, + "AccountNumber format with identifier " + id + " does not exist", id, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatReadPlatformServiceImpl.java index d79fe7c8a..ff8c298a6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatReadPlatformServiceImpl.java @@ -101,7 +101,7 @@ public class AccountNumberFormatReadPlatformServiceImpl implements AccountNumber new Object[] { id }); return accountNumberFormatData; } catch (final EmptyResultDataAccessException e) { - throw new AccountNumberFormatNotFoundException(id); + throw new AccountNumberFormatNotFoundException(id, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java index 59c58d323..e9148c584 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java @@ -85,7 +85,7 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator { row.createCell(colIndex).setCellValue(dateWithoutTime); row.getCell(colIndex).setCellStyle(dateCellStyle); } catch (ParseException pe) { - throw new IllegalArgumentException("ParseException"); + throw new IllegalArgumentException(pe); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java index d215567be..c6de1668f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java @@ -176,7 +176,7 @@ public class BulkImportWorkbookServiceImpl implements BulkImportWorkbookService } catch (IOException e) { LOG.error("Problem occurred in importWorkbook function", e); throw new GeneralPlatformDomainRuleException("error.msg.io.exception", - "IO exception occured with " + fileDetail.getFileName() + " " + e.getMessage()); + "IO exception occured with " + fileDetail.getFileName() + " " + e.getMessage(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailBusinessRuleNotFound.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailBusinessRuleNotFound.java index c29122e29..dae6f5e13 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailBusinessRuleNotFound.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailBusinessRuleNotFound.java @@ -26,4 +26,9 @@ public class EmailBusinessRuleNotFound extends AbstractPlatformResourceNotFoundE super("error.msg.email.business.rule.not.found", "Email business rule with identifier `" + resourceId + "` does not exist", resourceId); } + + public EmailBusinessRuleNotFound(final Long resourceId, IndexOutOfBoundsException e) { + super("error.msg.email.business.rule.not.found", "Email business rule with identifier `" + resourceId + "` does not exist", + resourceId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailCampaignNotFound.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailCampaignNotFound.java index 0682e9324..f8ceeaced 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailCampaignNotFound.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailCampaignNotFound.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.campaigns.email.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class EmailCampaignNotFound extends AbstractPlatformResourceNotFoundException { @@ -26,4 +27,9 @@ public class EmailCampaignNotFound extends AbstractPlatformResourceNotFoundExcep super("error.msg.email.campaign.identifier.not.found", "EMAIL_CAMPAIGN with identifier `" + resourceId + "` does not exist", resourceId); } + + public EmailCampaignNotFound(final Long resourceId, EmptyResultDataAccessException e) { + super("error.msg.email.campaign.identifier.not.found", "EMAIL_CAMPAIGN with identifier `" + resourceId + "` does not exist", + resourceId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationNotFoundException.java index 2f8234b28..899bc9c0d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.campaigns.email.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when a code is not found. @@ -28,4 +29,9 @@ public class EmailConfigurationNotFoundException extends AbstractPlatformResourc public EmailConfigurationNotFoundException(final String name) { super("error.msg.email.configuration.name.not.found", "Email configuration with name " + name + " does not exist", name); } + + public EmailConfigurationNotFoundException(String name, EmptyResultDataAccessException e) { + super("error.msg.email.configuration.name.not.found", "Email configuration with name " + name + " does not exist", name, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailNotFoundException.java index 6e726b36c..5506da775 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.campaigns.email.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when a code is not found. @@ -28,4 +29,8 @@ public class EmailNotFoundException extends AbstractPlatformResourceNotFoundExce public EmailNotFoundException(final Long resourceId) { super("error.msg.email.identifier.not.found", "Email with identifier `" + resourceId + "` does not exist", resourceId); } + + public EmailNotFoundException(Long resourceId, EmptyResultDataAccessException e) { + super("error.msg.email.identifier.not.found", "Email with identifier `" + resourceId + "` does not exist", resourceId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java index e56d988e0..ff0a8727d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java @@ -246,7 +246,7 @@ public class EmailCampaignReadPlatformServiceImpl implements EmailCampaignReadPl EmailBusinessRulesData emailBusinessRulesData = retrieveOne.get(0); return emailBusinessRulesData; } catch (final IndexOutOfBoundsException e) { - throw new EmailBusinessRuleNotFound(resourceId); + throw new EmailBusinessRuleNotFound(resourceId, e); } } @@ -258,7 +258,7 @@ public class EmailCampaignReadPlatformServiceImpl implements EmailCampaignReadPl final String sql = "select " + this.emailCampaignMapper.schema + " where ec.id = ? and ec.is_visible = ?"; return this.jdbcTemplate.queryForObject(sql, this.emailCampaignMapper, resourceId, isVisible); } catch (final EmptyResultDataAccessException e) { - throw new EmailCampaignNotFound(resourceId); + throw new EmailCampaignNotFound(resourceId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java index 9dfc55052..1ddd2afd3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java @@ -91,7 +91,7 @@ public class EmailConfigurationReadPlatformServiceImpl implements EmailConfigura catch (final EmptyResultDataAccessException e) { - throw new EmailConfigurationNotFoundException(name); + throw new EmailConfigurationNotFoundException(name, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java index e7fd91674..0f1d7633a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java @@ -123,7 +123,7 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService { return this.jdbcTemplate.queryForObject(sql, this.emailRowMapper, resourceId); } catch (final EmptyResultDataAccessException e) { - throw new EmailNotFoundException(resourceId); + throw new EmailNotFoundException(resourceId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/ConnectionFailureException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/ConnectionFailureException.java index 0a37f881c..5e6217a2e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/ConnectionFailureException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/ConnectionFailureException.java @@ -27,4 +27,9 @@ public class ConnectionFailureException extends AbstractPlatformServiceUnavailab "Unable to connect to the server with connection name - " + connectionName, connectionName); } + public ConnectionFailureException(String connectionName, Exception e) { + super("error.msg.unable.to.connect.to.intermediate.server", + "Unable to connect to the server with connection name - " + connectionName, connectionName, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/SmsCampaignNotFound.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/SmsCampaignNotFound.java index a51bccf82..539488d4b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/SmsCampaignNotFound.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/exception/SmsCampaignNotFound.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.campaigns.sms.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class SmsCampaignNotFound extends AbstractPlatformResourceNotFoundException { @@ -26,4 +27,9 @@ public class SmsCampaignNotFound extends AbstractPlatformResourceNotFoundExcepti super("error.msg.sms.campaign.identifier.not.found", "Sms Campaign with identifier `" + resourceId + "` does not exist", resourceId); } + + public SmsCampaignNotFound(final Long resourceId, EmptyResultDataAccessException e) { + super("error.msg.sms.campaign.identifier.not.found", "Sms Campaign with identifier `" + resourceId + "` does not exist", resourceId, + e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java index 6fde3c550..1b7342998 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java @@ -79,7 +79,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo final String sql = "select " + this.smsCampaignMapper.schema + " where sc.id = ? and sc.is_visible = ?"; return this.jdbcTemplate.queryForObject(sql, this.smsCampaignMapper, new Object[] { campaignId, isVisible }); } catch (final EmptyResultDataAccessException e) { - throw new SmsCampaignNotFound(campaignId); + throw new SmsCampaignNotFound(campaignId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeNotFoundException.java index b277c6182..874ec799c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.codes.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when a code is not found. @@ -32,4 +33,13 @@ public class CodeNotFoundException extends AbstractPlatformResourceNotFoundExcep public CodeNotFoundException(final Long codeId) { super("error.msg.code.identifier.not.found", "Code with identifier `" + codeId + "` does not exist", codeId); } + + public CodeNotFoundException(final String name, EmptyResultDataAccessException e) { + super("error.msg.code.not.found", "Code with name `" + name + "` does not exist", name, e); + } + + public CodeNotFoundException(final Long codeId, EmptyResultDataAccessException e) { + super("error.msg.code.identifier.not.found", "Code with identifier `" + codeId + "` does not exist", codeId, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java index ef5f10fcd..fc9b85666 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.codes.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when client resources are not found. @@ -38,4 +39,8 @@ public class CodeValueNotFoundException extends AbstractPlatformResourceNotFound super("error.msg.codevalue.codename.id.combination.invalid", "Code value with label " + label + " does not exist for a code with name " + codeName, label, codeName); } + + public CodeValueNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.codevalue.id.invalid", "Code value with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java index 19bc39c18..dbcd89c5f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java @@ -82,7 +82,7 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService { return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { codeId }); } catch (final EmptyResultDataAccessException e) { - throw new CodeNotFoundException(codeId); + throw new CodeNotFoundException(codeId, e); } } @@ -96,7 +96,7 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService { return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { codeName }); } catch (final EmptyResultDataAccessException e) { - throw new CodeNotFoundException(codeName); + throw new CodeNotFoundException(codeName, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java index cc38bed79..a81e68a98 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java @@ -99,7 +99,7 @@ public class CodeValueReadPlatformServiceImpl implements CodeValueReadPlatformSe return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { codeValueId }); } catch (final EmptyResultDataAccessException e) { - throw new CodeValueNotFoundException(codeValueId); + throw new CodeValueNotFoundException(codeValueId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java index e06e52a28..2cd959153 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java @@ -161,10 +161,10 @@ public class CodeValueWritePlatformServiceJpaRepositoryImpl implements CodeValue LOG.error("Error occured.", dve); final Throwable realCause = dve.getMostSpecificCause(); if (realCause.getMessage().contains("code_value")) { - throw new PlatformDataIntegrityException("error.msg.codeValue.in.use", "This code value is in use", codeValueId); + throw new PlatformDataIntegrityException("error.msg.codeValue.in.use", "This code value is in use", codeValueId, dve); } throw new PlatformDataIntegrityException("error.msg.code.value.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + dve.getMostSpecificCause().getMessage()); + "Unknown data integrity issue with resource: " + dve.getMostSpecificCause().getMessage(), dve); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java index f0b860dd1..a798a3dd7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java @@ -129,7 +129,7 @@ public class CodeWritePlatformServiceJpaRepositoryImpl implements CodeWritePlatf this.codeRepository.flush(); } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.cund.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } return new CommandProcessingResultBuilder().withEntityId(codeId).build(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java new file mode 100644 index 000000000..8eeb8b53c --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java @@ -0,0 +1,45 @@ +/** + * 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.infrastructure.core.exception; + +import java.util.ArrayList; +import java.util.List; + +public abstract class AbstractPlatformException { + + protected static Throwable findThrowableCause(Object[] defaultUserMessageArgs) { + for (Object defaultUserMessageArg : defaultUserMessageArgs) { + if (defaultUserMessageArg instanceof Throwable) { + return (Throwable) defaultUserMessageArg; + } + } + return null; + } + + protected static Object[] filterThrowableCause(Object[] defaultUserMessageArgs) { + List filteredDefaultUserMessageArgs = new ArrayList<>(defaultUserMessageArgs.length); + for (Object defaultUserMessageArg : defaultUserMessageArgs) { + if (!(defaultUserMessageArg instanceof Throwable)) { + filteredDefaultUserMessageArgs.add(defaultUserMessageArg); + } + } + return filteredDefaultUserMessageArgs.toArray(); + } + +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java index b6174ce11..3c1ecce3a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java @@ -18,9 +18,6 @@ */ package org.apache.fineract.infrastructure.core.exception; -import java.util.ArrayList; -import java.util.List; - /** * A {@link RuntimeException} thrown when resources that are queried for are not found. */ @@ -32,29 +29,10 @@ public abstract class AbstractPlatformResourceNotFoundException extends RuntimeE protected AbstractPlatformResourceNotFoundException(final String globalisationMessageCode, final String defaultUserMessage, final Object... defaultUserMessageArgs) { - super(findThrowableCause(defaultUserMessageArgs)); + super(AbstractPlatformException.findThrowableCause(defaultUserMessageArgs)); this.globalisationMessageCode = globalisationMessageCode; this.defaultUserMessage = defaultUserMessage; - this.defaultUserMessageArgs = filterThrowableCause(defaultUserMessageArgs); - } - - private static Throwable findThrowableCause(Object[] defaultUserMessageArgs) { - for (Object defaultUserMessageArg : defaultUserMessageArgs) { - if (defaultUserMessageArg instanceof Throwable) { - return (Throwable) defaultUserMessageArg; - } - } - return null; - } - - private static Object[] filterThrowableCause(Object[] defaultUserMessageArgs) { - List filteredDefaultUserMessageArgs = new ArrayList<>(defaultUserMessageArgs.length); - for (Object defaultUserMessageArg : defaultUserMessageArgs) { - if (!(defaultUserMessageArg instanceof Throwable)) { - filteredDefaultUserMessageArgs.add(defaultUserMessageArg); - } - } - return filteredDefaultUserMessageArgs.toArray(); + this.defaultUserMessageArgs = AbstractPlatformException.filterThrowableCause(defaultUserMessageArgs); } public String getGlobalisationMessageCode() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformApiDataValidationException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformApiDataValidationException.java index 6e389e295..14e1baa7b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformApiDataValidationException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformApiDataValidationException.java @@ -43,6 +43,21 @@ public class PlatformApiDataValidationException extends RuntimeException { this.errors = errors; } + public PlatformApiDataValidationException(final String globalisationMessageCode, final String defaultUserMessage, + final List errors, Throwable cause) { + super(cause); + this.globalisationMessageCode = globalisationMessageCode; + this.defaultUserMessage = defaultUserMessage; + this.errors = errors; + } + + public PlatformApiDataValidationException(final List errors, Throwable cause) { + super(cause); + this.globalisationMessageCode = "validation.msg.validation.errors.exist"; + this.defaultUserMessage = "Validation errors exist."; + this.errors = errors; + } + public String getGlobalisationMessageCode() { return this.globalisationMessageCode; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java index d2a0c4a09..1ec8f015f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java @@ -30,18 +30,20 @@ public class PlatformDataIntegrityException extends RuntimeException { public PlatformDataIntegrityException(final String globalisationMessageCode, final String defaultUserMessage, final Object... defaultUserMessageArgs) { + super(AbstractPlatformException.findThrowableCause(defaultUserMessageArgs)); this.globalisationMessageCode = globalisationMessageCode; this.defaultUserMessage = defaultUserMessage; this.parameterName = null; - this.defaultUserMessageArgs = defaultUserMessageArgs; + this.defaultUserMessageArgs = AbstractPlatformException.filterThrowableCause(defaultUserMessageArgs); } public PlatformDataIntegrityException(final String globalisationMessageCode, final String defaultUserMessage, final String parameterName, final Object... defaultUserMessageArgs) { + super(AbstractPlatformException.findThrowableCause(defaultUserMessageArgs)); this.globalisationMessageCode = globalisationMessageCode; this.defaultUserMessage = defaultUserMessage; this.parameterName = parameterName; - this.defaultUserMessageArgs = defaultUserMessageArgs; + this.defaultUserMessageArgs = AbstractPlatformException.filterThrowableCause(defaultUserMessageArgs); } public String getGlobalisationMessageCode() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java index b990439a3..86a9c1f4c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java @@ -124,6 +124,7 @@ public class FromJsonHelper { * @param object * @param supportedParams */ + @SuppressWarnings("AvoidHidingCauseException") public void checkForUnsupportedNestedParameters(final String parentPropertyName, final JsonObject object, final Set supportedParams) { try { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java index a1f827880..a89039dac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java @@ -347,7 +347,7 @@ public class JsonParserHelper { dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } @@ -420,7 +420,7 @@ public class JsonParserHelper { parameterName); dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } @@ -474,7 +474,7 @@ public class JsonParserHelper { dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } @@ -568,7 +568,7 @@ public class JsonParserHelper { dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } @@ -592,7 +592,7 @@ public class JsonParserHelper { dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } @@ -648,7 +648,7 @@ public class JsonParserHelper { dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java index 9360771bc..0f4c39577 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java @@ -95,7 +95,7 @@ public class DateUtils { "The parameter date (" + stringDate + ") is invalid w.r.t. pattern " + pattern, "date", stringDate, pattern); dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java index c6a0aa63b..b59e80bd5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java @@ -86,7 +86,7 @@ public class TenantDatabaseUpgradeService { } catch (FlywayException e) { String betterMessage = e.getMessage() + "; for Tenant DB URL: " + connectionProtocol + ", username: " + connection.getSchemaUsername(); - throw new FlywayException(betterMessage, e.getCause()); + throw new FlywayException(betterMessage, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java index 824fe444b..f2acc5153 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java @@ -86,7 +86,7 @@ public class GenericDataServiceImpl implements GenericDataService { return new GenericResultsetData(columnHeaders, resultsetDataRows); } catch (DataAccessException e) { - throw new PlatformDataIntegrityException("error.msg.report.unknown.data.integrity.issue", e.getClass().getName()); + throw new PlatformDataIntegrityException("error.msg.report.unknown.data.integrity.issue", e.getClass().getName(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java index b0e72b130..67a39ea60 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java @@ -116,7 +116,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { // out.flush(); // out.close(); } catch (final Exception e) { - throw new PlatformDataIntegrityException("error.msg.exception.error", e.getMessage()); + throw new PlatformDataIntegrityException("error.msg.exception.error", e.getMessage(), e); } } }; @@ -313,7 +313,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { return genaratePdf; } catch (final Exception e) { LOG.error("error.msg.reporting.error:", e); - throw new PlatformDataIntegrityException("error.msg.exception.error", e.getMessage()); + throw new PlatformDataIntegrityException("error.msg.exception.error", e.getMessage(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java index 69a18f97c..f708f8209 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java @@ -273,21 +273,21 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ if (realCause.getMessage().contains("Duplicate entry") || cause.getMessage().contains("Duplicate entry")) { throw new PlatformDataIntegrityException("error.msg.datatable.registered", "Datatable `" + dataTableName + "` is already registered against an application table.", "dataTableName", - dataTableName); + dataTableName, dve); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } catch (final PersistenceException dve) { final Throwable cause = dve.getCause(); if (cause.getMessage().contains("Duplicate entry")) { throw new PlatformDataIntegrityException("error.msg.datatable.registered", "Datatable `" + dataTableName + "` is already registered against an application table.", "dataTableName", - dataTableName); + dataTableName, dve); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } @@ -394,35 +394,35 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ throw new PlatformDataIntegrityException( "error.msg.datatable.entry.duplicate", "An entry already exists for datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, dve); } else if (realCause.getMessage().contains("doesn't have a default value") || cause.getMessage().contains("doesn't have a default value")) { throw new PlatformDataIntegrityException( "error.msg.datatable.no.value.provided.for.required.fields", "No values provided for the datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, dve); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } catch (final PersistenceException e) { final Throwable cause = e.getCause(); if (cause.getMessage().contains("Duplicate entry")) { throw new PlatformDataIntegrityException( "error.msg.datatable.entry.duplicate", "An entry already exists for datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, e); } else if (cause.getMessage().contains("doesn't have a default value")) { throw new PlatformDataIntegrityException( "error.msg.datatable.no.value.provided.for.required.fields", "No values provided for the datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, e); } logAsErrorUnexpectedDataIntegrityException(e); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", e); } } @@ -452,24 +452,24 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ throw new PlatformDataIntegrityException( "error.msg.datatable.entry.duplicate", "An entry already exists for datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, dve); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } catch (final PersistenceException dve) { final Throwable cause = dve.getCause(); if (cause.getMessage().contains("Duplicate entry")) { throw new PlatformDataIntegrityException( "error.msg.datatable.entry.duplicate", "An entry already exists for datatable `" + dataTableName + "` and application table with identifier `" + appTableId + "`.", - "dataTableName", dataTableName, appTableId); + "dataTableName", dataTableName, appTableId, dve); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } @@ -1008,7 +1008,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ } catch (final Exception e) { if (e.getMessage().contains("Error on rename")) { throw new PlatformServiceUnavailableException("error.msg.datatable.column.update.not.allowed", - "One of the column name modification not allowed"); + "One of the column name modification not allowed", e); } // handle all other exceptions in here @@ -1018,7 +1018,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ // PlatformServiceUnavailableException if (e.getMessage().toLowerCase().contains("invalid use of null value")) { throw new PlatformServiceUnavailableException("error.msg.datatable.column.update.not.allowed", - "One of the data table columns contains null values"); + "One of the data table columns contains null values", e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java index 592ad5c1a..a4dab8e34 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java @@ -84,7 +84,7 @@ public class FileSystemContentRepository implements ContentRepository { out.flush(); out.close(); } catch (final IOException ioe) { - throw new ContentManagementException(imageName, ioe.getMessage()); + throw new ContentManagementException(imageName, ioe.getMessage(), ioe); } catch (IllegalArgumentException iae) { LOG.error("IllegalArgumentException due to invalid Base64 encoding: {}", base64EncodedImageString, iae); throw iae; @@ -173,7 +173,7 @@ public class FileSystemContentRepository implements ContentRepository { } catch (final IOException ioException) { LOG.warn("writeFileToFileSystem() IOException (logged because cause is not propagated in ContentManagementException)", ioException); - throw new ContentManagementException(fileName, ioException.getMessage()); + throw new ContentManagementException(fileName, ioException.getMessage(), ioException); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java index c5c98d39d..19a42ea46 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java @@ -76,7 +76,7 @@ public class S3ContentRepository implements ContentRepository { try { deleteObjectFromS3(documentPath); } catch (final AmazonClientException ace) { - throw new ContentManagementException(documentName, ace.getMessage()); + throw new ContentManagementException(documentName, ace.getMessage(), ace); } } @@ -129,7 +129,8 @@ public class S3ContentRepository implements ContentRepository { fileData = new FileData(s3object.getObjectContent(), fileName, documentData.contentType()); } catch (final AmazonClientException ace) { LOG.error("Error occured.", ace); - throw new DocumentNotFoundException(documentData.getParentEntityType(), documentData.getParentEntityId(), documentData.getId()); + throw new DocumentNotFoundException(documentData.getParentEntityType(), documentData.getParentEntityId(), documentData.getId(), + ace); } return fileData; } @@ -177,7 +178,7 @@ public class S3ContentRepository implements ContentRepository { this.s3Client.putObject(new PutObjectRequest(this.s3BucketName, s3UploadLocation, inputStream, new ObjectMetadata())); } catch (final AmazonClientException ace) { final String message = ace.getMessage(); - throw new ContentManagementException(filename, message); + throw new ContentManagementException(filename, message, ace); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/ContentManagementException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/ContentManagementException.java index 9677d9bc2..8136f1547 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/ContentManagementException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/ContentManagementException.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.infrastructure.documentmanagement.exception; +import com.amazonaws.AmazonClientException; +import java.io.IOException; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; public class ContentManagementException extends AbstractPlatformDomainRuleException { @@ -32,4 +34,19 @@ public class ContentManagementException extends AbstractPlatformDomainRuleExcept + fileSize / (1024 * 1024) + " MB exceeds the max permissable file size of " + maxFileSize + " MB", name, fileSize); } + public ContentManagementException(String filename, String message, IOException ioException) { + super("error.msg.document.save", "Error while manipulating file " + filename + " due to a File system / Amazon S3 issue " + message, + filename, message, ioException); + } + + public ContentManagementException(String filename, String message, AmazonClientException ace) { + super("error.msg.document.save", "Error while manipulating file " + filename + " due to a File system / Amazon S3 issue " + message, + filename, message, ace); + } + + public ContentManagementException(String filename, String message, ContentManagementException cme) { + super("error.msg.document.save", "Error while manipulating file " + filename + " due to a File system / Amazon S3 issue " + message, + filename, message, cme); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/DocumentNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/DocumentNotFoundException.java index f1243e713..6e02ecce9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/DocumentNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/exception/DocumentNotFoundException.java @@ -18,7 +18,9 @@ */ package org.apache.fineract.infrastructure.documentmanagement.exception; +import com.amazonaws.AmazonClientException; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class DocumentNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -26,4 +28,14 @@ public class DocumentNotFoundException extends AbstractPlatformResourceNotFoundE super("error.msg.document.id.invalid", "Document with identifier " + id + " does not exist for the " + entityType + " with Identifier " + entityId, id); } + + public DocumentNotFoundException(String entityType, Long entityId, Long id, EmptyResultDataAccessException e) { + super("error.msg.document.id.invalid", + "Document with identifier " + id + " does not exist for the " + entityType + " with Identifier " + entityId, id, e); + } + + public DocumentNotFoundException(String entityType, Long entityId, Long id, AmazonClientException ace) { + super("error.msg.document.id.invalid", + "Document with identifier " + id + " does not exist for the " + entityType + " with Identifier " + entityId, id, ace); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentReadPlatformServiceImpl.java index b8facf8a1..4e0c47734 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentReadPlatformServiceImpl.java @@ -71,7 +71,7 @@ public class DocumentReadPlatformServiceImpl implements DocumentReadPlatformServ final ContentRepository contentRepository = this.contentRepositoryFactory.getRepository(documentData.storageType()); return contentRepository.fetchFile(documentData); } catch (final EmptyResultDataAccessException e) { - throw new DocumentNotFoundException(entityType, entityId, documentId); + throw new DocumentNotFoundException(entityType, entityId, documentId, e); } } @@ -81,7 +81,7 @@ public class DocumentReadPlatformServiceImpl implements DocumentReadPlatformServ final DocumentMapper mapper = new DocumentMapper(true, true); return fetchDocumentDetails(entityType, entityId, documentId, mapper); } catch (final EmptyResultDataAccessException e) { - throw new DocumentNotFoundException(entityType, entityId, documentId); + throw new DocumentNotFoundException(entityType, entityId, documentId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentWritePlatformServiceJpaRepositoryImpl.java index dd1f56078..cf4ebc812 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/DocumentWritePlatformServiceJpaRepositoryImpl.java @@ -82,7 +82,7 @@ public class DocumentWritePlatformServiceJpaRepositoryImpl implements DocumentWr } catch (final DataIntegrityViolationException dve) { LOG.error("Error occured.", dve); throw new PlatformDataIntegrityException("error.msg.document.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } @@ -136,10 +136,10 @@ public class DocumentWritePlatformServiceJpaRepositoryImpl implements DocumentWr } catch (final DataIntegrityViolationException dve) { LOG.error("Error occured.", dve); throw new PlatformDataIntegrityException("error.msg.document.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } catch (final ContentManagementException cme) { LOG.error("Error occured.", cme); - throw new ContentManagementException(documentCommand.getName(), cme.getMessage()); + throw new ContentManagementException(documentCommand.getName(), cme.getMessage(), cme); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java index 0da188b72..707588cd7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java @@ -113,7 +113,7 @@ public class ImageReadPlatformServiceImpl implements ImageReadPlatformService { return result; } catch (final EmptyResultDataAccessException e) { - throw new ImageNotFoundException("clients", entityId); + throw new ImageNotFoundException("clients", entityId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/exception/DeviceRegistrationNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/exception/DeviceRegistrationNotFoundException.java index f2a130bbd..a5f8aa0e2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/exception/DeviceRegistrationNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/exception/DeviceRegistrationNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.gcm.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class DeviceRegistrationNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -31,4 +32,13 @@ public class DeviceRegistrationNotFoundException extends AbstractPlatformResourc "Device registration with " + value + " identifier " + clientId + " does not exist", clientId); } + public DeviceRegistrationNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.device.registration.id.invalid", "Device registration with identifier " + id + " does not exist", id, e); + } + + public DeviceRegistrationNotFoundException(Long clientId, String value, EmptyResultDataAccessException e) { + super("error.msg.device.registration." + value + ".invalid", + "Device registration with " + value + " identifier " + clientId + " does not exist", clientId, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/service/DeviceRegistrationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/service/DeviceRegistrationReadPlatformServiceImpl.java index d3a23109a..1b3f7dee7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/service/DeviceRegistrationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/service/DeviceRegistrationReadPlatformServiceImpl.java @@ -92,7 +92,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra String sql = "select " + drm.schema() + " where cdr.id = ? "; return this.jdbcTemplate.queryForObject(sql, drm, new Object[] { id }); } catch (final EmptyResultDataAccessException e) { - throw new DeviceRegistrationNotFoundException(id); + throw new DeviceRegistrationNotFoundException(id, e); } } @@ -104,7 +104,7 @@ public class DeviceRegistrationReadPlatformServiceImpl implements DeviceRegistra String sql = "select " + drm.schema() + " where c.id = ? "; return this.jdbcTemplate.queryForObject(sql, drm, new Object[] { clientId }); } catch (final EmptyResultDataAccessException e) { - throw new DeviceRegistrationNotFoundException(clientId, "client"); + throw new DeviceRegistrationNotFoundException(clientId, "client", e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/exception/HookNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/exception/HookNotFoundException.java index a6ead8425..7d01e12f3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/exception/HookNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/exception/HookNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.hooks.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class HookNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -29,4 +30,8 @@ public class HookNotFoundException extends AbstractPlatformResourceNotFoundExcep public HookNotFoundException(final Long hookId) { super("error.msg.hook.identifier.not.found", "Hook with identifier `" + hookId + "` does not exist", hookId); } + + public HookNotFoundException(Long hookId, EmptyResultDataAccessException e) { + super("error.msg.hook.identifier.not.found", "Hook with identifier `" + hookId + "` does not exist", hookId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookReadPlatformServiceImpl.java index 9ecd93f3a..0ddc08899 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookReadPlatformServiceImpl.java @@ -75,7 +75,7 @@ public class HookReadPlatformServiceImpl implements HookReadPlatformService { return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { hookId }); } catch (final EmptyResultDataAccessException e) { - throw new HookNotFoundException(hookId); + throw new HookNotFoundException(hookId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookWritePlatformServiceJpaRepositoryImpl.java index ddeb49389..fb03fa80b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/service/HookWritePlatformServiceJpaRepositoryImpl.java @@ -200,7 +200,7 @@ public class HookWritePlatformServiceJpaRepositoryImpl implements HookWritePlatf this.hookRepository.delete(hook); } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } return new CommandProcessingResultBuilder().withEntityId(hookId).build(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNotFoundException.java index c9a58c46a..b4bd7e589 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.jobs.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when Job resources are not found. @@ -28,4 +29,8 @@ public class JobNotFoundException extends AbstractPlatformResourceNotFoundExcept public JobNotFoundException(final String identifier) { super("error.msg.sheduler.job.id.invalid", "Job with identifier " + identifier + " does not exist", identifier); } + + public JobNotFoundException(String identifier, EmptyResultDataAccessException e) { + super("error.msg.sheduler.job.id.invalid", "Job with identifier " + identifier + " does not exist", identifier, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java index bbbab50d2..3d073442d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java @@ -164,7 +164,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi } catch (final Exception e) { final String msg = "Job execution failed for job with id:" + scheduledJobDetail.getId(); LOG.error("{}", msg, e); - throw new PlatformInternalServerException("error.msg.sheduler.job.execution.failed", msg, scheduledJobDetail.getId()); + throw new PlatformInternalServerException("error.msg.sheduler.job.execution.failed", msg, scheduledJobDetail.getId(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java index 15ce35822..a00f38af3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java @@ -67,7 +67,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead final String sql = detailMapper.schema() + " where job.id=?"; return this.jdbcTemplate.queryForObject(sql, detailMapper, new Object[] { jobId }); } catch (final EmptyResultDataAccessException e) { - throw new JobNotFoundException(String.valueOf(jobId)); + throw new JobNotFoundException(String.valueOf(jobId), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java index a1e27e1f6..ae0652d73 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.reportmailingjob.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when report mailing job configuration resources are not found. @@ -30,4 +31,9 @@ public class ReportMailingJobConfigurationNotFoundException extends AbstractPlat super("error.msg.report.mailing.job.configuration.name.invalid", "Report mailing job configuration with name " + name + " does not exist", name); } + + public ReportMailingJobConfigurationNotFoundException(String name, EmptyResultDataAccessException ex) { + super("error.msg.report.mailing.job.configuration.name.invalid", + "Report mailing job configuration with name " + name + " does not exist", name, ex); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java index bdd86bc24..03da097c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.reportmailingjob.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when report mailing job resources are not found. @@ -30,4 +31,9 @@ public class ReportMailingJobNotFoundException extends AbstractPlatformResourceN super("error.msg.report.mailing.job.id.invalid", "Report mailing job with identifier " + reportMailingJobId + " does not exist", reportMailingJobId); } + + public ReportMailingJobNotFoundException(Long reportMailingJobId, EmptyResultDataAccessException ex) { + super("error.msg.report.mailing.job.id.invalid", "Report mailing job with identifier " + reportMailingJobId + " does not exist", + reportMailingJobId, ex); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java index f916d8194..39ac75b94 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java @@ -62,7 +62,7 @@ public class ReportMailingJobConfigurationReadPlatformServiceImpl implements Rep } catch (final EmptyResultDataAccessException ex) { - throw new ReportMailingJobConfigurationNotFoundException(name); + throw new ReportMailingJobConfigurationNotFoundException(name, ex); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java index efcc1b923..26c0714bc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java @@ -109,7 +109,7 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob } catch (final EmptyResultDataAccessException ex) { - throw new ReportMailingJobNotFoundException(reportMailingJobId); + throw new ReportMailingJobNotFoundException(reportMailingJobId, ex); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java index 5cc1901ab..8facd0514 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.infrastructure.security.exception; +import org.springframework.dao.EmptyResultDataAccessException; + /** * {@link RuntimeException} thrown when an invalid tenant identifier is used in request to platform. * @@ -28,4 +30,8 @@ public class InvalidTenantIdentiferException extends RuntimeException { public InvalidTenantIdentiferException(final String message) { super(message); } + + public InvalidTenantIdentiferException(String message, EmptyResultDataAccessException e) { + super(message, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java index 2269c5b6c..e6c85034c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java @@ -140,7 +140,7 @@ public class BasicAuthTenantDetailsServiceJdbc implements BasicAuthTenantDetails return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { tenantIdentifier }); } catch (final EmptyResultDataAccessException e) { - throw new InvalidTenantIdentiferException("The tenant identifier: " + tenantIdentifier + " is not valid."); + throw new InvalidTenantIdentiferException("The tenant identifier: " + tenantIdentifier + " is not valid.", e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java index 701abdc0d..f2987696b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java @@ -133,7 +133,7 @@ public class JdbcTenantDetailsService implements TenantDetailsService { return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { tenantIdentifier }); } catch (final EmptyResultDataAccessException e) { - throw new InvalidTenantIdentiferException("The tenant identifier: " + tenantIdentifier + " is not valid."); + throw new InvalidTenantIdentiferException("The tenant identifier: " + tenantIdentifier + " is not valid.", e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java index c3236fb01..18a563b47 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java @@ -68,7 +68,7 @@ public class ColumnValidator { } } } catch (SQLException e) { - throw new SQLInjectionException(); + throw new SQLInjectionException(e); } finally { if (connection != null) { DataSourceUtils.releaseConnection(connection, jdbcTemplate.getDataSource()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionException.java index 571b20e59..3170bf8d8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionException.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.infrastructure.security.utils; +import java.sql.SQLException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; public class SQLInjectionException extends PlatformApiDataValidationException { @@ -26,4 +27,8 @@ public class SQLInjectionException extends PlatformApiDataValidationException { super("error.msg.found.sql.injection", "Unexpected SQL Commands found", null); } + public SQLInjectionException(SQLException e) { + super("error.msg.found.sql.injection", "Unexpected SQL Commands found", null, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/exception/SmsNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/exception/SmsNotFoundException.java index 73a7cf936..c51b764c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/exception/SmsNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/exception/SmsNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.sms.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when a code is not found. @@ -28,4 +29,8 @@ public class SmsNotFoundException extends AbstractPlatformResourceNotFoundExcept public SmsNotFoundException(final Long resourceId) { super("error.msg.sms.identifier.not.found", "SMS with identifier `" + resourceId + "` does not exist", resourceId); } + + public SmsNotFoundException(Long resourceId, EmptyResultDataAccessException e) { + super("error.msg.sms.identifier.not.found", "SMS with identifier `" + resourceId + "` does not exist", resourceId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java index b15f3f02b..339e8196e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java @@ -140,7 +140,7 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob // apiQueueResourceDatas).start(); } } catch (Exception e) { - throw new ConnectionFailureException(SmsCampaignConstants.SMS); + throw new ConnectionFailureException(SmsCampaignConstants.SMS, e); } page++; totalRecords = pendingMessages.getTotalPages(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java index 6f8bd50b5..921eff4c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java @@ -124,7 +124,7 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService { return this.jdbcTemplate.queryForObject(sql, this.smsRowMapper, new Object[] { resourceId }); } catch (final EmptyResultDataAccessException e) { - throw new SmsNotFoundException(resourceId); + throw new SmsNotFoundException(resourceId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLResultServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLResultServiceImpl.java index b75645410..cb8f1a140 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLResultServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLResultServiceImpl.java @@ -166,7 +166,7 @@ public class XBRLResultServiceImpl implements XBRLResultService { } } catch (final ScriptException e) { LOG.error("Problem occurred in processMappingString function", e); - throw new IllegalArgumentException(e.getMessage()); + throw new IllegalArgumentException(e.getMessage(), e); } return new BigDecimal(eval); diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/exception/TopicNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/notification/exception/TopicNotFoundException.java index 4c9b48168..4d02d0327 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/notification/exception/TopicNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/notification/exception/TopicNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.notification.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when topic resources are not found. @@ -29,4 +30,8 @@ public class TopicNotFoundException extends AbstractPlatformResourceNotFoundExce super("error.msg.topic.id.invalid", "Topic with identifier " + id + " does not exist", id); } + public TopicNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.topic.id.invalid", "Topic with identifier " + id + " does not exist", id, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java index e16fc5f93..97705d8c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java @@ -91,7 +91,7 @@ public class TopicReadPlatformServiceImpl implements TopicReadPlatformService { final String sql = "select " + tm.schema() + " where t.id = ?"; return this.jdbcTemplate.queryForObject(sql, tm, new Object[] { topicId }); } catch (final EmptyResultDataAccessException e) { - throw new TopicNotFoundException(topicId); + throw new TopicNotFoundException(topicId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/exception/HolidayNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/exception/HolidayNotFoundException.java index 88fc0cf45..f13b02218 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/exception/HolidayNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/exception/HolidayNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.organisation.holiday.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when holiday resources are not found. @@ -28,4 +29,8 @@ public class HolidayNotFoundException extends AbstractPlatformResourceNotFoundEx public HolidayNotFoundException(final Long id) { super("error.msg.holiday.id.invalid", "Holiday with identifier " + id + " does not exist", id); } + + public HolidayNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.holiday.id.invalid", "Holiday with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java index 70c3636c6..f6a1ec4c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java @@ -133,7 +133,7 @@ public class HolidayReadPlatformServiceImpl implements HolidayReadPlatformServic return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { holidayId }); } catch (final EmptyResultDataAccessException e) { - throw new HolidayNotFoundException(holidayId); + throw new HolidayNotFoundException(holidayId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/OfficeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/OfficeNotFoundException.java index 798f3bc7b..c9a712d55 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/OfficeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/OfficeNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.organisation.office.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when office resources are not found. @@ -28,4 +29,8 @@ public class OfficeNotFoundException extends AbstractPlatformResourceNotFoundExc public OfficeNotFoundException(final Long id) { super("error.msg.office.id.invalid", "Office with identifier " + id + " does not exist", id); } + + public OfficeNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.office.id.invalid", "Office with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeReadPlatformServiceImpl.java index ea65bd193..8cc7932ff 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeReadPlatformServiceImpl.java @@ -200,7 +200,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService return selectedOffice; } catch (final EmptyResultDataAccessException e) { - throw new OfficeNotFoundException(officeId); + throw new OfficeNotFoundException(officeId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java index 415c82790..855655178 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.organisation.provisioning.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class ProvisioningCriteriaNotFoundException extends AbstractPlatformResourceNotFoundException { public ProvisioningCriteriaNotFoundException(final Long id) { super("error.msg.provisioning.criteria.id.invalid", "Provisioning Criteria with identifier " + id + " does not exist", id); } + + public ProvisioningCriteriaNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.provisioning.criteria.id.invalid", "Provisioning Criteria with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java index fc805c05f..aae16f899 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java @@ -123,7 +123,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning List definitions = retrieveProvisioningDefinitions(criteriaId); return ProvisioningCriteriaData.toLookup(criteriaId, criteriaName, loanProducts, definitions); } catch (EmptyResultDataAccessException e) { - throw new ProvisioningCriteriaNotFoundException(criteriaId); + throw new ProvisioningCriteriaNotFoundException(criteriaId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/exception/StaffNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/exception/StaffNotFoundException.java index cee4520e1..da64f3651 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/exception/StaffNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/exception/StaffNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.organisation.staff.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when staff resources are not found. @@ -28,4 +29,8 @@ public class StaffNotFoundException extends AbstractPlatformResourceNotFoundExce public StaffNotFoundException(final Long id) { super("error.msg.staff.id.invalid", "Staff with identifier " + id + " does not exist", id); } + + public StaffNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.staff.id.invalid", "Staff with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java index d93718e9f..7eb3457a0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java @@ -199,7 +199,7 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { staffId, hierarchy }); } catch (final EmptyResultDataAccessException e) { - throw new StaffNotFoundException(staffId); + throw new StaffNotFoundException(staffId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java index 0af1db247..e78db736e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java @@ -219,7 +219,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement return this.jdbcTemplate.queryForObject(sql, tm, new Object[] { tellerId }); } catch (final EmptyResultDataAccessException e) { - throw new StaffNotFoundException(tellerId); + throw new StaffNotFoundException(tellerId, e); } } @@ -332,7 +332,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement return this.jdbcTemplate.queryForObject(sql, cm, new Object[] { cashierId }); } catch (final EmptyResultDataAccessException e) { - throw new StaffNotFoundException(cashierId); + throw new StaffNotFoundException(cashierId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/exception/WorkingDaysNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/exception/WorkingDaysNotFoundException.java index 8305cb574..8fe92c6c4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/exception/WorkingDaysNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/exception/WorkingDaysNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.organisation.workingdays.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when Calendar resources are not found. @@ -29,4 +30,8 @@ public class WorkingDaysNotFoundException extends AbstractPlatformResourceNotFou super("error.msg.working.days.not.configured", "Must configure the Working days for the organisation."); } + public WorkingDaysNotFoundException(EmptyResultDataAccessException e) { + super("error.msg.working.days.not.configured", "Must configure the Working days for the organisation.", e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java index a2ba37670..21756f84b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java @@ -86,7 +86,7 @@ public class WorkingDaysReadPlatformServiceImpl implements WorkingDaysReadPlatfo Collection repaymentRescheduleOptions = repaymentRescheduleTypeOptions(); return new WorkingDaysData(data, repaymentRescheduleOptions); } catch (final EmptyResultDataAccessException e) { - throw new WorkingDaysNotFoundException(); + throw new WorkingDaysNotFoundException(e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysWritePlatformServiceJpaRepositoryImpl.java index a50fac2fe..57700c7e3 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysWritePlatformServiceJpaRepositoryImpl.java @@ -66,10 +66,10 @@ public class WorkingDaysWritePlatformServiceJpaRepositoryImpl implements Working .build(); } catch (final ValidationException e) { throw new PlatformDataIntegrityException("error.msg.invalid.recurring.rule", - "The Recurring Rule value: " + recurrence + " is not valid.", "recurrence", recurrence); + "The Recurring Rule value: " + recurrence + " is not valid.", "recurrence", recurrence, e); } catch (final IllegalArgumentException | ParseException e) { throw new PlatformDataIntegrityException("error.msg.recurring.rule.parsing.error", - "Error in passing the Recurring Rule value: " + recurrence, "recurrence", e.getMessage()); + "Error in passing the Recurring Rule value: " + recurrence, "recurrence", e.getMessage(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/exception/AccountTransferNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/exception/AccountTransferNotFoundException.java index f405fb814..f4428f3ce 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/exception/AccountTransferNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/exception/AccountTransferNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.account.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class AccountTransferNotFoundException extends AbstractPlatformResourceNotFoundException { public AccountTransferNotFoundException(final Long id) { super("error.msg.accounttransfer.id.invalid", "Account transfer with identifier " + id + " does not exist", id); } + + public AccountTransferNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.accounttransfer.id.invalid", "Account transfer with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformServiceImpl.java index 76f676e3d..b71ba0409 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformServiceImpl.java @@ -252,7 +252,7 @@ public class AccountTransfersReadPlatformServiceImpl implements AccountTransfers return this.jdbcTemplate.queryForObject(sql, this.accountTransfersMapper, new Object[] { transferId }); } catch (final EmptyResultDataAccessException e) { - throw new AccountTransferNotFoundException(transferId); + throw new AccountTransferNotFoundException(transferId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java index 5e41306b2..c6904e86c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java @@ -92,7 +92,7 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount break; } } catch (final EmptyResultDataAccessException e) { - throw new AccountTransferNotFoundException(accountId); + throw new AccountTransferNotFoundException(accountId, e); } return accountData; @@ -389,7 +389,7 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount accountData = this.jdbcTemplate.queryForObject(sql, this.accountRefundByTransferMapper, sqlParams); } catch (final EmptyResultDataAccessException e) { - throw new AccountTransferNotFoundException(accountId); + throw new AccountTransferNotFoundException(accountId, e); } return accountData; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformServiceImpl.java index 1fec51f66..5daea9531 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformServiceImpl.java @@ -347,7 +347,7 @@ public class StandingInstructionReadPlatformServiceImpl implements StandingInstr return this.jdbcTemplate.queryForObject(sql, this.standingInstructionMapper, new Object[] { instructionId }); } catch (final EmptyResultDataAccessException e) { - throw new AccountTransferNotFoundException(instructionId); + throw new AccountTransferNotFoundException(instructionId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java index 46b0077ac..3bdeb995a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java @@ -112,7 +112,7 @@ public class AccountsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, accountData, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } @@ -133,7 +133,7 @@ public class AccountsApiResource { AccountData data = service.retrieveOne(accountId, settings.isTemplate()); return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } @@ -154,7 +154,7 @@ public class AccountsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/exceptions/ShareAccountNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/exceptions/ShareAccountNotFoundException.java index a35418498..6c32d9c23 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/exceptions/ShareAccountNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/exceptions/ShareAccountNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.accounts.exceptions; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class ShareAccountNotFoundException extends AbstractPlatformResourceNotFoundException { public ShareAccountNotFoundException(final Long id) { super("error.msg.shareaccount.id.invalid", " Account with identifier " + id + " does not exist", id); } + + public ShareAccountNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.shareaccount.id.invalid", " Account with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarNotFoundException.java index f0fd3bb12..6597de15b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.calendar.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when Calendar resources are not found. @@ -28,4 +29,8 @@ public class CalendarNotFoundException extends AbstractPlatformResourceNotFoundE public CalendarNotFoundException(final Long id) { super("error.msg.calendar.id.invalid", "Calendar with identifier " + id + " does not exist", id); } + + public CalendarNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.calendar.id.invalid", "Calendar with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java index 004896428..d83cd237a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java @@ -128,7 +128,7 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { calendarId, entityId, entityTypeId }); } catch (final EmptyResultDataAccessException e) { - throw new CalendarNotFoundException(calendarId); + throw new CalendarNotFoundException(calendarId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java index 98df42287..4e16eefbb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java @@ -243,10 +243,10 @@ public class CalendarUtils { recur = rrule.getRecur(); } catch (final ValidationException e) { throw new PlatformDataIntegrityException("error.msg.invalid.recurring.rule", - "The Recurring Rule value: " + recurringRule + " is not valid.", "recurrence", recurringRule); + "The Recurring Rule value: " + recurringRule + " is not valid.", "recurrence", recurringRule, e); } catch (final ParseException e) { throw new PlatformDataIntegrityException("error.msg.recurring.rule.parsing.error", - "Error in pasring the Recurring Rule value: " + recurringRule, "recurrence", recurringRule); + "Error in pasring the Recurring Rule value: " + recurringRule, "recurrence", recurringRule, e); } if (recur == null) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java index 0af425f77..663f3159e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.charge.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class ChargeNotFoundException extends AbstractPlatformResourceNotFoundException { public ChargeNotFoundException(final Long id) { super("error.msg.charge.id.invalid", "Charge with identifier " + id + " does not exist", id); } + + public ChargeNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.charge.id.invalid", "Charge with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java index 4f28d7c54..e7fc5b46d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.charge.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * {@link AbstractPlatformDomainRuleException} thrown when savings account charge does not exist. @@ -35,4 +36,8 @@ public class SavingsAccountChargeNotFoundException extends AbstractPlatformResou "Savings Account charge with identifier " + id + " does not exist for Savings Account " + savingsAccountId, id, savingsAccountId); } + + public SavingsAccountChargeNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.savings.account.charge.id.invalid", "Savings Account charge with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java index 1d5de63d9..5469da3ec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java @@ -122,7 +122,7 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService sql = sql + " ;"; return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { chargeId }); } catch (final EmptyResultDataAccessException e) { - throw new ChargeNotFoundException(chargeId); + throw new ChargeNotFoundException(chargeId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientChargeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientChargeNotFoundException.java index 6c2af033b..5d920db25 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientChargeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientChargeNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.client.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class ClientChargeNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -31,4 +32,9 @@ public class ClientChargeNotFoundException extends AbstractPlatformResourceNotFo "Client charge with identifier " + id + " does not exist for client with id " + clientId, id, clientId); } + public ClientChargeNotFoundException(Long id, Long clientId, EmptyResultDataAccessException e) { + super("error.msg.client.charge.id.invalid.for.given.client", + "Client charge with identifier " + id + " does not exist for client with id " + clientId, id, clientId, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientIdentifierNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientIdentifierNotFoundException.java index 061fdbe93..e752c0876 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientIdentifierNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientIdentifierNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.client.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when client Identifier resources are not found. @@ -28,4 +29,8 @@ public class ClientIdentifierNotFoundException extends AbstractPlatformResourceN public ClientIdentifierNotFoundException(final Long id) { super("error.msg.clientIdentifier.id.invalid", "Client Identifier with the primary key " + id + " does not exist", id); } + + public ClientIdentifierNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.clientIdentifier.id.invalid", "Client Identifier with the primary key " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java index 197567d9d..88627f7da 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.client.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when client resources are not found. @@ -36,4 +37,8 @@ public class ClientNotFoundException extends AbstractPlatformResourceNotFoundExc public ClientNotFoundException(String accountNumber) { super("error.msg.client.not.found.with.account.number", "Client not found with account number " + accountNumber + "."); } + + public ClientNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.client.id.invalid", "Client with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientTransactionNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientTransactionNotFoundException.java index 1feeee9cc..0f866d0e5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientTransactionNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientTransactionNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.client.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; +import org.springframework.dao.EmptyResultDataAccessException; public class ClientTransactionNotFoundException extends AbstractPlatformDomainRuleException { @@ -28,4 +29,10 @@ public class ClientTransactionNotFoundException extends AbstractPlatformDomainRu clientId); } + public ClientTransactionNotFoundException(Long clientId, Long transactionId, EmptyResultDataAccessException e) { + super("error.msg.client.transaction.not.found.exception", + "The Transaction with id `" + transactionId + "` does not exist for a Client with id `" + clientId, transactionId, clientId, + e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ImageNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ImageNotFoundException.java index 3cfbe7bc1..6f51e6b71 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ImageNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ImageNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.client.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class ImageNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -26,4 +27,9 @@ public class ImageNotFoundException extends AbstractPlatformResourceNotFoundExce super("error.msg.entity.image.invalid", "Image for resource " + resource + " with Identifier " + resourceId + " does not exist", resource, resourceId); } + + public ImageNotFoundException(String resource, Long resourceId, EmptyResultDataAccessException e) { + super("error.msg.entity.image.invalid", "Image for resource " + resource + " with Identifier " + resourceId + " does not exist", + resource, resourceId, e); + } } 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 5790a8ecd..d92139c9e 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 @@ -126,7 +126,7 @@ public class ClientChargeReadPlatformServiceImpl implements ClientChargeReadPlat return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { clientId, clientChargeId }); } catch (final EmptyResultDataAccessException e) { - throw new ClientChargeNotFoundException(clientChargeId, clientId); + throw new ClientChargeNotFoundException(clientChargeId, clientId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java index 2dd7de92a..c096718b7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java @@ -81,7 +81,7 @@ public class ClientIdentifierReadPlatformServiceImpl implements ClientIdentifier return clientIdentifierData; } catch (final EmptyResultDataAccessException e) { - throw new ClientIdentifierNotFoundException(clientIdentifierId); + throw new ClientIdentifierNotFoundException(clientIdentifierId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java index 1bb5332a5..2d877cf0f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java @@ -302,7 +302,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService return ClientData.setParentGroups(clientData, parentGroups); } catch (final EmptyResultDataAccessException e) { - throw new ClientNotFoundException(clientId); + throw new ClientNotFoundException(clientId, e); } } @@ -842,7 +842,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService final String sql = "SELECT cl.id FROM m_client cl WHERE cl.id =? "; this.jdbcTemplate.queryForObject(sql, Long.class, clientId); } catch (final EmptyResultDataAccessException e) { - throw new ClientNotFoundException(clientId); + throw new ClientNotFoundException(clientId, e); } } 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 1fac79027..1d5e7b25a 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 @@ -174,7 +174,7 @@ public class ClientTransactionReadPlatformServiceImpl implements ClientTransacti final String sql = "select " + this.clientTransactionMapper.schema() + " where c.id = ? and tr.id= ?"; return this.jdbcTemplate.queryForObject(sql, this.clientTransactionMapper, new Object[] { clientId, transactionId }); } catch (final EmptyResultDataAccessException e) { - throw new ClientTransactionNotFoundException(clientId, transactionId); + throw new ClientTransactionNotFoundException(clientId, transactionId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java index 603d67d06..8b3e14454 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java @@ -191,7 +191,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP Throwable throwable = ExceptionUtils.getRootCause(dve.getCause()); LOG.error("Error occured.", throwable); throw new PlatformDataIntegrityException("error.msg.client.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralNotFoundException.java index 3c134bfc6..6df363f54 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.collateral.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when guarantor resources are not found. @@ -33,4 +34,9 @@ public class CollateralNotFoundException extends AbstractPlatformResourceNotFoun public CollateralNotFoundException(final Long id) { super("error.msg.loan.collateral.id.invalid", "Loan collateral with identifier " + id + " does not exist", id); } + + public CollateralNotFoundException(Long loanId, Long collateralId, EmptyResultDataAccessException e) { + super("error.msg.loan.collateral.", "Collateral with Id " + collateralId + " does not exist for loan with Id " + loanId, loanId, + collateralId, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformServiceImpl.java index 618148f1b..cf98a6ce5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformServiceImpl.java @@ -109,7 +109,7 @@ public class CollateralReadPlatformServiceImpl implements CollateralReadPlatform sql += " where lc.loan_id=? and lc.id = ?"; return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanId, collateralId }); } catch (final EmptyResultDataAccessException e) { - throw new CollateralNotFoundException(loanId, collateralId); + throw new CollateralNotFoundException(loanId, collateralId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/exception/FloatingRateNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/exception/FloatingRateNotFoundException.java index 525448804..8088546fd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/exception/FloatingRateNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/exception/FloatingRateNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.floatingrates.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class FloatingRateNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -29,4 +30,12 @@ public class FloatingRateNotFoundException extends AbstractPlatformResourceNotFo public FloatingRateNotFoundException(final String globalisationMessageCode) { super(globalisationMessageCode, "Floating Rate does not exist"); } + + public FloatingRateNotFoundException(String globalisationMessageCode, EmptyResultDataAccessException e) { + super(globalisationMessageCode, "Floating Rate does not exist", e); + } + + public FloatingRateNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.floatingrate.id.invalid", "Floating Rate with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java index 76749c2e2..5cecb9a15 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java @@ -74,7 +74,7 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl final String sql = "select " + rateMapper.schema() + " where rate.id = ?"; return this.jdbcTemplate.queryForObject(sql, rateMapper, new Object[] { floatingRateId }); } catch (final EmptyResultDataAccessException e) { - throw new FloatingRateNotFoundException(floatingRateId); + throw new FloatingRateNotFoundException(floatingRateId, e); } } @@ -84,7 +84,7 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl FloatingInterestRatePeriodRowMapper mapper = new FloatingInterestRatePeriodRowMapper(); return this.jdbcTemplate.query(mapper.schema(), mapper, new Object[] { productId }); } catch (final EmptyResultDataAccessException e) { - throw new FloatingRateNotFoundException("error.msg.floatingrate.not.found.for.product"); + throw new FloatingRateNotFoundException("error.msg.floatingrate.not.found.for.product", e); } } @@ -95,7 +95,7 @@ public class FloatingRatesReadPlatformServiceImpl implements FloatingRatesReadPl final String sql = "select " + rateMapper.schema() + " where rate.is_base_lending_rate = 1 and rate.is_active = 1"; return this.jdbcTemplate.queryForObject(sql, rateMapper); } catch (final EmptyResultDataAccessException e) { - throw new FloatingRateNotFoundException("error.msg.floatingrate.base.lending.rate.not.found"); + throw new FloatingRateNotFoundException("error.msg.floatingrate.base.lending.rate.not.found", e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/exception/FundNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/exception/FundNotFoundException.java index a2c27f746..ef5343ed6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/exception/FundNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/exception/FundNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.fund.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when fund resources are not found. @@ -28,4 +29,8 @@ public class FundNotFoundException extends AbstractPlatformResourceNotFoundExcep public FundNotFoundException(final Long id) { super("error.msg.fund.id.invalid", "Fund with identifier " + id + " does not exist", id); } + + public FundNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.fund.id.invalid", "Fund with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/service/FundReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/service/FundReadPlatformServiceImpl.java index 1dd6bfd37..44251bb50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/service/FundReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/service/FundReadPlatformServiceImpl.java @@ -86,7 +86,7 @@ public class FundReadPlatformServiceImpl implements FundReadPlatformService { return selectedFund; } catch (final EmptyResultDataAccessException e) { - throw new FundNotFoundException(fundId); + throw new FundNotFoundException(fundId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/CenterNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/CenterNotFoundException.java index 31a23bc5a..594974671 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/CenterNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/CenterNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.group.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when group resources are not found. @@ -29,4 +30,8 @@ public class CenterNotFoundException extends AbstractPlatformResourceNotFoundExc super("error.msg.center.id.invalid", "Center with identifier " + id + " does not exist", id); } + public CenterNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.center.id.invalid", "Center with identifier " + id + " does not exist", id, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotFoundException.java index a72d5d5d9..e86d0fe40 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.group.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when group resources are not found. @@ -29,4 +30,8 @@ public class GroupNotFoundException extends AbstractPlatformResourceNotFoundExce super("error.msg.group.id.invalid", "Group with identifier " + id + " does not exist", id); } + public GroupNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.group.id.invalid", "Group with identifier " + id + " does not exist", id, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupRoleNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupRoleNotFoundException.java index 06a097553..8541155b4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupRoleNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupRoleNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.group.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class GroupRoleNotFoundException extends AbstractPlatformResourceNotFoundException { public GroupRoleNotFoundException(final Long id) { super("error.msg.group.role.id.invalid", "Group Role with identifier " + id + " does not exist", id); } + + public GroupRoleNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.group.role.id.invalid", "Group Role with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java index ac5494098..0a0912a16 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java @@ -509,7 +509,7 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService return this.jdbcTemplate.queryForObject(sql, this.centerMapper, new Object[] { centerId, hierarchySearchString }); } catch (final EmptyResultDataAccessException e) { - throw new CenterNotFoundException(centerId); + throw new CenterNotFoundException(centerId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java index a50f0dcda..1ab747b47 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java @@ -278,7 +278,7 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { final String sql = "select " + this.allGroupTypesDataMapper.schema() + " where g.id = ? and o.hierarchy like ?"; return this.jdbcTemplate.queryForObject(sql, this.allGroupTypesDataMapper, new Object[] { groupId, hierarchySearchString }); } catch (final EmptyResultDataAccessException e) { - throw new GroupNotFoundException(groupId); + throw new GroupNotFoundException(groupId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupRolesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupRolesReadPlatformServiceImpl.java index d9c2a4281..72e338f1c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupRolesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupRolesReadPlatformServiceImpl.java @@ -61,7 +61,7 @@ public class GroupRolesReadPlatformServiceImpl implements GroupRolesReadPlatform final String sql = "Select " + mapper.schema() + " where role.group_id=? and role.id=?"; return this.jdbcTemplate.queryForObject(sql, mapper, new Object[] { groupId, roleId }); } catch (final EmptyResultDataAccessException e) { - throw new GroupRoleNotFoundException(roleId); + throw new GroupRoleNotFoundException(roleId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java index 3d221d24c..8134e5c4a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java @@ -604,7 +604,7 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group Throwable throwable = ExceptionUtils.getRootCause(dve.getCause()); LOG.error("Error occured.", throwable); throw new PlatformDataIntegrityException("error.msg.group.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java index 16f8950be..24684ab00 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.interestratechart.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class InterestRateChartNotFoundException extends AbstractPlatformResourceNotFoundException { public InterestRateChartNotFoundException(final Long id) { super("error.msg.interest.rate.chart.id.invalid", "Interest rate chart with identifier " + id + " does not exist", id); } + + public InterestRateChartNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.interest.rate.chart.id.invalid", "Interest rate chart with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java index 1bc04dbe0..0e01bbf76 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java @@ -78,7 +78,7 @@ public class InterestRateChartReadPlatformServiceImpl implements InterestRateCha final String sql = "select " + this.chartRowMapper.schema() + " where irc.id = ?"; return this.jdbcTemplate.queryForObject(sql, this.chartRowMapper, new Object[] { chartId }); } catch (final EmptyResultDataAccessException e) { - throw new InterestRateChartNotFoundException(chartId); + throw new InterestRateChartNotFoundException(chartId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java index 41d244fdc..8eaa64c51 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java @@ -242,7 +242,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } @@ -265,7 +265,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } @@ -289,7 +289,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } @@ -517,7 +517,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { this.loanAccrualPlatformService.addPeriodicAccruals(accruedTill, loanScheduleAccrualDatas); } catch (MultiException e) { String globalisationMessageCode = "error.msg.accrual.exception"; - throw new GeneralPlatformDomainRuleException(globalisationMessageCode, e.getMessage()); + throw new GeneralPlatformDomainRuleException(globalisationMessageCode, e.getMessage(), e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanNotFoundException.java index 85607958a..f9b0f01d5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.loanaccount.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when loan resources are not found. @@ -28,4 +29,8 @@ public class LoanNotFoundException extends AbstractPlatformResourceNotFoundExcep public LoanNotFoundException(final Long id) { super("error.msg.loan.id.invalid", "Loan with identifier " + id + " does not exist", id); } + + public LoanNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.loan.id.invalid", "Loan with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionNotFoundException.java index eb373fd9c..c0a3b1855 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.loanaccount.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when loan resources are not found. @@ -33,4 +34,8 @@ public class LoanTransactionNotFoundException extends AbstractPlatformResourceNo super("error.msg.loan.id.invalid", "Transaction with identifier " + id + " does not exist for loan with identifier " + loanId + ".", id, loanId); } + + public LoanTransactionNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.loan.id.invalid", "Transaction with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java index e758072e7..8d0232089 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java @@ -283,7 +283,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode(GuarantorConstants.GUARANTOR_INSUFFICIENT_BALANCE_ERROR, accountTransferDTO.getFromAccountId(), accountTransferDTO.getToAccountId()); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java index 8c6694575..8598fce6e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java @@ -81,7 +81,7 @@ public class LoanScheduleHistoryReadPlatformServiceImpl implements LoanScheduleH return this.jdbcTemplate.query(sql, fullResultsetExtractor, new Object[] { loanId, versionNumber }); } catch (final EmptyResultDataAccessException e) { - throw new LoanNotFoundException(loanId); + throw new LoanNotFoundException(loanId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java index a9c0e4dba..bba3f3589 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java @@ -516,7 +516,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java index 962e16b36..e3fa01dce 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java @@ -1694,7 +1694,7 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index ee937c4d2..325e69b4a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -214,7 +214,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), rm, new Object[] { loanId, hierarchySearchString, hierarchySearchString }); } catch (final EmptyResultDataAccessException e) { - throw new LoanNotFoundException(loanId); + throw new LoanNotFoundException(loanId, e); } } @@ -260,7 +260,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { return this.jdbcTemplate.query(sql, fullResultsetExtractor, new Object[] { loanId }); } catch (final EmptyResultDataAccessException e) { - throw new LoanNotFoundException(loanId); + throw new LoanNotFoundException(loanId, e); } } @@ -549,7 +549,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { final String sql = "select " + rm.loanPaymentsSchema() + " where l.id = ? and tr.id = ? "; return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanId, transactionId }); } catch (final EmptyResultDataAccessException e) { - throw new LoanTransactionNotFoundException(transactionId); + throw new LoanTransactionNotFoundException(transactionId, e); } } @@ -2246,7 +2246,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { final String sql = "select loan.account_no from m_loan loan where loan.id = ?"; return this.jdbcTemplate.queryForObject(sql, new Object[] { accountId }, String.class); } catch (final EmptyResultDataAccessException e) { - throw new LoanNotFoundException(accountId); + throw new LoanNotFoundException(accountId, e); } } 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 b856926a5..f394ee9c4 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 @@ -602,7 +602,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } @@ -625,7 +625,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductNotFoundException.java index aa004c128..13b6ff69e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.loanproduct.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when loan product resources are not found. @@ -28,4 +29,8 @@ public class LoanProductNotFoundException extends AbstractPlatformResourceNotFou public LoanProductNotFoundException(final Long id) { super("error.msg.loanproduct.id.invalid", "Loan product with identifier " + id + " does not exist", id); } + + public LoanProductNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.loanproduct.id.invalid", "Loan product with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/exception/ProductMixNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/exception/ProductMixNotFoundException.java index 26610606f..2fc2bd47a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/exception/ProductMixNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/exception/ProductMixNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.loanproduct.productmix.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when no product mixes found with the productId. @@ -29,4 +30,8 @@ public class ProductMixNotFoundException extends AbstractPlatformResourceNotFoun super("error.msg.no.product.mixes.exists", "No product mixes are defined with the productId `" + productId + "`.", productId); } + public ProductMixNotFoundException(Long productId, EmptyResultDataAccessException e) { + super("error.msg.no.product.mixes.exists", "No product mixes are defined with the productId `" + productId + "`.", productId, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java index b34da0959..5ea0c0009 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java @@ -66,7 +66,7 @@ public class ProductMixReadPlatformServiceImpl implements ProductMixReadPlatform return productMixData.get(productId); } catch (final EmptyResultDataAccessException e) { - throw new ProductMixNotFoundException(productId); + throw new ProductMixNotFoundException(productId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java index f4acbe60c..d646cabdb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -85,7 +85,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanProductId }); } catch (final EmptyResultDataAccessException e) { - throw new LoanProductNotFoundException(loanProductId); + throw new LoanProductNotFoundException(loanProductId, e); } } @@ -638,7 +638,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanProductId }); } catch (final EmptyResultDataAccessException e) { - throw new LoanProductNotFoundException(loanProductId); + throw new LoanProductNotFoundException(loanProductId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java index a4c1a5e87..fcbae8ff4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java @@ -345,26 +345,25 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro final String externalId = command.stringValueOfParameterNamed("externalId"); throw new PlatformDataIntegrityException("error.msg.product.loan.duplicate.externalId", - "Loan Product with externalId `" + externalId + "` already exists", "externalId", externalId); + "Loan Product with externalId `" + externalId + "` already exists", "externalId", externalId, realCause); } else if (realCause.getMessage().contains("'unq_name'")) { final String name = command.stringValueOfParameterNamed("name"); throw new PlatformDataIntegrityException("error.msg.product.loan.duplicate.name", - "Loan product with name `" + name + "` already exists", "name", name); + "Loan product with name `" + name + "` already exists", "name", name, realCause); } else if (realCause.getMessage().contains("'unq_short_name'")) { final String shortName = command.stringValueOfParameterNamed("shortName"); throw new PlatformDataIntegrityException("error.msg.product.loan.duplicate.short.name", - "Loan product with short name `" + shortName + "` already exists", "shortName", shortName); + "Loan product with short name `" + shortName + "` already exists", "shortName", shortName, realCause); } else if (realCause.getMessage().contains("Duplicate entry")) { - final Object[] args = null; throw new PlatformDataIntegrityException("error.msg.product.loan.duplicate.charge", - "Loan product may only have one charge of each type.`", "charges", args); + "Loan product may only have one charge of each type.`", "charges", realCause); } logAsErrorUnexpectedDataIntegrityException(dve); throw new PlatformDataIntegrityException("error.msg.product.loan.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", realCause); } private void validateInputDates(final JsonCommand command) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/exception/MeetingNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/exception/MeetingNotFoundException.java index 3609795b5..9f0ca4d0a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/exception/MeetingNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/exception/MeetingNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.meeting.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when Meeting resources are not found. @@ -28,4 +29,8 @@ public class MeetingNotFoundException extends AbstractPlatformResourceNotFoundEx public MeetingNotFoundException(final Long id) { super("error.msg.meeting.id.invalid", "Meeting with identifier " + id + " does not exist", id); } + + public MeetingNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.meeting.id.invalid", "Meeting with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingReadPlatformServiceImpl.java index 630bc1efd..abd257cd5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingReadPlatformServiceImpl.java @@ -72,7 +72,7 @@ public class MeetingReadPlatformServiceImpl implements MeetingReadPlatformServic return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { meetingId, entityId, entityTypeId }); } catch (final EmptyResultDataAccessException e) { - throw new MeetingNotFoundException(meetingId); + throw new MeetingNotFoundException(meetingId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/exception/NoteNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/exception/NoteNotFoundException.java index c6e1f83c3..36a3a6a7c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/exception/NoteNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/exception/NoteNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.note.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when note resources are not found. @@ -34,4 +35,9 @@ public class NoteNotFoundException extends AbstractPlatformResourceNotFoundExcep "Note with identifier " + id + " does not exist for " + resource + " with identifier " + resourceId, id, resourceId); } + public NoteNotFoundException(Long id, Long resourceId, String resource, EmptyResultDataAccessException e) { + super("error.msg." + resource + ".note.id.invalid", + "Note with identifier " + id + " does not exist for " + resource + " with identifier " + resourceId, id, resourceId, e); + } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/service/NoteReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/service/NoteReadPlatformServiceImpl.java index 0fd2b010d..3fc382ca5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/service/NoteReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/service/NoteReadPlatformServiceImpl.java @@ -98,7 +98,7 @@ public class NoteReadPlatformServiceImpl implements NoteReadPlatformService { return this.jdbcTemplate.queryForObject(sql, rm, paramList.toArray()); } catch (final EmptyResultDataAccessException e) { - throw new NoteNotFoundException(noteId, resourceId, noteType.name().toLowerCase()); + throw new NoteNotFoundException(noteId, resourceId, noteType.name().toLowerCase(), e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java index 64ec8fb52..175186c80 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java @@ -91,7 +91,7 @@ public class ProductsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } @@ -112,7 +112,7 @@ public class ProductsApiResource { ProductData data = service.retrieveOne(productId, settings.isTemplate()); return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } @@ -133,7 +133,7 @@ public class ProductsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); } catch (BeansException e) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ProductNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ProductNotFoundException.java index 233be65bc..0bfaf634e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ProductNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ProductNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.products.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when loan product resources are not found. @@ -28,4 +29,8 @@ public class ProductNotFoundException extends AbstractPlatformResourceNotFoundEx public ProductNotFoundException(final Long id, String type) { super("error.msg.product.id.invalid", type + " product with identifier " + id + " does not exist", id); } + + public ProductNotFoundException(Long id, String type, EmptyResultDataAccessException e) { + super("error.msg.product.id.invalid", type + " product with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ResourceNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ResourceNotFoundException.java index 4dfce9d00..1c7577229 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ResourceNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/exception/ResourceNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.products.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.beans.BeansException; public class ResourceNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -29,4 +30,8 @@ public class ResourceNotFoundException extends AbstractPlatformResourceNotFoundE public ResourceNotFoundException() { super("", "", ""); } + + public ResourceNotFoundException(BeansException e) { + super("", "", "", e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java index 9912bfa1c..625e0d1be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.rate.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class RateNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -31,4 +32,11 @@ public class RateNotFoundException extends AbstractPlatformResourceNotFoundExcep super("error.msg.rate.id.invalid", "Rate with name " + name + " does not exist", name); } + public RateNotFoundException(String name, EmptyResultDataAccessException e) { + super("error.msg.rate.id.invalid", "Rate with name " + name + " does not exist", name, e); + } + + public RateNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.rate.id.invalid", "Rate with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java index 38c8c39a9..916bfa986 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java @@ -70,7 +70,7 @@ public class RateReadServiceImpl implements RateReadService { return selectedRate; } catch (final EmptyResultDataAccessException e) { - throw new RateNotFoundException(rateId); + throw new RateNotFoundException(rateId, e); } } @@ -84,7 +84,7 @@ public class RateReadServiceImpl implements RateReadService { return selectedRate; } catch (final EmptyResultDataAccessException e) { - throw new RateNotFoundException(name); + throw new RateNotFoundException(name, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java index 133abea77..87211b0d9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java @@ -160,10 +160,11 @@ public class SavingsAccountTransactionsApiResource { return this.toApiJsonSerializer.serialize(result); } catch (ObjectOptimisticLockingFailureException lockingFailureException) { throw new PlatformDataIntegrityException("error.msg.savings.concurrent.operations", - "Concurrent Transactions being made on this savings account: " + lockingFailureException.getMessage()); + "Concurrent Transactions being made on this savings account: " + lockingFailureException.getMessage(), + lockingFailureException); } catch (CannotAcquireLockException cannotAcquireLockException) { throw new PlatformDataIntegrityException("error.msg.savings.concurrent.operations.unable.to.acquire.lock", - "Unable to acquir lock for this transaction: " + cannotAcquireLockException.getMessage()); + "Unable to acquir lock for this transaction: " + cannotAcquireLockException.getMessage(), cannotAcquireLockException); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java index c6a67404e..80b8fbe57 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.savings.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class DepositAccountInterestRateChartNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -26,4 +27,9 @@ public class DepositAccountInterestRateChartNotFoundException extends AbstractPl super("error.msg.deposit.account.interest.rate.chart.id.invalid", "Deposit Account Interest rate chart with identifier " + id + " does not exist", id); } + + public DepositAccountInterestRateChartNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.deposit.account.interest.rate.chart.id.invalid", + "Deposit Account Interest rate chart with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java index 786af8cc2..4ce0ad800 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java @@ -21,6 +21,7 @@ package org.apache.fineract.portfolio.savings.exception; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; import org.apache.fineract.portfolio.savings.DepositAccountType; +import org.springframework.dao.EmptyResultDataAccessException; public class DepositAccountNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -28,4 +29,9 @@ public class DepositAccountNotFoundException extends AbstractPlatformResourceNot super("error.msg." + accountType.getCode().toLowerCase() + ".id.invalid", StringUtils.capitalize(accountType.toString().toLowerCase()) + " account with identifier " + id + " does not exist", id); } + + public DepositAccountNotFoundException(DepositAccountType accountType, Long id, EmptyResultDataAccessException e) { + super("error.msg." + accountType.getCode().toLowerCase() + ".id.invalid", + StringUtils.capitalize(accountType.toString().toLowerCase()) + " account with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java index 4381e3ef5..a81cdd4ec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.savings.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class FixedDepositProductNotFoundException extends AbstractPlatformResourceNotFoundException { public FixedDepositProductNotFoundException(final Long id) { super("error.msg.fixeddepositproduct.id.invalid", "Fixed deposit product with identifier " + id + " does not exist", id); } + + public FixedDepositProductNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.fixeddepositproduct.id.invalid", "Fixed deposit product with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java index 6f12b08c0..268f14dcd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.portfolio.savings.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class SavingsAccountNotFoundException extends AbstractPlatformResourceNotFoundException { @@ -30,4 +31,8 @@ public class SavingsAccountNotFoundException extends AbstractPlatformResourceNot super("error.msg.saving.account.id.invalid", "Savings account with external identifier " + externalId + " does not exist", externalId); } + + public SavingsAccountNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.saving.account.id.invalid", "Savings account with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java index 0a2658a91..2d86227d4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java @@ -19,10 +19,15 @@ package org.apache.fineract.portfolio.savings.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; public class SavingsProductNotFoundException extends AbstractPlatformResourceNotFoundException { public SavingsProductNotFoundException(final Long id) { super("error.msg.savingproduct.id.invalid", "Saving product with identifier " + id + " does not exist", id); } + + public SavingsProductNotFoundException(Long id, EmptyResultDataAccessException e) { + super("error.msg.savingproduct.id.invalid", "Saving product with identifier " + id + " does not exist", id, e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java index 56b5b3ca6..03442cc8a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java @@ -82,7 +82,7 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D final String sql = "select " + this.chartRowMapper.schema() + " where irc.id = ? "; return this.jdbcTemplate.queryForObject(sql, this.chartRowMapper, new Object[] { chartId }); } catch (final EmptyResultDataAccessException e) { - throw new DepositAccountInterestRateChartNotFoundException(chartId); + throw new DepositAccountInterestRateChartNotFoundException(chartId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java index 69b5864be..c2b0aacf2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java @@ -249,7 +249,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead new Object[] { accountId, depositAccountType.getValue() }); } catch (final EmptyResultDataAccessException e) { - throw new DepositAccountNotFoundException(depositAccountType, accountId); + throw new DepositAccountNotFoundException(depositAccountType, accountId, e); } } @@ -286,7 +286,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead return account; } catch (final EmptyResultDataAccessException e) { - throw new DepositAccountNotFoundException(depositAccountType, accountId); + throw new DepositAccountNotFoundException(depositAccountType, accountId, e); } } @@ -498,7 +498,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead return this.jdbcTemplate.queryForObject(sql, this.rdTransactionTemplateMapper, new Object[] { accountId, accountId, DepositAccountType.RECURRING_DEPOSIT.getValue() }); } catch (final EmptyResultDataAccessException e) { - throw new DepositAccountNotFoundException(DepositAccountType.RECURRING_DEPOSIT, accountId); + throw new DepositAccountNotFoundException(DepositAccountType.RECURRING_DEPOSIT, accountId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java index f44046308..e6822a47a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java @@ -108,7 +108,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead new Object[] { fixedDepositProductId, depositAccountType.getValue() }); } catch (final EmptyResultDataAccessException e) { - throw new FixedDepositProductNotFoundException(fixedDepositProductId); + throw new FixedDepositProductNotFoundException(fixedDepositProductId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java index 2f6a2c486..cf4bd2bb7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java @@ -180,7 +180,7 @@ public class SavingsAccountChargeReadPlatformServiceImpl implements SavingsAccou return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { id, savingsAccountId }); } catch (final EmptyResultDataAccessException e) { - throw new SavingsAccountChargeNotFoundException(savingsAccountId); + throw new SavingsAccountChargeNotFoundException(savingsAccountId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index 941a48196..018246aaa 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -227,7 +227,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead return this.jdbcTemplate.queryForObject(sql, this.savingAccountMapper, new Object[] { accountId }); } catch (final EmptyResultDataAccessException e) { - throw new SavingsAccountNotFoundException(accountId); + throw new SavingsAccountNotFoundException(accountId, e); } } @@ -738,7 +738,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead return this.jdbcTemplate.queryForObject(sql, this.transactionTemplateMapper, new Object[] { savingsId, depositAccountType.getValue() }); } catch (final EmptyResultDataAccessException e) { - throw new SavingsAccountNotFoundException(savingsId); + throw new SavingsAccountNotFoundException(savingsId, e); } } @@ -1203,7 +1203,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead return this.jdbcTemplate.queryForObject(buff.toString(), new Object[] { accountId, clientId, depositAccountType.getValue(), currencyCode }, Integer.class) > 0; } catch (final EmptyResultDataAccessException e) { - throw new SavingsAccountNotFoundException(accountId); + throw new SavingsAccountNotFoundException(accountId, e); } } /* @@ -1235,7 +1235,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final String sql = "select s.account_no from m_savings_account s where s.id = ?"; return this.jdbcTemplate.queryForObject(sql, new Object[] { accountId }, String.class); } catch (final EmptyResultDataAccessException e) { - throw new SavingsAccountNotFoundException(accountId); + throw new SavingsAccountNotFoundException(accountId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java index caf8b0d9b..1ad34a1df 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java @@ -100,7 +100,7 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead return this.jdbcTemplate.queryForObject(sql, this.savingsProductRowMapper, new Object[] { savingProductId, DepositAccountType.SAVINGS_DEPOSIT.getValue() }); } catch (final EmptyResultDataAccessException e) { - throw new SavingsProductNotFoundException(savingProductId); + throw new SavingsProductNotFoundException(savingProductId, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java index ca2b14b1c..75a9daa4e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java @@ -511,7 +511,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat final String sql = "select s.account_no from m_share_account s where s.id = ?"; return this.jdbcTemplate.queryForObject(sql, new Object[] { accountId }, String.class); } catch (final EmptyResultDataAccessException e) { - throw new ShareAccountNotFoundException(accountId); + throw new ShareAccountNotFoundException(accountId, e); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java index 72da3936c..b02780578 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java @@ -137,7 +137,7 @@ public class ShareProductReadPlatformServiceImpl implements ProductReadPlatformS } return data; } catch (final EmptyResultDataAccessException e) { - throw new ProductNotFoundException(productId, "share"); + throw new ProductNotFoundException(productId, "share", e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/PasswordValidationPolicyNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/PasswordValidationPolicyNotFoundException.java index 77f52493e..a2e608753 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/PasswordValidationPolicyNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/PasswordValidationPolicyNotFoundException.java @@ -19,6 +19,7 @@ package org.apache.fineract.useradministration.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.springframework.dao.EmptyResultDataAccessException; /** * A {@link RuntimeException} thrown when role resources are not found. @@ -33,4 +34,8 @@ public class PasswordValidationPolicyNotFoundException extends AbstractPlatformR public PasswordValidationPolicyNotFoundException() { super("error.msg.password.validation.policy.not.found", "An active password validation policy was not found"); } + + public PasswordValidationPolicyNotFoundException(EmptyResultDataAccessException e) { + super("error.msg.password.validation.policy.not.found", "An active password validation policy was not found", e); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java index f360dbdc8..368b55fe5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java @@ -177,7 +177,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit dataValidationErrors.add(error); throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", - dataValidationErrors); + dataValidationErrors, e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordPreferencesWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordPreferencesWritePlatformServiceJpaRepositoryImpl.java index 280da8a33..fdc270022 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordPreferencesWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordPreferencesWritePlatformServiceJpaRepositoryImpl.java @@ -92,7 +92,7 @@ public class PasswordPreferencesWritePlatformServiceJpaRepositoryImpl implements } catch (final DataIntegrityViolationException dve) { LOG.error("Error occured.", dve); throw new PlatformDataIntegrityException("error.msg.password.validation.policy.unknown.data.integrity.issue", - "Unknown data integrity issue with resource."); + "Unknown data integrity issue with resource.", dve); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordValidationPolicyReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordValidationPolicyReadPlatformServiceImpl.java index a8f540572..ee30fc55d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordValidationPolicyReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/PasswordValidationPolicyReadPlatformServiceImpl.java @@ -56,7 +56,7 @@ public class PasswordValidationPolicyReadPlatformServiceImpl implements Password final String sql = "select " + this.passwordValidationPolicyMapper.schema() + " where pvp.active = true"; return this.jdbcTemplate.queryForObject(sql, this.passwordValidationPolicyMapper); } catch (final EmptyResultDataAccessException e) { - throw new PasswordValidationPolicyNotFoundException(); + throw new PasswordValidationPolicyNotFoundException(e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java index 10086e34f..3a637f691 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java @@ -235,7 +235,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf return new CommandProcessingResultBuilder().withEntityId(roleId).build(); } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } @@ -269,7 +269,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } @@ -292,7 +292,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf } catch (final DataIntegrityViolationException e) { throw new PlatformDataIntegrityException("error.msg.unknown.data.integrity.issue", - "Unknown data integrity issue with resource: " + e.getMostSpecificCause()); + "Unknown data integrity issue with resource: " + e.getMostSpecificCause(), e); } } }