[
https://issues.apache.org/jira/browse/FINERACT-2182?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Van Hove updated FINERACT-2182:
-------------------------------------
Description:
Someone (history on Slack #fineract 2025-02-16) attempted to create a simple
group via the Mifos client. This failed with the following stack trace on the
side of Fineract:
{quote}java.lang.NullPointerException: Cannot invoke "String.equals(Object)"
because "entityType" is null
at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.checkAccountNumberConflict(AccountNumberGenerator.java:200)
at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateAccountNumber(AccountNumberGenerator.java:175)
at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateGroupAccountNumber(AccountNumberGenerator.java:243)
at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.generateAccountNumberIfRequired(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:243)
at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroupingType(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:198)
at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroup(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:274)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
{quote}
Looking at the _AccountNumberGenerator.java_ it's clear this user's
c_configuration table had random-account-number=enabled. (This might explain,
why the problem hasn't popped up before.) In its current state, the method
_checkAccountNumberConflict_ requires _entityType_ to be in some property map.
But looking up the call stack, the _entityType_ can't be in the map. The map is
built in line 240ff.
The same bug might affect two other public generate* methods of this class.
They need to be adjusted too. (And why are there two public methods at the
bottom of the class? I suggest to move them up to the other public methods.)
For people working with random account numbers, this looks important.
Commit 39d95f3
[https://github.com/apache/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountNumberGenerator.java]
was:
Someone (history on Slack #fineract 2025-02-16) attempted to create a simple
group via the Mifos client. This failed with the following stack trace on the
side of Fineract:
??java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because
"entityType" is null??
?? at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.checkAccountNumberConflict(AccountNumberGenerator.java:200)??
?? at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateAccountNumber(AccountNumberGenerator.java:175)??
?? at
org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateGroupAccountNumber(AccountNumberGenerator.java:243)??
?? at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.generateAccountNumberIfRequired(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:243)??
?? at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroupingType(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:198)??
?? at
org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroup(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:274)??
?? at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)??
Looking at the _AccountNumberGenerator.java_ it's clear this user's
c_configuration table had random-account-number=enabled. (This might explain,
why the problem hasn't popped up before.) In its current state, the method
_checkAccountNumberConflict_ requires _entityType_ to be in some property map.
But looking up the call stack, the _entityType_ can't be in the map. The map is
built in line 240ff.
The same bug might affect two other public generate* methods of this class.
They need to be adjusted too. (And why are there two public methods at the
bottom of the class? I suggest to move them up to the other public methods.)
For people working with random account numbers, this looks important.
Commit 39d95f3
[https://github.com/apache/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountNumberGenerator.java]
> Group creation fails due to NullPointerException when
> random-account-number=enabled
> -----------------------------------------------------------------------------------
>
> Key: FINERACT-2182
> URL: https://issues.apache.org/jira/browse/FINERACT-2182
> Project: Apache Fineract
> Issue Type: Bug
> Components: Groups
> Reporter: Felix Van Hove
> Priority: Minor
>
> Someone (history on Slack #fineract 2025-02-16) attempted to create a simple
> group via the Mifos client. This failed with the following stack trace on the
> side of Fineract:
> {quote}java.lang.NullPointerException: Cannot invoke "String.equals(Object)"
> because "entityType" is null
> at
> org.apache.fineract.portfolio.account.service.AccountNumberGenerator.checkAccountNumberConflict(AccountNumberGenerator.java:200)
> at
> org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateAccountNumber(AccountNumberGenerator.java:175)
> at
> org.apache.fineract.portfolio.account.service.AccountNumberGenerator.generateGroupAccountNumber(AccountNumberGenerator.java:243)
> at
> org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.generateAccountNumberIfRequired(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:243)
> at
> org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroupingType(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:198)
> at
> org.apache.fineract.portfolio.group.service.GroupingTypesWritePlatformServiceJpaRepositoryImpl.createGroup(GroupingTypesWritePlatformServiceJpaRepositoryImpl.java:274)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> {quote}
> Looking at the _AccountNumberGenerator.java_ it's clear this user's
> c_configuration table had random-account-number=enabled. (This might explain,
> why the problem hasn't popped up before.) In its current state, the method
> _checkAccountNumberConflict_ requires _entityType_ to be in some property
> map. But looking up the call stack, the _entityType_ can't be in the map. The
> map is built in line 240ff.
> The same bug might affect two other public generate* methods of this class.
> They need to be adjusted too. (And why are there two public methods at the
> bottom of the class? I suggest to move them up to the other public methods.)
> For people working with random account numbers, this looks important.
> Commit 39d95f3
> [https://github.com/apache/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountNumberGenerator.java]
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)