This is an automated email from the ASF dual-hosted git repository.
arnold 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 0155db70b Fix possible null
0155db70b is described below
commit 0155db70b7bff43fe23b6746e5f92506d3a0bf12
Author: b0c1 <[email protected]>
AuthorDate: Mon Nov 14 12:55:56 2022 +0100
Fix possible null
---
.../service/ReadWriteNonCoreDataServiceImpl.java | 2 ++
.../infrastructure/jobs/filter/LoanCOBApiFilter.java | 17 +++--------------
.../serialization/FloatingRateDataValidator.java | 4 ++--
.../service/LoanChargeWritePlatformServiceImpl.java | 7 ++++---
.../service/ReadWriteNonCoreDataServiceImplTest.java | 17 +++++++++++++++++
5 files changed, 28 insertions(+), 19 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java
index 97cf62aea..e1e295ab4 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java
@@ -221,6 +221,8 @@ public class ReadWriteNonCoreDataServiceImpl implements
ReadWriteNonCoreDataServ
rowSet = callFilteredPgSql(sql, valueFilter, filterColumnType);
} else if (databaseTypeResolver.isMySQL()) {
rowSet = callFilteredMysql(sql, valueFilter, filterColumnType);
+ } else {
+ throw new IllegalStateException("Database type is not supported");
}
String[] resultColumnNames = resultColumns.split(",");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilter.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilter.java
index 74ff37f40..6ca5ac501 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilter.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilter.java
@@ -133,17 +133,9 @@ public class LoanCOBApiFilter extends OncePerRequestFilter
{
private Long getLoanId(boolean isGlim, Supplier<Stream<String>>
streamSupplier) {
if (!isGlim) {
- if (streamSupplier.get().count() >= LOAN_ID_INDEX_IN_URL + 1) {
- return
Long.valueOf(streamSupplier.get().skip(LOAN_ID_INDEX_IN_URL).findFirst().get());
- } else {
- return null;
- }
+ return
streamSupplier.get().skip(LOAN_ID_INDEX_IN_URL).findFirst().map(Long::valueOf).orElse(null);
} else {
- if (streamSupplier.get().count() >= GLIM_ID_INDEX_IN_URL + 1) {
- return
Long.valueOf(streamSupplier.get().skip(GLIM_ID_INDEX_IN_URL).findFirst().get());
- } else {
- return null;
- }
+ return
streamSupplier.get().skip(GLIM_ID_INDEX_IN_URL).findFirst().map(Long::valueOf).orElse(null);
}
}
@@ -155,9 +147,6 @@ public class LoanCOBApiFilter extends OncePerRequestFilter {
}
private boolean isGlim(Supplier<Stream<String>> streamSupplier) {
- if (streamSupplier.get().count() >= GLIM_STRING_INDEX_IN_URL + 1) {
- return
"glimAccount".equals(streamSupplier.get().skip(GLIM_STRING_INDEX_IN_URL).findFirst().get());
- }
- return false;
+ return
streamSupplier.get().skip(GLIM_STRING_INDEX_IN_URL).findFirst().map(s ->
s.equals("glimAccount")).orElse(false);
}
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java
index 550f5365a..84a6915b9 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java
@@ -198,7 +198,7 @@ public class FloatingRateDataValidator {
baseDataValidator.reset().parameter(IS_BASE_LENDING_RATE).value(isBaseLendingRate).notNull();
if (isBaseLendingRate == null) {
baseDataValidator.reset().parameter(IS_BASE_LENDING_RATE).trueOrFalseRequired(false);
- } else if (isBaseLendingRate && baseLendingRate != null &&
!baseLendingRate.getId().equals(floatingRateForUpdate.getId())) {
+ } else if (isBaseLendingRate && baseLendingRate != null &&
!baseLendingRate.getId().equals(floatingRateForUpdate.getId())) { // NOSONAR
baseDataValidator.reset().parameter(IS_BASE_LENDING_RATE).value(isBaseLendingRate).failWithCode("baselendingrate.duplicate",
"Base Lending Rate already exists");
}
@@ -220,7 +220,7 @@ public class FloatingRateDataValidator {
isActive = floatingRateForUpdate.isActive();
}
- if (baseLendingRate != null &&
baseLendingRate.getId().equals(floatingRateForUpdate.getId()) &&
(!isBaseLendingRate || !isActive)) {
+ if (baseLendingRate != null &&
baseLendingRate.getId().equals(floatingRateForUpdate.getId()) &&
(!isBaseLendingRate || !isActive)) { // NOSONAR
isBLRModifiedAsNonBLR = true;
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
index a99e8750a..d1fb1d42b 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
@@ -294,8 +294,9 @@ public class LoanChargeWritePlatformServiceImpl implements
LoanChargeWritePlatfo
break;
}
}
-
- businessEventNotifierService.notifyPostBusinessEvent(new
LoanBalanceChangedBusinessEvent(newChargeRefundTxn.getLoan()));
+ if (newChargeRefundTxn != null) {
+ businessEventNotifierService.notifyPostBusinessEvent(new
LoanBalanceChangedBusinessEvent(newChargeRefundTxn.getLoan()));
+ }
businessEventNotifierService.notifyPostBusinessEvent(new
LoanChargeRefundBusinessEvent(newChargeRefundTxn));
return result;
}
@@ -1075,7 +1076,7 @@ public class LoanChargeWritePlatformServiceImpl
implements LoanChargeWritePlatfo
BigDecimal chargeAmountPaid;
BigDecimal chargeAmountRefunded = BigDecimal.ZERO;
MonetaryCurrency loanCurrency = loanCharge.getLoan().getCurrency();
- if (loanCharge.isInstalmentFee()) {
+ if (loanCharge.isInstalmentFee() && installmentChargeEntry != null) {
final Integer installmentNumber =
installmentChargeEntry.getRepaymentInstallment().getInstallmentNumber();
chargeAmountPaid =
installmentChargeEntry.getAmountPaid(loanCurrency).getAmount();
for (LoanChargePaidBy loanChargePaidBy :
loanCharge.getLoanChargePaidBySet()) {
diff --git
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImplTest.java
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImplTest.java
index caa3ab3b4..34d88cd35 100644
---
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImplTest.java
+++
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImplTest.java
@@ -99,4 +99,21 @@ public class ReadWriteNonCoreDataServiceImplTest {
when(genericDataService.fillResultsetColumnHeaders("table")).thenReturn(Collections.emptyList());
assertThrows(PlatformApiDataValidationException.class, () ->
underTest.queryDataTable("table", "cf1", "vf1", "rc1,rc2"));
}
+
+ @Test
+ public void testInvalidDatabase() {
+ SqlRowSet sqlRS = Mockito.mock(SqlRowSet.class);
+ when(jdbcTemplate.queryForRowSet(eq("select rc1,rc2 from table where
cf1 = ?"), any(Object[].class), any(int[].class)))
+ .thenReturn(sqlRS);
+ when(sqlRS.next()).thenReturn(true).thenReturn(false);
+
when(sqlRS.getObject(ArgumentMatchers.anyString())).thenReturn("value1").thenReturn("value2");
+ when(databaseTypeResolver.isPostgreSQL()).thenReturn(false);
+ when(databaseTypeResolver.isMySQL()).thenReturn(false);
+ ResultsetColumnHeaderData cf1 =
ResultsetColumnHeaderData.detailed("cf1", "text", 10L, false, false, null,
null);
+ ResultsetColumnHeaderData rc1 =
ResultsetColumnHeaderData.detailed("rc1", "text", 10L, false, false, null,
null);
+ ResultsetColumnHeaderData rc2 =
ResultsetColumnHeaderData.detailed("rc2", "text", 10L, false, false, null,
null);
+
when(genericDataService.fillResultsetColumnHeaders("table")).thenReturn(List.of(cf1,
rc1, rc2));
+
+ assertThrows(IllegalStateException.class, () ->
underTest.queryDataTable("table", "cf1", "vf1", "rc1,rc2"));
+ }
}