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

commit 7a9e696ac890d2c59b29f216b7254b0782ca9a82
Author: Arnold Galovics <[email protected]>
AuthorDate: Wed Dec 28 18:22:50 2022 +0100

    Removed vavr related code
---
 .../core/filters/IdempotencyStoreFilter.java       | 13 ++--
 .../jobs/filter/LoanCOBApiFilter.java              | 78 ++++++++++++----------
 ...eauIntegrationWritePlatformServiceImplTest.java |  7 +-
 ...AccountDelinquencyRangeEventSerializerTest.java | 36 +++++-----
 .../BatchRequestsIntegrationTest.java              | 11 +--
 .../integrationtests/CreditBureauTest.java         |  6 +-
 6 files changed, 79 insertions(+), 72 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java
index 2030f2de0..5072e2710 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.fineract.infrastructure.core.filters;
 
-import io.vavr.collection.List;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
@@ -115,11 +114,13 @@ public class IdempotencyStoreFilter extends 
OncePerRequestFilter implements Batc
     }
 
     private Optional<String> extractIdempotentKeyFromBatchRequest(BatchRequest 
request) {
-        return Optional.ofNullable(request.getHeaders()) //
-                .map(List::ofAll) //
-                .flatMap(headers -> headers.find(header -> 
header.getName().equals(fineractProperties.getIdempotencyKeyHeaderName()))
-                        .toJavaOptional()) //
-                .map(Header::getValue); //
+        if (request.getHeaders() == null) {
+            return Optional.empty();
+        }
+        return request.getHeaders() //
+                .stream().filter(header -> 
header.getName().equals(fineractProperties.getIdempotencyKeyHeaderName())) //
+                .map(Header::getValue) //
+                .findAny(); //
 
     }
 
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 f31ef3127..95b09bd70 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
@@ -19,7 +19,6 @@
 package org.apache.fineract.infrastructure.jobs.filter;
 
 import com.google.common.base.Splitter;
-import io.vavr.control.Either;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Collections;
@@ -34,6 +33,7 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.UriInfo;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.fineract.batch.domain.BatchRequest;
@@ -74,6 +74,13 @@ public class LoanCOBApiFilter extends OncePerRequestFilter 
implements BatchFilte
     private static final Integer GLIM_STRING_INDEX_IN_URL = 2;
     private static final String JOB_NAME = "INLINE_LOAN_COB";
 
