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, Function> EXCEPTION_HANDLERS = new LinkedHashMap<>(); + private static final Map, Function> EXCEPTION_HANDLERS = Collections + .synchronizedMap(new LinkedHashMap<>()); private static final Map.Entry, Function> 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, Function> 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 exceptionClass, @@ -92,6 +96,8 @@ public final class ErrorHandler { LinkedHashMap, Function> 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 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 { @Query("SELECT mapping FROM ExternalAssetOwnerTransferJournalEntryMapping mapping WHERE mapping.ownerTransfer.id =:transferId") - Page findByTransferId(@Param("transferId") Long transferId, PageRequest pageable); + Page 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