This is an automated email from the ASF dual-hosted git repository.

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new fe98aa6a58 FINERACT-2489: Fix NPE for missing charts in Recurring 
Deposit Product
fe98aa6a58 is described below

commit fe98aa6a5848d8275e23f17e7cc3637a83cc5d26
Author: Dhananjay Bhagat <[email protected]>
AuthorDate: Fri Feb 13 19:56:54 2026 +0530

    FINERACT-2489: Fix NPE for missing charts in Recurring Deposit Product
---
 .../portfolio/savings/api/RecurringDepositProductsApiResource.java    | 4 ++--
 .../fineract/portfolio/savings/data/DepositProductDataValidator.java  | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java
index 9b9e23f7b0..06ca18b6a2 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java
@@ -115,9 +115,9 @@ public class RecurringDepositProductsApiResource {
     @Consumes({ MediaType.APPLICATION_JSON })
     @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Create a Recurring Deposit Product", description = 
"Creates a Recurring Deposit Product\n\n"
-            + "Mandatory Fields: name, shortName, description, currencyCode, 
digitsAfterDecimal,inMultiplesOf, interestCompoundingPeriodType, 
interestPostingPeriodType, interestCalculationType, 
interestCalculationDaysInYearType, minDepositTerm, minDepositTermTypeId, 
accountingRule, depositAmount\n\n"
+            + "Mandatory Fields: name, shortName, description, currencyCode, 
digitsAfterDecimal,inMultiplesOf, interestCompoundingPeriodType, 
interestPostingPeriodType, interestCalculationType, 
interestCalculationDaysInYearType, minDepositTerm, minDepositTermTypeId, 
accountingRule, depositAmount, charts\n\n"
             + "Mandatory Fields for Cash based accounting (accountingRule = 
2): savingsReferenceAccountId, savingsControlAccountId, 
interestOnSavingsAccountId, incomeFromFeeAccountId, 
transfersInSuspenseAccountId, incomeFromPenaltyAccountId\n\n"
-            + "Optional Fields: lockinPeriodFrequency, 
lockinPeriodFrequencyType, maxDepositTerm, maxDepositTermTypeId, 
inMultiplesOfDepositTerm, inMultiplesOfDepositTermTypeId, 
preClosurePenalApplicable, preClosurePenalInterest, 
preClosurePenalInterestOnTypeId, feeToIncomeAccountMappings, 
penaltyToIncomeAccountMappings, charges, charts, minDepositAmount, 
maxDepositAmount, withHoldTax, taxGroupId")
+            + "Optional Fields: lockinPeriodFrequency, 
lockinPeriodFrequencyType, maxDepositTerm, maxDepositTermTypeId, 
inMultiplesOfDepositTerm, inMultiplesOfDepositTermTypeId, 
preClosurePenalApplicable, preClosurePenalInterest, 
preClosurePenalInterestOnTypeId, feeToIncomeAccountMappings, 
penaltyToIncomeAccountMappings, charges, minDepositAmount, maxDepositAmount, 
withHoldTax, taxGroupId")
     @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = 
RecurringDepositProductsApiResourceSwagger.PostRecurringDepositProductsRequest.class)))
     @ApiResponses({
             @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
RecurringDepositProductsApiResourceSwagger.PostRecurringDepositProductsResponse.class)))
 })
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java
index e3a7401092..33069eae69 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java
@@ -366,6 +366,10 @@ public class DepositProductDataValidator {
             final JsonArray array = 
this.fromApiJsonHelper.extractJsonArrayNamed(chartsParamName, element);
             
baseDataValidator.reset().parameter(chartsParamName).value(array).notNull().jsonArrayNotEmpty();
 
+            if (array == null) {
+                return;
+            }
+
             for (int i = 0; i < array.size(); i++) {
                 final JsonObject interestRateChartElement = 
array.get(i).getAsJsonObject();
                 final String json = 
this.fromApiJsonHelper.toJson(interestRateChartElement);

Reply via email to