You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by al...@apache.org on 2023/10/26 14:34:55 UTC

[fineract] branch develop updated: Add custom Configuration class for collateralmanagement module (FINERACT-1932)

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 62811ad60 Add custom Configuration class for collateralmanagement module (FINERACT-1932)
62811ad60 is described below

commit 62811ad60b68f9eee7b608de29a57cf155b7640f
Author: Sinha, Abhinav <si...@iu.edu>
AuthorDate: Tue Sep 19 12:05:30 2023 -0400

    Add custom Configuration class for collateralmanagement module (FINERACT-1932)
---
 ...ollateralManagementReadPlatformServiceImpl.java |  14 +--
 ...llateralManagementWritePlatformServiceImpl.java |  19 +---
 ...ollateralManagementReadPlatformServiceImpl.java |  12 +--
 ...llateralManagementWritePlatformServiceImpl.java |  13 +--
 .../service/LoanCollateralAssembler.java           |  15 +--
 ...ollateralManagementReadPlatformServiceImpl.java |   4 -
 ...llateralManagementWritePlatformServiceImpl.java |  12 +--
 .../starter/CollateralManagementConfiguration.java | 109 +++++++++++++++++++++
 8 files changed, 123 insertions(+), 75 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementReadPlatformServiceImpl.java
index 0286cc19a..27d3fbfff 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementReadPlatformServiceImpl.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralManagementData;
 import org.apache.fineract.portfolio.collateralmanagement.data.LoanCollateralTemplateData;
