You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ad...@apache.org on 2023/06/12 11:56:46 UTC

[fineract] branch develop updated: FINERACT-1926: External owner accounting - fix (error handling)

This is an automated email from the ASF dual-hosted git repository.

adamsaghy 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 db4a4b2b8 FINERACT-1926: External owner accounting - fix (error handling)
db4a4b2b8 is described below

commit db4a4b2b8302a3168284b04cb62703f8d628e44a
Author: Adam Saghy <ad...@gmail.com>
AuthorDate: Mon Jun 12 11:41:13 2023 +0200

    FINERACT-1926: External owner accounting - fix (error handling)
---
 .../java/org/apache/fineract/batch/exception/ErrorHandler.java    | 8 +++++++-
 .../domain/ExternalAssetOwnerJournalEntryMappingRepository.java   | 4 ++--
 .../ExternalAssetOwnerTransferJournalEntryMappingRepository.java  | 4 ++--
 .../infrastructure/core/exception/ErrorHandlerRegister.java       | 2 ++
 4 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/fineract-core/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java b/fineract-core/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java
index cc6adce36..f8efb0867 100644
--- a/fineract-core/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java
+++ b/fineract-core/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java
@@ -21,6 +21,7 @@ package org.apache.fineract.batch.exception;
 import com.google.gson.Gson;
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.ext.ExceptionMapper;
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.function.Function;
@@ -53,7 +54,8 @@ public final class ErrorHandler {
 
     private static final Gson JSON_HELPER = GoogleGsonSerializerHelper.createGsonBuilder(true).create();
 
-    private static final LinkedHashMap<Class<? extends Exception>, Function<RuntimeException, ErrorInfo>> EXCEPTION_HANDLERS = new LinkedHashMap<>();
+    private static final Map<Class<? extends Exception>, Function<RuntimeException, ErrorInfo>> EXCEPTION_HANDLERS = Collections
+            .synchronizedMap(new LinkedHashMap<>());
     private static final Map.Entry<Class<? extends Exception>, Function<RuntimeException, ErrorInfo>> DEFAULT_ERROR_HANDLER = Map.entry(
             RuntimeException.class,
             runtimeException -> new ErrorInfo(500, 9999, "{\"Exception\": %s}".formatted(runtimeException.getMessage())));
@@ -85,6 +87,8 @@ public final class ErrorHandler {
         LinkedHashMap<Class<? extends Exception>, Function<RuntimeException, ErrorInfo>> newHandlers = new LinkedHashMap<>();
         newHandlers.put(exceptionClass, runtimeException -> handleException(runtimeException, mapper, errorCode));
         EXCEPTION_HANDLERS.forEach(newHandlers::putIfAbsent);
+        EXCEPTION_HANDLERS.clear();
+        newHandlers.forEach(EXCEPTION_HANDLERS::putIfAbsent);
     }
 
     public static void registerNewErrorHandler(final Class<? extends RuntimeException> exceptionClass,
@@ -92,6 +96,8 @@ public final class ErrorHandler {
         LinkedHashMap<Class<? extends Exception>, Function<RuntimeException, ErrorInfo>> newHandlers = new LinkedHashMap<>();
         newHandlers.put(exceptionClass, function);
         EXCEPTION_HANDLERS.forEach(newHandlers::putIfAbsent);
+        EXCEPTION_HANDLERS.clear();
+        newHandlers.forEach(EXCEPTION_HANDLERS::putIfAbsent);
     }
 
     private static ErrorInfo handleException(final RuntimeException exception, final ExceptionMapper mapper, final int errorCode) {
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMappingRepository.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMappingRepository.java
index d4338cbc8..4a30aedf1 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMappingRepository.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMappingRepository.java
@@ -20,7 +20,7 @@ package org.apache.fineract.investor.domain;
 
 import org.apache.fineract.infrastructure.core.domain.ExternalId;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -31,5 +31,5 @@ public interface ExternalAssetOwnerJournalEntryMappingRepository extends JpaRepo
 
     @Query("SELECT mapping FROM ExternalAssetOwnerJournalEntryMapping mapping WHERE mapping.owner.externalId = :ownerExternalId")
     Page<ExternalAssetOwnerJournalEntryMapping> findByExternalOwnerId(@Param("ownerExternalId") ExternalId ownerExternalId,
-            PageRequest pageRequest);
+            Pageable pageRequest);
 }
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMappingRepository.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMappingRepository.java
index 9f72b37c7..ebff08ce7 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMappingRepository.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMappingRepository.java
@@ -19,7 +19,7 @@
 package org.apache.fineract.investor.domain;
 
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -30,5 +30,5 @@ public interface ExternalAssetOwnerTransferJournalEntryMappingRepository
         JpaSpecificationExecutor<ExternalAssetOwnerTransferJournalEntryMapping> {
 
     @Query("SELECT mapping FROM ExternalAssetOwnerTransferJournalEntryMapping mapping WHERE mapping.ownerTransfer.id =:transferId")
-    Page<ExternalAssetOwnerTransferJournalEntryMapping> findByTransferId(@Param("transferId") Long transferId, PageRequest pageable);
+    Page<ExternalAssetOwnerTransferJournalEntryMapping> findByTransferId(@Param("transferId") Long transferId, Pageable pageable);
 }
diff --git a/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandlerRegister.java b/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandlerRegister.java
index e0d91e64c..474da1994 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandlerRegister.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandlerRegister.java
@@ -27,7 +27,9 @@ import org.apache.fineract.infrastructure.jobs.exception.LoanIdsHardLockedExcept
 import org.apache.fineract.portfolio.loanaccount.exception.MultiDisbursementDataRequiredException;
 import org.apache.fineract.portfolio.loanproduct.exception.LinkedAccountRequiredException;
 import org.apache.http.HttpStatus;
+import org.springframework.stereotype.Component;
 
+@Component
 public class ErrorHandlerRegister {
 
     @PostConstruct