[
https://issues.apache.org/jira/browse/FINERACT-2806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ashhar Ahmad Khan updated FINERACT-2806:
----------------------------------------
Fix Version/s: 1.16.0
> IndexOutOfBoundsException in
> JournalEntryWritePlatformServiceImpl.revertJournalEntry when no unreversed
> manual journal entries exist
> ------------------------------------------------------------------------------------------------------------------------------------
>
> Key: FINERACT-2806
> URL: https://issues.apache.org/jira/browse/FINERACT-2806
> Project: Apache Fineract
> Issue Type: Bug
> Reporter: Ashhar Ahmad Khan
> Priority: Minor
> Fix For: 1.16.0
>
>
> *What is broken*
> {{JournalEntryWritePlatformServiceImpl.revertJournalEntry(List<JournalEntry>,
> String)}} calls {{journalEntries.get(0).getOffice().getId()}} with no check
> that the list is non-empty. This overload is called from two places: the
> public API entry point {{{}revertJournalEntry(JsonCommand){}}}, which
> validates the list is non-empty before calling it, and
> {{{}defineOpeningBalance(JsonCommand){}}}, which does not. For each
> transaction ID returned by {{{}findNonReversedContraTransactionIds(){}}},
> {{defineOpeningBalance()}} fetches journal entries via the narrower
> {{findUnReversedManualJournalEntriesByTransactionId()}} query and passes the
> result straight into {{revertJournalEntry()}} with no guard. If a contra
> transaction has no unreversed manual journal entries (for example, if it was
> system-generated rather than manually posted), this query returns an empty
> list and the method throws {{{}IndexOutOfBoundsException{}}}, blocking the
> entire opening-balance definition workflow.
> *Why it's broken*
> The guard pattern already exists elsewhere in the same file —
> {{revertShareAccountJournalEntries()}} checks for a null or empty list before
> an equivalent access — but was never applied to this call site.
> *Changes made*
> {{JournalEntryWritePlatformServiceImpl.revertJournalEntry(List<JournalEntry>,
> String)}} now returns early when the list is null or empty, mirroring the
> guard already used elsewhere in the file.
> Added {{{}JournalEntryWritePlatformServiceImplTest.java{}}}, a regression
> test confirming {{revertJournalEntry()}} no longer throws when called with an
> empty list.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)