+    @RequiredArgsConstructor
+    @Getter
+    private static class LoanIdsHardLockedException extends RuntimeException {
+
+        private final Long loanIdFromRequest;
+    }
+
     private static class Reject {
 
         private final String message;
@@ -109,35 +116,37 @@ public class LoanCOBApiFilter extends 
OncePerRequestFilter implements BatchFilte
         if (!isOnApiList(request.getPathInfo(), request.getMethod())) {
             proceed(filterChain, request, response);
         } else {
-            Either<Reject, Boolean> bypassUser = isBypassUser();
-            if (bypassUser.isRight() && Boolean.TRUE.equals(bypassUser.get())) 
{
-                proceed(filterChain, request, response);
-            } else if (bypassUser.isLeft()) {
-                bypassUser.getLeft().toServletResponse(response);
-            } else {
-                Either<Reject, List<Long>> result = 
loanIdCalculation(request.getPathInfo());
-                if (result.isLeft()) {
-                    result.getLeft().toServletResponse(response);
+            try {
+                boolean bypassUser = isBypassUser();
+                if (bypassUser) {
+                    proceed(filterChain, request, response);
                 } else {
-                    if (isLoanSoftLocked(result.get())) {
-                        executeInlineCob(result.get());
+                    try {
+                        List<Long> result = 
calculateRelevantLoanIds(request.getPathInfo());
+                        if (isLoanSoftLocked(result)) {
+                            executeInlineCob(result);
+                        }
+                        proceed(filterChain, request, response);
+                    } catch (LoanIdsHardLockedException e) {
+                        Reject.reject(e.getLoanIdFromRequest(), 
HttpStatus.SC_CONFLICT).toServletResponse(response);
                     }
-                    proceed(filterChain, request, response);
                 }
+            } catch (UnAuthenticatedUserException e) {
+                Reject.reject(null, 
HttpStatus.SC_UNAUTHORIZED).toServletResponse(response);
             }
         }
     }
 
-    private Either<Reject, List<Long>> loanIdCalculation(String pathInfo) {
+    private List<Long> calculateRelevantLoanIds(String pathInfo) {
         Iterable<String> split = Splitter.on('/').split(pathInfo);
         Supplier<Stream<String>> streamSupplier = () -> 
StreamSupport.stream(split.spliterator(), false);
         boolean isGlim = isGlim(streamSupplier);
         Long loanIdFromRequest = getLoanId(isGlim, streamSupplier);
         List<Long> loanIds = isGlim ? getGlimChildLoanIds(loanIdFromRequest) : 
Collections.singletonList(loanIdFromRequest);
         if (isLoanHardLocked(loanIds)) {
-            return Either.left(Reject.reject(loanIdFromRequest, 
HttpStatus.SC_CONFLICT));
+            throw new LoanIdsHardLockedException(loanIdFromRequest);
         } else {
-            return Either.right(loanIds);
+            return loanIds;
         }
     }
 
@@ -145,12 +154,8 @@ public class LoanCOBApiFilter extends OncePerRequestFilter 
implements BatchFilte
         inlineLoanCOBExecutorService.execute(loanIds, JOB_NAME);
     }
 
-    private Either<Reject, Boolean> isBypassUser() {
-        try {
-            return Either.right(context.authenticatedUser().isBypassUser());
-        } catch (UnAuthenticatedUserException e) {
-            return Either.left(Reject.reject(null, 
HttpStatus.SC_UNAUTHORIZED));
-        }
+    private boolean isBypassUser() {
+        return context.authenticatedUser().isBypassUser();
     }
 
     private List<Long> getGlimChildLoanIds(Long loanIdFromRequest) {
@@ -205,25 +210,24 @@ public class LoanCOBApiFilter extends 
OncePerRequestFilter implements BatchFilte
         if (!isOnApiList("/" + batchRequest.getRelativeUrl(), 
batchRequest.getMethod())) {
             return chain.serviceCall(batchRequest, uriInfo);
         } else {
-            Either<Reject, Boolean> bypassUser = isBypassUser();
-            if (bypassUser.isRight() && Boolean.TRUE.equals(bypassUser.get())) 
{
-                return chain.serviceCall(batchRequest, uriInfo);
-            } else if (bypassUser.isLeft()) {
-                return bypassUser.getLeft().toBatchResponse(batchRequest);
-            } else {
-                Either<Reject, List<Long>> result = loanIdCalculation("/" + 
batchRequest.getRelativeUrl());
-                if (result.isLeft()) {
-                    return result.getLeft().toBatchResponse(batchRequest);
+            try {
+                boolean bypassUser = isBypassUser();
+                if (bypassUser) {
+                    return chain.serviceCall(batchRequest, uriInfo);
                 } else {
-                    if (!isLoanSoftLocked(result.get())) {
-                        executeInlineCob(result.get());
+                    try {
+                        List<Long> result = calculateRelevantLoanIds("/" + 
batchRequest.getRelativeUrl());
+                        if (!isLoanSoftLocked(result)) {
+                            executeInlineCob(result);
+                        }
+                        return chain.serviceCall(batchRequest, uriInfo);
+                    } catch (LoanIdsHardLockedException e) {
+                        return Reject.reject(e.getLoanIdFromRequest(), 
HttpStatus.SC_CONFLICT).toBatchResponse(batchRequest);
                     }
-                    return chain.serviceCall(batchRequest, uriInfo);
-
                 }
+            } catch (UnAuthenticatedUserException e) {
+                return Reject.reject(null, 
HttpStatus.SC_UNAUTHORIZED).toBatchResponse(batchRequest);
             }
         }
-
     }
-
 }
diff --git 
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest.java
 
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest.java
index 1d7b9895a..47fb2e845 100644
--- 
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest.java
+++ 
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest.java
@@ -32,7 +32,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.gson.JsonParser;
-import io.vavr.CheckedFunction1;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -135,7 +134,7 @@ public class 
ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest {
         return mapper.writeValueAsString(jsonResponse);
     }
 
-    public void mockOkHttpCall(CheckedFunction1<Request, Response> 
responseGenerator) throws IOException {
+    public void mockOkHttpCall(CheckedFunction<Request, Response> 
responseGenerator) throws IOException {
         ArgumentCaptor<Request> requestCaptor = 
ArgumentCaptor.forClass(Request.class);
         Call callMock = mock(Call.class);
         
when(okHttpClient.newCall(requestCaptor.capture())).thenReturn(callMock);
@@ -592,4 +591,8 @@ public class 
ThitsaWorksCreditBureauIntegrationWritePlatformServiceImplTest {
         assertNull(result.getClosedAccounts());
     }
 
+    private interface CheckedFunction<T, R> {
+
+        R apply(T t) throws Exception;
+    }
 }
diff --git 
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
 
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
index e9e8fcbe9..a4d70e36c 100644
--- 
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
+++ 
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
@@ -18,6 +18,8 @@
  */
 package 
org.apache.fineract.infrastructure.event.external.service.serialization.serializer.loan;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -60,7 +62,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanCharge;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -119,24 +120,21 @@ public class 
LoanAccountDelinquencyRangeEventSerializerTest {
         LoanAccountDelinquencyRangeDataV1 data = 
(LoanAccountDelinquencyRangeDataV1) serializer.toAvroDTO(event);
 
         // then
-        Assertions.assertEquals(1L, data.getLoanId());
-        Assertions.assertEquals("0001", data.getLoanAccountNo());
-        Assertions.assertEquals("externalId", data.getLoanExternalId());
-        Assertions.assertEquals(1L, data.getDelinquencyRange().getId());
-        Assertions.assertEquals("classification", 
data.getDelinquencyRange().getClassification());
-        Assertions.assertEquals(1, 
data.getDelinquencyRange().getMinimumAgeDays());
-        Assertions.assertEquals(10, 
data.getDelinquencyRange().getMaximumAgeDays());
-        Assertions.assertEquals(2, data.getCharges().size());
-        Assertions.assertTrue(io.vavr.collection.List.ofAll(data.getCharges())
-                .find(a -> a.getAmount().compareTo(new BigDecimal("100.5")) == 
0).isDefined());
-        Assertions.assertTrue(io.vavr.collection.List.ofAll(data.getCharges())
-                .find(a -> a.getAmount().compareTo(new BigDecimal("200.3")) == 
0).isDefined());
-
-        Assertions.assertEquals(0, 
data.getAmount().getTotalAmount().compareTo(new BigDecimal("185.0")));
-        Assertions.assertEquals(0, 
data.getAmount().getPrincipalAmount().compareTo(new BigDecimal("100.0")));
-        Assertions.assertEquals(0, 
data.getAmount().getInterestAmount().compareTo(new BigDecimal("30.0")));
-        Assertions.assertEquals(0, 
data.getAmount().getFeeAmount().compareTo(new BigDecimal("5.0")));
-        Assertions.assertEquals(0, 
data.getAmount().getPenaltyAmount().compareTo(new BigDecimal("50.0")));
+        assertEquals(1L, data.getLoanId());
+        assertEquals("0001", data.getLoanAccountNo());
+        assertEquals("externalId", data.getLoanExternalId());
+        assertEquals(1L, data.getDelinquencyRange().getId());
+        assertEquals("classification", 
data.getDelinquencyRange().getClassification());
+        assertEquals(1, data.getDelinquencyRange().getMinimumAgeDays());
+        assertEquals(10, data.getDelinquencyRange().getMaximumAgeDays());
+        assertEquals(2, data.getCharges().size());
+        assertTrue(data.getCharges().stream().anyMatch(a -> 
a.getAmount().compareTo(new BigDecimal("100.5")) == 0));
+        assertTrue(data.getCharges().stream().anyMatch(a -> 
a.getAmount().compareTo(new BigDecimal("200.3")) == 0));
+        assertEquals(0, data.getAmount().getTotalAmount().compareTo(new 
BigDecimal("185.0")));
+        assertEquals(0, data.getAmount().getPrincipalAmount().compareTo(new 
BigDecimal("100.0")));
+        assertEquals(0, data.getAmount().getInterestAmount().compareTo(new 
BigDecimal("30.0")));
+        assertEquals(0, data.getAmount().getFeeAmount().compareTo(new 
BigDecimal("5.0")));
+        assertEquals(0, data.getAmount().getPenaltyAmount().compareTo(new 
BigDecimal("50.0")));
 
         // assertEquals(data, expectedSerializedData);
         moneyHelper.close();
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
index 694de4e12..23b869667 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
@@ -220,8 +220,9 @@ public class BatchRequestsIntegrationTest {
 
         // Verify that each loan has been applied successfully
         for (BatchResponse res : response) {
-            
Assertions.assertFalse(io.vavr.collection.List.ofAll(res.getHeaders())
-                    .find(header -> 
header.getName().equals(AbstractIdempotentCommandException.IDEMPOTENT_CACHE_HEADER)).isDefined(),
+            Assertions.assertFalse(
+                    res.getHeaders().stream()
+                            .anyMatch(header -> 
header.getName().equals(AbstractIdempotentCommandException.IDEMPOTENT_CACHE_HEADER)),
                     "First can not be cached!");
             Assertions.assertEquals(200L, (long) res.getStatusCode(), "Verify 
Status Code 200");
         }
@@ -232,9 +233,9 @@ public class BatchRequestsIntegrationTest {
         // Verify that each loan has been applied successfully
         for (BatchResponse res : secondResponse) {
             Assertions.assertEquals("true",
-                    io.vavr.collection.List.ofAll(res.getHeaders())
-                            .find(header -> 
header.getName().equals(AbstractIdempotentCommandException.IDEMPOTENT_CACHE_HEADER))
-                            .map(Header::getValue).get(),
+                    res.getHeaders().stream()
+                            .filter(header -> 
header.getName().equals(AbstractIdempotentCommandException.IDEMPOTENT_CACHE_HEADER))
+                            .map(Header::getValue).findAny().get(),
                     "Not cached by idempotency key!");
             Assertions.assertEquals(200L, (long) res.getStatusCode(), "Verify 
Status Code 200");
         }
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/CreditBureauTest.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/CreditBureauTest.java
index 7d11d8c6c..49872176e 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/CreditBureauTest.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/CreditBureauTest.java
@@ -37,6 +37,7 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatterBuilder;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import 
org.apache.fineract.infrastructure.creditbureau.data.CreditBureauReportData;
 import 
org.apache.fineract.integrationtests.common.CreditBureauConfigurationHelper;
 import 
org.apache.fineract.integrationtests.common.CreditBureauIntegrationHelper;
@@ -80,9 +81,8 @@ public class CreditBureauTest {
         List<Map<String, Object>> configurations = 
CreditBureauConfigurationHelper.getCreditBureauConfiguration(requestSpec, 
responseSpec,
                 "1");
         Assertions.assertNotNull(configurations);
-        Map<String, Integer> currentConfiguration = 
io.vavr.collection.List.ofAll(configurations)
-                .toMap(k -> 
String.valueOf(k.get("configurationKey")).toUpperCase(), v -> (int) 
v.get("creditBureauConfigurationId"))
-                .toJavaMap();
+        Map<String, Integer> currentConfiguration = 
configurations.stream().collect(Collectors
+                .toMap(k -> 
String.valueOf(k.get("configurationKey")).toUpperCase(), v -> (int) 
v.get("creditBureauConfigurationId")));
         final Object usernameConfigurationId = 
CreditBureauConfigurationHelper.updateCreditBureauConfiguration(this.requestSpec,
                 this.responseSpec, 
currentConfiguration.get("USERNAME").intValue(), "USERNAME", "testUser");
         Assertions.assertNotNull(usernameConfigurationId);

Reply via email to