From df9734612419b77740fa37f5177a2d23ea658555 Mon Sep 17 00:00:00 2001 From: Omar Shahbaz Date: Tue, 24 Feb 2026 10:15:12 +0500 Subject: [PATCH] [UCOD][PRE-PROD][13]-Downstream call to crm/deposit failing while onboarding customer, not showing the root casuse of failure --- .../uco/service/WebClientCrmService.java | 22 ++++++++++++++----- .../uco/service/WebClientDepositService.java | 22 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mfsys/uco/service/WebClientCrmService.java b/src/main/java/com/mfsys/uco/service/WebClientCrmService.java index 6774f5b..a5e00b3 100644 --- a/src/main/java/com/mfsys/uco/service/WebClientCrmService.java +++ b/src/main/java/com/mfsys/uco/service/WebClientCrmService.java @@ -12,8 +12,6 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti import reactor.core.publisher.Mono; import java.io.IOException; -import java.util.Arrays; -import java.util.List; import java.util.Map; @Service @@ -52,17 +50,29 @@ public class WebClientCrmService { private ApplicationExceptionMapper.APIError parseErrorDetails(WebClientResponseException e) { String errorCode = null; - List arguments = null; + Object[] arguments = new Object[0]; if (e.getResponseBodyAsString() != null) { try { ObjectMapper objectMapper = new ObjectMapper(); JsonNode errorNode = objectMapper.readTree(e.getResponseBodyAsString()); - errorCode = errorNode.get("errorCode").asText(); - arguments = Arrays.asList(objectMapper.convertValue(errorNode.get("arguments"), String[].class)); + JsonNode errorCodeNode = errorNode.get("errorCode"); + if (errorCodeNode != null && !errorCodeNode.isNull()) { + errorCode = errorCodeNode.asText(); + } else { + JsonNode debugNode = errorNode.get("debugMessage"); + errorCode = (debugNode != null && !debugNode.isNull()) ? debugNode.asText() : "ERR_REMOTE_" + e.getStatusCode().value(); + } + JsonNode argsNode = errorNode.get("arguments"); + if (argsNode != null && !argsNode.isNull()) { + arguments = objectMapper.convertValue(argsNode, String[].class); + } } catch (IOException ex) { + errorCode = "ERR_REMOTE_" + e.getStatusCode().value(); } + } else { + errorCode = "ERR_REMOTE_" + e.getStatusCode().value(); } - return new ApplicationExceptionMapper.APIError(errorCode, arguments.toArray()); + return new ApplicationExceptionMapper.APIError(errorCode, arguments); } } diff --git a/src/main/java/com/mfsys/uco/service/WebClientDepositService.java b/src/main/java/com/mfsys/uco/service/WebClientDepositService.java index 79d384a..0cfadef 100644 --- a/src/main/java/com/mfsys/uco/service/WebClientDepositService.java +++ b/src/main/java/com/mfsys/uco/service/WebClientDepositService.java @@ -12,8 +12,6 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti import reactor.core.publisher.Mono; import java.io.IOException; -import java.util.Arrays; -import java.util.List; @Service public class WebClientDepositService { @@ -78,17 +76,29 @@ public class WebClientDepositService { private ApplicationExceptionMapper.APIError parseErrorDetails(WebClientResponseException e) { String errorCode = null; - List arguments = null; + Object[] arguments = new Object[0]; if (e.getResponseBodyAsString() != null) { try { ObjectMapper objectMapper = new ObjectMapper(); JsonNode errorNode = objectMapper.readTree(e.getResponseBodyAsString()); - errorCode = errorNode.get("errorCode").asText(); - arguments = Arrays.asList(objectMapper.convertValue(errorNode.get("arguments"), String[].class)); + JsonNode errorCodeNode = errorNode.get("errorCode"); + if (errorCodeNode != null && !errorCodeNode.isNull()) { + errorCode = errorCodeNode.asText(); + } else { + JsonNode debugNode = errorNode.get("debugMessage"); + errorCode = (debugNode != null && !debugNode.isNull()) ? debugNode.asText() : "ERR_REMOTE_" + e.getStatusCode().value(); + } + JsonNode argsNode = errorNode.get("arguments"); + if (argsNode != null && !argsNode.isNull()) { + arguments = objectMapper.convertValue(argsNode, String[].class); + } } catch (IOException ex) { + errorCode = "ERR_REMOTE_" + e.getStatusCode().value(); } + } else { + errorCode = "ERR_REMOTE_" + e.getStatusCode().value(); } - return new ApplicationExceptionMapper.APIError(errorCode, arguments.toArray()); + return new ApplicationExceptionMapper.APIError(errorCode, arguments); } }