This is an automated email from the ASF dual-hosted git repository.
aleks 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 1f6ff8c FINERACT-1496: Formatting change FINERACT-1496: Lazy
relationship loading for Loan and it's corresponding LoanCollateralManagement
entities and removed unnecessary data loads from ApplicationCurrency.
1f6ff8c is described below
commit 1f6ff8ccad154d5a95c24049e824258ac77a6c2c
Author: Arnold Galovics <[email protected]>
AuthorDate: Fri Feb 4 18:55:01 2022 +0100
FINERACT-1496: Formatting change
FINERACT-1496: Lazy relationship loading for Loan and it's corresponding
LoanCollateralManagement entities and removed unnecessary data loads from
ApplicationCurrency.
---
.../monetary/domain/ApplicationCurrency.java | 12 -----------
...ollateralManagementReadPlatformServiceImpl.java | 2 ++
.../portfolio/loanaccount/domain/Loan.java | 2 +-
.../ClientLoanIntegrationTest.java | 25 ++++++++++++++++++++++
4 files changed, 28 insertions(+), 13 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
index 33d4c57..2f987c0 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
@@ -18,17 +18,12 @@
*/
package org.apache.fineract.organisation.monetary.domain;
-import java.util.Collection;
-import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
import javax.persistence.Table;
import
org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
import org.apache.fineract.organisation.monetary.data.CurrencyData;
import org.apache.fineract.organisation.office.domain.OrganisationCurrency;
-import
org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain;
@Entity
@Table(name = "m_currency")
@@ -52,9 +47,6 @@ public class ApplicationCurrency extends
AbstractPersistableCustom {
@Column(name = "display_symbol", nullable = true, length = 10)
private String displaySymbol;
- @OneToMany(mappedBy = "currency", fetch = FetchType.EAGER, cascade =
CascadeType.ALL, orphanRemoval = true)
- private Collection<CollateralManagementDomain> collateralManagementData;
-
protected ApplicationCurrency() {
this.code = null;
this.name = null;
@@ -103,10 +95,6 @@ public class ApplicationCurrency extends
AbstractPersistableCustom {
return this.displaySymbol;
}
- public Collection<CollateralManagementDomain>
getCollateralManagementData() {
- return this.collateralManagementData;
- }
-
public CurrencyData toData() {
return new CurrencyData(this.code, this.name, this.decimalPlaces,
this.inMultiplesOf, this.displaySymbol, this.nameCode);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementReadPlatformServiceImpl.java
index 8c3ae4b..88d2a7f 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementReadPlatformServiceImpl.java
@@ -33,8 +33,10 @@ import
org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
import
org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional(readOnly = true)
public class LoanCollateralManagementReadPlatformServiceImpl implements
LoanCollateralManagementReadPlatformService {
private final PlatformSecurityContext context;
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index b0c5625..104ddea 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -316,7 +316,7 @@ public class Loan extends AbstractPersistableCustom {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "loan", orphanRemoval =
true, fetch = FetchType.LAZY)
private Set<LoanCollateral> collateral = null;
- @OneToMany(cascade = CascadeType.ALL, mappedBy = "loan", orphanRemoval =
true, fetch = FetchType.EAGER)
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "loan", orphanRemoval =
true, fetch = FetchType.LAZY)
private Set<LoanCollateralManagement> loanCollateralManagements = new
HashSet<>();
@OneToMany(cascade = CascadeType.ALL, mappedBy = "loan", orphanRemoval =
true, fetch = FetchType.LAZY)
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
index f26ce0b..e3f83e7 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
@@ -5610,6 +5610,31 @@ public class ClientLoanIntegrationTest {
}
+ @Test
+ public void testCollateralDataIsAvailableWhenRequested() {
+ // given
+ this.loanTransactionHelper = new
LoanTransactionHelper(this.requestSpec, this.responseSpec);
+ Integer collateralId =
CollateralManagementHelper.createCollateralProduct(this.requestSpec,
this.responseSpec);
+ List<HashMap> collaterals = new ArrayList<>();
+ Integer clientId = ClientHelper.createClient(this.requestSpec,
this.responseSpec);
+ ClientHelper.verifyClientCreatedOnServer(this.requestSpec,
this.responseSpec, clientId);
+
+ Integer clientCollateralId =
CollateralManagementHelper.createClientCollateral(this.requestSpec,
this.responseSpec,
+ String.valueOf(clientId), collateralId);
+ addCollaterals(collaterals, clientCollateralId, BigDecimal.valueOf(1));
+
+ Integer loanProductId = createLoanProduct(false, NONE);
+
+ // when
+ Integer loanId = applyForLoanApplication(clientId, loanProductId,
null, null, "12,000.00", collaterals);
+
+ // then
+ List<Integer> clientCollateralIds = (List<Integer>)
loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanId,
+ "collateral.clientCollateralId");
+ Integer clientCollateralIdResult = clientCollateralIds.get(0);
+ assertEquals(clientCollateralId, clientCollateralIdResult);
+ }
+
private void validateIfValuesAreNotOverridden(Integer loanID, Integer
loanProductID) {
String loanProductDetails =
this.loanTransactionHelper.getLoanProductDetails(this.requestSpec,
this.responseSpec, loanProductID);
String loanDetails =
this.loanTransactionHelper.getLoanDetails(this.requestSpec, this.responseSpec,
loanID);