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 c422d2611 FINERACT-1932: Add starter configuration class for 
portfolio.rate module
c422d2611 is described below

commit c422d2611e4ee57ae62a4a6cccebb4219678235f
Author: Mohamed Magdi-Abdelmonem <mohamed.magdi.abdelmo...@gmail.com>
AuthorDate: Sun Oct 1 21:34:13 2023 +0300

    FINERACT-1932: Add starter configuration class for portfolio.rate module
---
 .../portfolio/rate/service/RateAssembler.java      | 11 +---
 .../rate/service/RateReadServiceImpl.java          | 11 +---
 .../rate/service/RateWriteServiceImpl.java         | 22 ++------
 .../portfolio/rate/starter/RateConfiguration.java  | 58 ++++++++++++++++++++++
 4 files changed, 67 insertions(+), 35 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateAssembler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateAssembler.java
index 4404e99b4..e76923898 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateAssembler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateAssembler.java
@@ -24,25 +24,18 @@ import com.google.gson.JsonObject;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
 import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
 import org.apache.fineract.portfolio.rate.domain.Rate;
 import org.apache.fineract.portfolio.rate.domain.RateRepositoryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class RateAssembler {
 
     private final FromJsonHelper fromApiJsonHelper;
     private final RateRepositoryWrapper rateRepository;
 
-    @Autowired
-    public RateAssembler(final FromJsonHelper fromApiJsonHelper, final 
RateRepositoryWrapper rateRepository) {
-        this.fromApiJsonHelper = fromApiJsonHelper;
-        this.rateRepository = rateRepository;
-    }
-
     public List<Rate> fromParsedJson(final JsonElement element) {
 
         final List<Rate> rateItems = new ArrayList<>();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
index 67b57ff7c..f2f52a81f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
@@ -24,32 +24,25 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.List;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.portfolio.rate.data.RateData;
 import org.apache.fineract.portfolio.rate.domain.RateAppliesTo;
 import org.apache.fineract.portfolio.rate.exception.RateNotFoundException;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Service;
 
 /**
  * Bowpi GT Created by Jose on 19/07/2017.
  */
-@Service
+@RequiredArgsConstructor
 public class RateReadServiceImpl implements RateReadService {
 
     private final JdbcTemplate jdbcTemplate;
     private final PlatformSecurityContext context;
 
-    @Autowired
-    public RateReadServiceImpl(PlatformSecurityContext context, final 
JdbcTemplate jdbcTemplate) {
-        this.context = context;
-        this.jdbcTemplate = jdbcTemplate;
-    }
-
     @Override
     public Collection<RateData> retrieveAllRates() {
         this.context.authenticatedUser();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateWriteServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateWriteServiceImpl.java
index 52565d0b0..74429555b 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateWriteServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateWriteServiceImpl.java
@@ -22,6 +22,8 @@ import static 
org.apache.fineract.portfolio.rate.api.RateApiConstants.approveUse
 
 import jakarta.persistence.PersistenceException;
 import java.util.Map;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
@@ -35,36 +37,22 @@ import 
org.apache.fineract.portfolio.rate.serialization.RateDefinitionCommandFro
 import org.apache.fineract.useradministration.domain.AppUser;
 import org.apache.fineract.useradministration.domain.AppUserRepository;
 import org.apache.fineract.useradministration.exception.UserNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.orm.jpa.JpaSystemException;
-import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
  * Bowpi GT Created by Jose on 19/07/2017.
  */
-@Service
+@RequiredArgsConstructor
+@Slf4j
 public class RateWriteServiceImpl implements RateWriteService {
 
-    private static final Logger LOG = 
LoggerFactory.getLogger(RateWriteServiceImpl.class);
-
     private final RateRepository rateRepository;
     private final AppUserRepository appUserRepository;
     private final PlatformSecurityContext context;
     private final RateDefinitionCommandFromApiJsonDeserializer 
fromApiJsonDeserializer;
 
-    @Autowired
-    public RateWriteServiceImpl(RateRepository rateRepository, 
AppUserRepository appUserRepository,
-            final RateDefinitionCommandFromApiJsonDeserializer 
fromApiJsonDeserializer, PlatformSecurityContext context) {
-        this.rateRepository = rateRepository;
-        this.appUserRepository = appUserRepository;
-        this.context = context;
-        this.fromApiJsonDeserializer = fromApiJsonDeserializer;
-    }
-
     @Override
     public CommandProcessingResult createRate(JsonCommand command) {
         try {
@@ -143,7 +131,7 @@ public class RateWriteServiceImpl implements 
RateWriteService {
                     "A rate with name '" + name + "' already exists", "name", 
name);
         }
 
-        LOG.error("Error due to Exception", dve);
+        log.error("Error due to Exception", dve);
         throw new 
PlatformDataIntegrityException("error.msg.fund.unknown.data.integrity.issue",
                 "Unknown data integrity issue with resource: " + 
realCause.getMessage());
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/starter/RateConfiguration.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/starter/RateConfiguration.java
new file mode 100644
index 000000000..87002355d
--- /dev/null
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/starter/RateConfiguration.java
@@ -0,0 +1,58 @@
+/**
+ * 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.rate.starter;
+
+import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
+import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.portfolio.rate.domain.RateRepository;
+import org.apache.fineract.portfolio.rate.domain.RateRepositoryWrapper;
+import 
org.apache.fineract.portfolio.rate.serialization.RateDefinitionCommandFromApiJsonDeserializer;
+import org.apache.fineract.portfolio.rate.service.RateAssembler;
+import org.apache.fineract.portfolio.rate.service.RateReadService;
+import org.apache.fineract.portfolio.rate.service.RateReadServiceImpl;
+import org.apache.fineract.portfolio.rate.service.RateWriteService;
+import org.apache.fineract.portfolio.rate.service.RateWriteServiceImpl;
+import org.apache.fineract.useradministration.domain.AppUserRepository;
+import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+@Configuration
+public class RateConfiguration {
+
+    @Bean
+    @ConditionalOnMissingBean(RateAssembler.class)
+    public RateAssembler rateAssembler(FromJsonHelper fromApiJsonHelper, 
RateRepositoryWrapper rateRepository) {
+        return new RateAssembler(fromApiJsonHelper, rateRepository);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(RateReadService.class)
+    public RateReadService rateReadService(JdbcTemplate jdbcTemplate, 
PlatformSecurityContext context) {
+        return new RateReadServiceImpl(jdbcTemplate, context);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(RateWriteService.class)
+    public RateWriteService rateWriteService(RateRepository rateRepository, 
AppUserRepository appUserRepository,
+            PlatformSecurityContext context, 
RateDefinitionCommandFromApiJsonDeserializer fromApiJsonDeserializer) {
+        return new RateWriteServiceImpl(rateRepository, appUserRepository, 
context, fromApiJsonDeserializer);
+    }
+}

Reply via email to