From a13f5643b9d4fe28de365a375ce6cacb380d87be Mon Sep 17 00:00:00 2001 From: Wasiullah Khan Jadoon Date: Tue, 10 Feb 2026 12:55:06 +0500 Subject: [PATCH] Updated PendingCRMApplicationsService from Rest Template to Web Client --- .../PendingCRMApplicationsService.java | 41 ++++++++----------- .../configuration/config/WebClientConfig.java | 31 ++++++++++++++ 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/PendingCRMApplicationsService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/PendingCRMApplicationsService.java index f8954ab..16b2555 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/service/PendingCRMApplicationsService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/PendingCRMApplicationsService.java @@ -1,10 +1,10 @@ package com.mfsys.aconnect.client.service; import com.mfsys.aconnect.client.dto.*; +import com.mfsys.aconnect.configuration.config.WebClientConfig; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; @@ -16,10 +16,9 @@ public class PendingCRMApplicationsService { @Value("${app.crm.uri}") private String crmURI; - private final RestTemplate restTemplate; - - public PendingCRMApplicationsService(RestTemplate restTemplate) { - this.restTemplate = restTemplate; + private final WebClientConfig webClientConfig; + public PendingCRMApplicationsService(WebClientConfig webClientConfig) { + this.webClientConfig = webClientConfig; } private Map param(String columnName, Object columnValue, String columnType, String conditionType) { @@ -193,13 +192,10 @@ public class PendingCRMApplicationsService { headers.set("SUS_USERCODE", susUserCode); headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity entity = new HttpEntity<>(payload, headers); - - return restTemplate.exchange( + return webClientConfig.postForString( url, - HttpMethod.POST, - entity, - String.class + payload, + headers ); } @@ -216,13 +212,10 @@ public class PendingCRMApplicationsService { headers.set("SUS_USERCODE", susUserCode); headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity entity = new HttpEntity<>(payload, headers); - - return restTemplate.exchange( + return webClientConfig.postForString( url, - HttpMethod.POST, - entity, - String.class + payload, + headers ); } @@ -256,11 +249,10 @@ public class PendingCRMApplicationsService { headers.set("SUS_USERCODE", susUserCode); headers.setContentType(MediaType.APPLICATION_JSON); - return restTemplate.exchange( + return webClientConfig.postForString( url, - HttpMethod.POST, - new HttpEntity<>(dto, headers), - String.class + dto, + headers ); } @@ -294,11 +286,10 @@ public class PendingCRMApplicationsService { headers.set("SUS_USERCODE", susUserCode); headers.setContentType(MediaType.APPLICATION_JSON); - return restTemplate.exchange( + return webClientConfig.postForString( url, - HttpMethod.POST, - new HttpEntity<>(dto, headers), - String.class + dto, + headers ); } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/WebClientConfig.java b/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/WebClientConfig.java index d7ea9bc..6399c42 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/WebClientConfig.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/WebClientConfig.java @@ -32,6 +32,23 @@ public class WebClientConfig { } } + public ResponseEntity postForString(String url, Object body, HttpHeaders headers) { + try { + return webClient + .post() + .uri(url) + .headers(h -> h.addAll(headers)) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .bodyValue(body) + .retrieve() + .toEntity(String.class) + .block(); + } catch (WebClientResponseException ex) { + return buildErrorResponseString(ex); + } + } + public ResponseEntity postMultipart(String url, MultiValueMap body, HttpHeaders headers, ParameterizedTypeReference responseType) { try { return webClient @@ -108,6 +125,20 @@ public class WebClientConfig { .body(errorBody); } + private ResponseEntity buildErrorResponseString(WebClientResponseException ex) { + String errorBody; + try { + errorBody = ex.getResponseBodyAsString(); + } catch (Exception e) { + errorBody = ex.getMessage(); + } + + return ResponseEntity + .status(ex.getStatusCode()) + .contentType(MediaType.APPLICATION_JSON) + .body(errorBody); + } + private ResponseEntity buildErrorResponseTyped(WebClientResponseException ex) { T errorBody; try {