@@ -33,25 +34,14 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
 import org.apache.fineract.portfolio.loanaccount.exception.LoanTransactionNotFoundException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class ClientCollateralManagementReadPlatformServiceImpl implements ClientCollateralManagementReadPlatformService {
 
     private final PlatformSecurityContext context;
     private final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper;
     private final LoanTransactionRepository loanTransactionRepository;
 
-    @Autowired
-    public ClientCollateralManagementReadPlatformServiceImpl(final PlatformSecurityContext context,
-            final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper,
-            final LoanTransactionRepository loanTransactionRepository) {
-        this.context = context;
-        this.clientCollateralManagementRepositoryWrapper = clientCollateralManagementRepositoryWrapper;
-        this.loanTransactionRepository = loanTransactionRepository;
-    }
-
     @Override
     public List<ClientCollateralManagementData> getClientCollaterals(final Long clientId, final Long prodId) {
         return this.clientCollateralManagementRepositoryWrapper.getClientCollateralData(clientId, prodId);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
index 95576b97b..67d8ddb77 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
@@ -23,6 +23,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
@@ -39,26 +40,14 @@ import org.apache.fineract.portfolio.collateralmanagement.exception.ClientCollat
 import org.apache.fineract.portfolio.collateralmanagement.exception.ClientCollateralNotFoundException;
 import org.apache.fineract.portfolio.collateralmanagement.exception.CollateralNotFoundException;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class ClientCollateralManagementWritePlatformServiceImpl implements ClientCollateralManagementWritePlatformService {
 
     private final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper;
     private final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper;
     private final ClientRepositoryWrapper clientRepositoryWrapper;
 
-    @Autowired
-    public ClientCollateralManagementWritePlatformServiceImpl(
-            final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper,
-            final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper,
-            final ClientRepositoryWrapper clientRepositoryWrapper) {
-        this.clientCollateralManagementRepositoryWrapper = clientCollateralManagementRepositoryWrapper;
-        this.collateralManagementRepositoryWrapper = collateralManagementRepositoryWrapper;
-        this.clientRepositoryWrapper = clientRepositoryWrapper;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult addClientCollateralProduct(final JsonCommand command) {
@@ -136,7 +125,7 @@ public class ClientCollateralManagementWritePlatformServiceImpl implements Clien
         }
 
         BigDecimal totalQuantity = BigDecimal.ZERO;
-        if (clientCollateralManagement.getLoanCollateralManagementSet().size() > 0) {
+        if (!clientCollateralManagement.getLoanCollateralManagementSet().isEmpty()) {
             for (LoanCollateralManagement loanCollateralManagement : clientCollateralManagement.getLoanCollateralManagementSet()) {
                 totalQuantity = totalQuantity.add(loanCollateralManagement.getQuantity());
             }
@@ -167,7 +156,7 @@ public class ClientCollateralManagementWritePlatformServiceImpl implements Clien
             throw new CollateralNotFoundException(clientCollateralId);
         }
 
-        if (clientCollateralManagement.getLoanCollateralManagementSet().size() > 0) {
+        if (!clientCollateralManagement.getLoanCollateralManagementSet().isEmpty()) {
             for (LoanCollateralManagement loanCollateralManagement : clientCollateralManagement.getLoanCollateralManagementSet()) {
                 if (!loanCollateralManagement.isReleased()) {
                     throw new ClientCollateralCannotBeDeletedException(
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementReadPlatformServiceImpl.java
index 2d61ceca9..47432cee6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementReadPlatformServiceImpl.java
@@ -20,26 +20,18 @@ package org.apache.fineract.portfolio.collateralmanagement.service;
 
 import java.util.ArrayList;
 import java.util.List;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.portfolio.collateralmanagement.data.CollateralManagementData;
 import org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain;
 import org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementRepositoryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class CollateralManagementReadPlatformServiceImpl implements CollateralManagementReadPlatformService {
 
     private final PlatformSecurityContext context;
     private final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper;
 
-    @Autowired
-    public CollateralManagementReadPlatformServiceImpl(final PlatformSecurityContext context,
-            final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper) {
-        this.context = context;
-        this.collateralManagementRepositoryWrapper = collateralManagementRepositoryWrapper;
-    }
-
     @Override
     public CollateralManagementData getCollateralProduct(Long collateralId) {
         final CollateralManagementDomain collateralManagementDomain = this.collateralManagementRepositoryWrapper
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementWritePlatformServiceImpl.java
index fcaca36d2..e6a122185 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/CollateralManagementWritePlatformServiceImpl.java
@@ -23,6 +23,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
@@ -38,25 +39,15 @@ import org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManag
 import org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementRepositoryWrapper;
 import org.apache.fineract.portfolio.collateralmanagement.exception.CollateralCannotBeDeletedException;
 import org.apache.fineract.portfolio.collateralmanagement.exception.CollateralNotFoundException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-@Service
+@RequiredArgsConstructor
 public class CollateralManagementWritePlatformServiceImpl implements CollateralManagementWritePlatformService {
 
     private final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper;
     private final ApplicationCurrencyRepository applicationCurrencyRepository;
     private final FromJsonHelper fromApiJsonHelper;
 
-    @Autowired
-    public CollateralManagementWritePlatformServiceImpl(final CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper,
-            final ApplicationCurrencyRepository applicationCurrencyRepository, final FromJsonHelper fromApiJsonHelper) {
-        this.collateralManagementRepositoryWrapper = collateralManagementRepositoryWrapper;
-        this.applicationCurrencyRepository = applicationCurrencyRepository;
-        this.fromApiJsonHelper = fromApiJsonHelper;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult createCollateral(final JsonCommand jsonCommand) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralAssembler.java
index 37b6f48a1..26bdeeb48 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralAssembler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralAssembler.java
@@ -25,6 +25,7 @@ import java.math.BigDecimal;
 import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.codes.domain.CodeValueRepositoryWrapper;
 import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
 import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement;
@@ -33,10 +34,8 @@ import org.apache.fineract.portfolio.collateralmanagement.exception.LoanCollater
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository;
 import org.apache.fineract.portfolio.loanaccount.exception.InvalidAmountOfCollateralQuantity;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class LoanCollateralAssembler {
 
     private final FromJsonHelper fromApiJsonHelper;
@@ -44,16 +43,6 @@ public class LoanCollateralAssembler {
     private final LoanCollateralManagementRepository loanCollateralRepository;
     private final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper;
 
-    @Autowired
-    public LoanCollateralAssembler(final FromJsonHelper fromApiJsonHelper, final CodeValueRepositoryWrapper codeValueRepository,
-            final LoanCollateralManagementRepository loanCollateralRepository,
-            final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper) {
-        this.fromApiJsonHelper = fromApiJsonHelper;
-        this.codeValueRepository = codeValueRepository;
-        this.loanCollateralRepository = loanCollateralRepository;
-        this.clientCollateralManagementRepositoryWrapper = clientCollateralManagementRepositoryWrapper;
-    }
-
     public Set<LoanCollateralManagement> fromParsedJson(final JsonElement element) {
 
         final Set<LoanCollateralManagement> collateralItems = new HashSet<>();
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 88d2a7f19..74dc7787d 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
@@ -31,11 +31,8 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository;
 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 {
 
@@ -43,7 +40,6 @@ public class LoanCollateralManagementReadPlatformServiceImpl implements LoanColl
     private LoanCollateralManagementRepository loanCollateralManagementRepository;
     private LoanRepository loanRepository;
 
-    @Autowired
     public LoanCollateralManagementReadPlatformServiceImpl(final PlatformSecurityContext context,
             final LoanCollateralManagementRepository loanCollateralManagementRepository, final LoanRepository loanRepository) {
         this.context = context;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementWritePlatformServiceImpl.java
index 3f53fc76a..248e9e231 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/LoanCollateralManagementWritePlatformServiceImpl.java
@@ -19,6 +19,7 @@
 package org.apache.fineract.portfolio.collateralmanagement.service;
 
 import java.math.BigDecimal;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
@@ -26,23 +27,14 @@ import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollatera
 import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-@Service
+@RequiredArgsConstructor
 public class LoanCollateralManagementWritePlatformServiceImpl implements LoanCollateralManagementWritePlatformService {
 
     private final LoanCollateralManagementRepository loanCollateralManagementRepository;
     private final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper;
 
-    @Autowired
-    public LoanCollateralManagementWritePlatformServiceImpl(final LoanCollateralManagementRepository loanCollateralManagementRepository,
-            final ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper) {
-        this.loanCollateralManagementRepository = loanCollateralManagementRepository;
-        this.clientCollateralManagementRepositoryWrapper = clientCollateralManagementRepositoryWrapper;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult deleteLoanCollateral(JsonCommand command) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/starter/CollateralManagementConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/starter/CollateralManagementConfiguration.java
new file mode 100644
index 000000000..4c30c3987
--- /dev/null
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/starter/CollateralManagementConfiguration.java
@@ -0,0 +1,109 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.portfolio.collateralmanagement.starter;
+
+import org.apache.fineract.infrastructure.codes.domain.CodeValueRepositoryWrapper;
+import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
+import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository;
+import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper;
+import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepositoryWrapper;
+import org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementRepositoryWrapper;
+import org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementReadPlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementReadPlatformServiceImpl;
+import org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementWritePlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementWritePlatformServiceImpl;
+import org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementReadPlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementReadPlatformServiceImpl;
+import org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementWritePlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementWritePlatformServiceImpl;
+import org.apache.fineract.portfolio.collateralmanagement.service.LoanCollateralAssembler;
+import org.apache.fineract.portfolio.collateralmanagement.service.LoanCollateralManagementReadPlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.LoanCollateralManagementReadPlatformServiceImpl;
+import org.apache.fineract.portfolio.collateralmanagement.service.LoanCollateralManagementWritePlatformService;
+import org.apache.fineract.portfolio.collateralmanagement.service.LoanCollateralManagementWritePlatformServiceImpl;
+import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository;
+import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
+import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class CollateralManagementConfiguration {
+
+    @Bean
+    @ConditionalOnMissingBean(ClientCollateralManagementReadPlatformService.class)
+    public ClientCollateralManagementReadPlatformService clientCollateralManagementReadPlatformService(PlatformSecurityContext context,
+            ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper,
+            LoanTransactionRepository loanTransactionRepository) {
+        return new ClientCollateralManagementReadPlatformServiceImpl(context, clientCollateralManagementRepositoryWrapper,
+                loanTransactionRepository);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(ClientCollateralManagementWritePlatformService.class)
+    public ClientCollateralManagementWritePlatformService clientCollateralManagementWritePlatformService(
+            ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper,
+            CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper, ClientRepositoryWrapper clientRepositoryWrapper) {
+        return new ClientCollateralManagementWritePlatformServiceImpl(clientCollateralManagementRepositoryWrapper,
+                collateralManagementRepositoryWrapper, clientRepositoryWrapper);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(CollateralManagementReadPlatformService.class)
+    public CollateralManagementReadPlatformService collateralManagementReadPlatformService(PlatformSecurityContext context,
+            CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper) {
+        return new CollateralManagementReadPlatformServiceImpl(context, collateralManagementRepositoryWrapper);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(CollateralManagementWritePlatformService.class)
+    public CollateralManagementWritePlatformService collateralManagementWritePlatformService(
+            CollateralManagementRepositoryWrapper collateralManagementRepositoryWrapper,
+            ApplicationCurrencyRepository applicationCurrencyRepository, FromJsonHelper fromApiJsonHelper) {
+        return new CollateralManagementWritePlatformServiceImpl(collateralManagementRepositoryWrapper, applicationCurrencyRepository,
+                fromApiJsonHelper);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(LoanCollateralAssembler.class)
+    public LoanCollateralAssembler loanCollateralAssembler(FromJsonHelper fromApiJsonHelper, CodeValueRepositoryWrapper codeValueRepository,
+            LoanCollateralManagementRepository loanCollateralRepository,
+            ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper) {
+        return new LoanCollateralAssembler(fromApiJsonHelper, codeValueRepository, loanCollateralRepository,
+                clientCollateralManagementRepositoryWrapper);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(LoanCollateralManagementReadPlatformService.class)
+    public LoanCollateralManagementReadPlatformService loanCollateralManagementReadPlatformService(PlatformSecurityContext context,
+            LoanCollateralManagementRepository loanCollateralManagementRepository, LoanRepository loanRepository) {
+        return new LoanCollateralManagementReadPlatformServiceImpl(context, loanCollateralManagementRepository, loanRepository);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(LoanCollateralManagementWritePlatformService.class)
+    public LoanCollateralManagementWritePlatformService loanCollateralManagementWritePlatformService(
+            LoanCollateralManagementRepository loanCollateralManagementRepository,
+            ClientCollateralManagementRepositoryWrapper clientCollateralManagementRepositoryWrapper) {
+        return new LoanCollateralManagementWritePlatformServiceImpl(loanCollateralManagementRepository,
+                clientCollateralManagementRepositoryWrapper);
+    }
+}