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);

Reply via email to