Skip to content

FINERACT-2657: Fix NPE updating a provisioning criteria by matching definitions on categoryId#6027

Merged
adamsaghy merged 1 commit into
apache:developfrom
TECHSERVICES-LIMITED:bugfix/FINERACT-2657
Jun 29, 2026
Merged

FINERACT-2657: Fix NPE updating a provisioning criteria by matching definitions on categoryId#6027
adamsaghy merged 1 commit into
apache:developfrom
TECHSERVICES-LIMITED:bugfix/FINERACT-2657

Conversation

@oluexpert99

Copy link
Copy Markdown
Contributor

Description

  • ProvisioningCriteria.update matched incoming definitions by the surrogate id, but the public UPDATE
    payload keys each definition only by categoryId, so data.getId() was null and update() threw a
    NullPointerException (HTTP 500) on every provisioning-criteria update.
  • Match the existing definition by categoryId (its natural key, unique per criteria) and reject an
    unknown categoryId with a clean validation error instead of the NPE; add a getCategoryId() accessor
    on ProvisioningCriteriaDefinition.
  • Add ProvisioningCriteriaTest covering the match-by-categoryId update path and the unknown-category
    validation path.

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.

Your assigned reviewer(s) will follow our guidelines for code reviews.

@oluexpert99 oluexpert99 force-pushed the bugfix/FINERACT-2657 branch from d9295bf to 9406803 Compare June 23, 2026 23:33

@adamsaghy adamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like this approach.

why to iterate through all definition one by one, instead of look up by id?

@oluexpert99 oluexpert99 force-pushed the bugfix/FINERACT-2657 branch from 9406803 to 7d3a6e3 Compare June 26, 2026 14:12
…efinitions on categoryId

- The update path matched incoming definitions by the surrogate id, but the public UPDATE payload keys
  each definition only by categoryId, so data.getId() was null and the match threw a NullPointerException
  (HTTP 500) on every provisioning-criteria update.
- Expose the criteria's definitions indexed by categoryId (its natural key) via
  ProvisioningCriteria.getDefinitionsByCategoryId(), and have the write service build that index once and
  resolve each incoming definition with a direct lookup instead of rescanning the whole set per entry.
- Reject an unknown categoryId with a clean validation error instead of the NPE.
- Index with a first-wins merge function: (criteria_id, category_id) is not DB-unique, so a duplicate
  category must not make the update 500 via Collectors.toMap; the prior scan also matched the first.
- Add ProvisioningCriteriaTest (the categoryId index) and
  ProvisioningCriteriaWritePlatformServiceJpaRepositoryImplTest (update applied by categoryId; unknown
  category -> clean 400, not an NPE).

Signed-off-by: oluexpert99 <farooq@techservicehub.io>
@oluexpert99 oluexpert99 force-pushed the bugfix/FINERACT-2657 branch from 7d3a6e3 to c847c36 Compare June 26, 2026 14:28
@oluexpert99 oluexpert99 requested a review from adamsaghy June 26, 2026 14:28
@oluexpert99

Copy link
Copy Markdown
Contributor Author

@adamsaghy , Thank you. concerns addressed

@adamsaghy adamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy adamsaghy merged commit 2220523 into apache:develop Jun 29, 2026
90 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants