[
https://issues.apache.org/jira/browse/FINERACT-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
devi pathak resolved FINERACT-2552.
-----------------------------------
Resolution: Fixed
Fixed via PR #5685.
Handled a potential NullPointerException in flat EMI calculation when no
previous repayment period exists, and added corresponding test coverage.
> Potential NullPointerException in flat EMI calculation when no previous
> repayment period exists
> -----------------------------------------------------------------------------------------------
>
> Key: FINERACT-2552
> URL: https://issues.apache.org/jira/browse/FINERACT-2552
> Project: Apache Fineract
> Issue Type: Bug
> Components: Loan
> Reporter: devi pathak
> Priority: Minor
> Labels: bugfix
>
> h3. Description
> While analyzing the flat interest EMI recalculation logic in
> {{{}ProgressiveEMICalculator{}}}, a potential NullPointerException was
> identified in {{{}calculateEMIOnActualModelWithFlatInterestMethod{}}}.
> h3. Problem
> In scenarios where recalculation starts from the first repayment period,
> {{firstRepaymentPeriod.getPrevious()}} can return empty. This results in
> {{alreadyRepaidPrincipals}} being assigned {{{}null{}}}, which is later used
> in a subtraction operation:
> {{.minus(alreadyRepaidPrincipals)}}
> This can lead to a runtime NullPointerException during EMI calculation.
> h3. Steps to Reproduce
> # Use flat interest method
> # Trigger recalculation starting from the first repayment period (e.g.,
> during disbursement)
> # Observe potential failure due to null subtraction
> h3. Expected Behavior
> The calculation should safely handle cases where no previous repayment period
> exists.
> h3. Actual Behavior
> A null value is used in arithmetic operation, leading to potential runtime
> failure.
> h3. Solution
> Replace null fallback with a zero-value Money instance using the same
> currency context:
> {{.orElse(Money.zero(currency))}}
> h3. Impact
> * Improves robustness of EMI calculation
> * Prevents runtime exceptions in valid execution paths
> * No change in business logic
> h3. Additional Notes
> A unit test has been added to validate this scenario and ensure no regression.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)