WebClient #14

Open
wasiullah.khan wants to merge 6 commits from WebClient into dev-pending-20-01-2026

@ -2,12 +2,10 @@ package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.DepositCancellationDTO; import com.mfsys.aconnect.client.dto.DepositCancellationDTO;
import com.mfsys.aconnect.client.dto.GLCancellationDTO; import com.mfsys.aconnect.client.dto.GLCancellationDTO;
import com.mfsys.aconnect.configuration.config.WebClientConfig;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT;
import static com.mfsys.common.configuration.constant.AconnectURI.GENERALLEDGER; import static com.mfsys.common.configuration.constant.AconnectURI.GENERALLEDGER;
@ -21,12 +19,12 @@ public class CancellationTransactionService {
@Value("${app.generalledger.uri}") @Value("${app.generalledger.uri}")
private String generalledgerURI; private String generalledgerURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public CancellationTransactionService(RestTemplate restTemplate) { public CancellationTransactionService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;
} }
public Object processDepositCancellationTransaction(DepositCancellationDTO depositCancellationDTO, String tokenHeader) { public ResponseEntity<Object> processDepositCancellationTransaction(DepositCancellationDTO depositCancellationDTO, String tokenHeader) {
String porOrgacode = depositCancellationDTO.getPorOrgacode(); String porOrgacode = depositCancellationDTO.getPorOrgacode();
String url = depositURI + "/deposit" + "/organizations/" + depositCancellationDTO.getPorOrgacode() + String url = depositURI + "/deposit" + "/organizations/" + depositCancellationDTO.getPorOrgacode() +
"/transactions" + ACONNECT + "/cancel/nodes/" + depositCancellationDTO.getNodeId() + "/transactions" + ACONNECT + "/cancel/nodes/" + depositCancellationDTO.getNodeId() +
@ -37,20 +35,16 @@ public class CancellationTransactionService {
headers.set("POR_ORGACODE", porOrgacode); headers.set("POR_ORGACODE", porOrgacode);
headers.set("SUS_USERCODE", depositCancellationDTO.getSusUsercode()); headers.set("SUS_USERCODE", depositCancellationDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<DepositCancellationDTO> entity = new HttpEntity<>(depositCancellationDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, depositCancellationDTO,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object processGLCancellationTransaction(GLCancellationDTO glCancellationDTO, String tokenHeader) { public ResponseEntity<Object> processGLCancellationTransaction(GLCancellationDTO glCancellationDTO, String tokenHeader) {
String porOrgacode = glCancellationDTO.getPorOrgacode(); String porOrgacode = glCancellationDTO.getPorOrgacode();
String url = generalledgerURI + GENERALLEDGER + "/organizations/" + glCancellationDTO.getPorOrgacode() + String url = generalledgerURI + GENERALLEDGER + "/organizations/" + glCancellationDTO.getPorOrgacode() +
"/transactions" + ACONNECT + "/cancel/nodes/" + glCancellationDTO.getNodeId() + "/transactions" + ACONNECT + "/cancel/nodes/" + glCancellationDTO.getNodeId() +
@ -61,16 +55,13 @@ public class CancellationTransactionService {
headers.set("POR_ORGACODE", porOrgacode); headers.set("POR_ORGACODE", porOrgacode);
headers.set("SUS_USERCODE", glCancellationDTO.getSusUsercode()); headers.set("SUS_USERCODE", glCancellationDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<GLCancellationDTO> entity = new HttpEntity<>(glCancellationDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, glCancellationDTO,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -4,9 +4,7 @@ import com.mfsys.aconnect.client.dto.DepositRejectDTO;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import com.mfsys.aconnect.configuration.config.WebClientConfig;
import java.util.Map;
import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT;
@ -19,12 +17,12 @@ public class RejectTransactionService {
@Value("${app.generalledger.uri}") @Value("${app.generalledger.uri}")
private String generalledgerURI; private String generalledgerURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public RejectTransactionService(RestTemplate restTemplate) { public RejectTransactionService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;
} }
public Object processDepositRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { public ResponseEntity<Object> processDepositRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) {
String porOrgacode = rejectRequest.getPorOrgacode(); String porOrgacode = rejectRequest.getPorOrgacode();
String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection";
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@ -33,19 +31,14 @@ public class RejectTransactionService {
headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); headers.set("SUS_USERCODE", rejectRequest.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<DepositRejectDTO> entity = new HttpEntity<>(rejectRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, rejectRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object processGLRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { public ResponseEntity<Object> processGLRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) {
String porOrgacode = rejectRequest.getPorOrgacode(); String porOrgacode = rejectRequest.getPorOrgacode();
String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection";
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@ -54,16 +47,11 @@ public class RejectTransactionService {
headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); headers.set("SUS_USERCODE", rejectRequest.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<DepositRejectDTO> entity = new HttpEntity<>(rejectRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, rejectRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -5,9 +5,7 @@ import com.mfsys.aconnect.client.dto.GLReversalDTO;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import com.mfsys.aconnect.configuration.config.WebClientConfig;
import java.util.Map;
import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT;
@ -20,15 +18,17 @@ public class ReversalTransactionService {
@Value("${app.generalledger.uri}") @Value("${app.generalledger.uri}")
private String generalledgerURI; private String generalledgerURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public ReversalTransactionService(RestTemplate restTemplate) { public ReversalTransactionService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;
} }
public Object processDepositReversalTransaction(DepositReversalDTO reversalRequest, String tokenHeader) { public ResponseEntity<Object> processDepositReversalTransaction(DepositReversalDTO reversalRequest, String tokenHeader) {
String porOrgacode = reversalRequest.getPorOrgacode(); String porOrgacode = reversalRequest.getPorOrgacode();
String nodeID = reversalRequest.getNodeId(); String nodeID = reversalRequest.getNodeId();
String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink();
String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink; String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink;
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", tokenHeader); headers.set("Authorization", tokenHeader);
@ -36,19 +36,15 @@ public class ReversalTransactionService {
headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); headers.set("SUS_USERCODE", reversalRequest.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<DepositReversalDTO> entity = new HttpEntity<>(reversalRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, reversalRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object processGLReversalTransaction(GLReversalDTO reversalRequest, String tokenHeader) { public ResponseEntity<Object> processGLReversalTransaction(GLReversalDTO reversalRequest, String tokenHeader) {
String porOrgacode = reversalRequest.getPorOrgacode(); String porOrgacode = reversalRequest.getPorOrgacode();
String nodeID = reversalRequest.getNodeId(); String nodeID = reversalRequest.getNodeId();
String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink();
@ -60,16 +56,11 @@ public class ReversalTransactionService {
headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); headers.set("SUS_USERCODE", reversalRequest.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<GLReversalDTO> entity = new HttpEntity<>(reversalRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, reversalRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -2,12 +2,10 @@ package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.DepositAuthorizationRequest; import com.mfsys.aconnect.client.dto.DepositAuthorizationRequest;
import com.mfsys.aconnect.client.dto.GLAuthorizationDTO; import com.mfsys.aconnect.client.dto.GLAuthorizationDTO;
import com.mfsys.aconnect.configuration.config.WebClientConfig;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT;
@ -20,12 +18,11 @@ public class TransactionAuthorizationService {
@Value("${app.generalledger.uri}") @Value("${app.generalledger.uri}")
private String generalledgerURI; private String generalledgerURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public TransactionAuthorizationService(RestTemplate restTemplate) { public TransactionAuthorizationService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;}
}
public Object processDepositAuthTransaction(DepositAuthorizationRequest authorizationRequest, String tokenHeader) { public ResponseEntity<Object> processDepositAuthTransaction(DepositAuthorizationRequest authorizationRequest, String tokenHeader) {
String porOrgacode = authorizationRequest.getPorOrgacode(); String porOrgacode = authorizationRequest.getPorOrgacode();
String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/authorizations"; String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/authorizations";
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@ -35,19 +32,14 @@ public class TransactionAuthorizationService {
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<DepositAuthorizationRequest> entity = new HttpEntity<>(authorizationRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, authorizationRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object processGLAuthTransaction(GLAuthorizationDTO authorizationRequest, String tokenHeader) { public ResponseEntity<Object> processGLAuthTransaction(GLAuthorizationDTO authorizationRequest, String tokenHeader) {
String porOrgacode = authorizationRequest.getPorOrgacode(); String porOrgacode = authorizationRequest.getPorOrgacode();
String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions/authorizations"; String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions/authorizations";
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@ -56,16 +48,11 @@ public class TransactionAuthorizationService {
headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode()); headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<GLAuthorizationDTO> entity = new HttpEntity<>(authorizationRequest, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, authorizationRequest,
entity, headers
Map.class
); );
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -46,14 +46,15 @@ public class TransactionLogService {
} }
@Transactional @Transactional
public void updateResponseFields(Long logId, Map<String, Object> response) { public void updateResponseFields(Long logId, Object responseObj) {
transactionLogRepository.findById(logId).ifPresent(log -> { if (!(responseObj instanceof Map<?, ?> response)) return;
if (response == null) return;
Object argsObj = response.get("arguments"); Object argsObj = response.get("arguments");
if (!(argsObj instanceof List<?> args) || args.isEmpty()) return; if (!(argsObj instanceof List<?> args) || args.isEmpty()) return;
String transactionId = args.get(0).toString(); String transactionId = args.get(0).toString();
transactionLogRepository.findById(logId).ifPresent(log -> {
log.setTransactionID(transactionId); log.setTransactionID(transactionId);
}); });
} }

@ -3,13 +3,11 @@ package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.*; import com.mfsys.aconnect.client.dto.*;
import com.mfsys.aconnect.client.exception.*; import com.mfsys.aconnect.client.exception.*;
import com.mfsys.aconnect.client.model.TransactionLog; import com.mfsys.aconnect.client.model.TransactionLog;
import com.mfsys.aconnect.configuration.config.WebClientConfig;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -29,10 +27,10 @@ public class TransactionService {
@Value("${app.generalledger.uri}") @Value("${app.generalledger.uri}")
private String generalledgerURI; private String generalledgerURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientService;
private final TransactionLogService transactionLogService; private final TransactionLogService transactionLogService;
public TransactionService(RestTemplate restTemplate, TransactionLogService transactionLogService) { public TransactionService(WebClientConfig webClientService, TransactionLogService transactionLogService) {
this.restTemplate = restTemplate; this.webClientService = webClientService;
this.transactionLogService = transactionLogService; this.transactionLogService = transactionLogService;
} }
@ -49,8 +47,7 @@ public class TransactionService {
headers.set("SUS_USERCODE", userCode); headers.set("SUS_USERCODE", userCode);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<Void> entity = new HttpEntity<>(headers); ResponseEntity<Object> response = webClientService.get(url, headers);
ResponseEntity<Map> response = restTemplate.exchange(url,HttpMethod.GET,entity,Map.class);
return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
@ -81,15 +78,12 @@ public class TransactionService {
headers.set("SUS_USERCODE", accountGLTransactionRequest.getSgtGntrcreateusr()); headers.set("SUS_USERCODE", accountGLTransactionRequest.getSgtGntrcreateusr());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<AccountGLTransactionRequest> entity = new HttpEntity<>(accountGLTransactionRequest, headers);
TransactionLog log = transactionLogService.createTransactionLog(accountGLTransactionRequest, url); TransactionLog log = transactionLogService.createTransactionLog(accountGLTransactionRequest, url);
RestTemplate restTemplate = new RestTemplate(); ResponseEntity<Object> response = webClientService.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, accountGLTransactionRequest,
entity, headers
Map.class
); );
if (response.getBody() != null) { if (response.getBody() != null) {
transactionLogService.updateResponseFields(log.getLogId(), response.getBody()); transactionLogService.updateResponseFields(log.getLogId(), response.getBody());
@ -136,15 +130,12 @@ public class TransactionService {
headers.set("SUS_USERCODE", gLtoGLRequest.getSgtGntrcreateusr()); headers.set("SUS_USERCODE", gLtoGLRequest.getSgtGntrcreateusr());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<GLtoGLRequest> entity = new HttpEntity<>(gLtoGLRequest, headers);
RestTemplate restTemplate = new RestTemplate();
TransactionLog log = transactionLogService.createGLtoGLTransactionLog(gLtoGLRequest, url); TransactionLog log = transactionLogService.createGLtoGLTransactionLog(gLtoGLRequest, url);
ResponseEntity<Map> response = restTemplate.exchange( ResponseEntity<Object> response = webClientService.post(
url, url,
HttpMethod.POST, gLtoGLRequest,
entity, headers
Map.class
); );
if (response.getBody() != null) { if (response.getBody() != null) {
transactionLogService.updateResponseFields(log.getLogId(), response.getBody()); transactionLogService.updateResponseFields(log.getLogId(), response.getBody());
@ -189,15 +180,12 @@ public class TransactionService {
headers.set("SUS_USERCODE", accountToAccountDTO.getSgtGntrcreateusr()); headers.set("SUS_USERCODE", accountToAccountDTO.getSgtGntrcreateusr());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<AccountToAccountDTO> entity = new HttpEntity<>(accountToAccountDTO, headers);
RestTemplate restTemplate = new RestTemplate();
TransactionLog log = transactionLogService.createAccToAccTransactionLog(accountToAccountDTO, url); TransactionLog log = transactionLogService.createAccToAccTransactionLog(accountToAccountDTO, url);
ResponseEntity<Map> response = restTemplate.exchange( ResponseEntity<Object> response = webClientService.post(
url, url,
HttpMethod.POST, accountToAccountDTO,
entity, headers
Map.class
); );
if (response.getBody() != null) { if (response.getBody() != null) {
transactionLogService.updateResponseFields(log.getLogId(), response.getBody()); transactionLogService.updateResponseFields(log.getLogId(), response.getBody());
@ -229,16 +217,13 @@ public class TransactionService {
headers.set("SUS_USERCODE", glToAccountDTO.getSgtGntrcreateusr()); headers.set("SUS_USERCODE", glToAccountDTO.getSgtGntrcreateusr());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON));
HttpEntity<GlToAccountDTO> entity = new HttpEntity<>(glToAccountDTO, headers);
RestTemplate restTemplate = new RestTemplate();
TransactionLog log = transactionLogService.createGLToAccTransactionLog(glToAccountDTO, url); TransactionLog log = transactionLogService.createGLToAccTransactionLog(glToAccountDTO, url);
ResponseEntity<Map> response = restTemplate.exchange( ResponseEntity<Object> response = webClientService.post(
url, url,
HttpMethod.POST, glToAccountDTO,
entity, headers
Map.class
); );
if (response.getBody() != null) { if (response.getBody() != null) {
transactionLogService.updateResponseFields(log.getLogId(), response.getBody()); transactionLogService.updateResponseFields(log.getLogId(), response.getBody());

@ -1,11 +1,11 @@
package com.mfsys.aconnect.client.service; package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.configuration.config.WebClientConfig;
import org.springframework.util.*; import org.springframework.util.*;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.*; import java.util.*;
@ -19,10 +19,9 @@ public class UploadDocumentService {
@Value("${app.crm.uri}") @Value("${app.crm.uri}")
private String crmURI; private String crmURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public UploadDocumentService(WebClientConfig webClientConfig){
public UploadDocumentService(RestTemplate restTemplate){ this.webClientConfig = webClientConfig;
this.restTemplate = restTemplate;
} }
public ResponseEntity<Map<String, String>> depositCacheFiles( public ResponseEntity<Map<String, String>> depositCacheFiles(
@ -44,12 +43,10 @@ public class UploadDocumentService {
body.add("file", file.getResource()); body.add("file", file.getResource());
} }
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers); return webClientConfig.postMultipart(
return restTemplate.exchange(
url, url,
HttpMethod.POST, body,
requestEntity, headers,
new ParameterizedTypeReference<Map<String, String>>() {} new ParameterizedTypeReference<Map<String, String>>() {}
); );
} }
@ -73,12 +70,10 @@ public class UploadDocumentService {
body.add("file", file.getResource()); body.add("file", file.getResource());
} }
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers); return webClientConfig.postMultipart(
return restTemplate.exchange(
url, url,
HttpMethod.POST, body,
requestEntity, headers,
new ParameterizedTypeReference<Map<String, String>>() {} new ParameterizedTypeReference<Map<String, String>>() {}
); );
} }

@ -1,23 +1,123 @@
package com.mfsys.aconnect.configuration.config; package com.mfsys.aconnect.configuration.config;
import org.springframework.context.annotation.Bean; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClientResponseException;
@Service
@Configuration
public class WebClientConfig { public class WebClientConfig {
private final String baseUrl = "http://localhost:8080/digitalkisaan"; private final WebClient webClient = WebClient.builder().build();
public ResponseEntity<Object> post(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(Object.class)
.block();
} catch (WebClientResponseException ex){
return buildErrorResponse(ex);
}
}
public <T> ResponseEntity<T> postMultipart(String url, MultiValueMap<String, Object> body, HttpHeaders headers, ParameterizedTypeReference<T> responseType) {
try {
return webClient
.post()
.uri(url)
.headers(h -> h.addAll(headers))
.contentType(MediaType.MULTIPART_FORM_DATA)
.body(BodyInserters.fromMultipartData(body))
.retrieve()
.toEntity(responseType)
.block();
} catch (WebClientResponseException ex) {
return buildErrorResponseTyped(ex);
}
}
public ResponseEntity<Object> get(String url, HttpHeaders headers) {
try {
return webClient
.get()
.uri(url)
.headers(h -> h.addAll(headers))
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(Object.class)
.block();
} catch (WebClientResponseException ex){
return buildErrorResponse(ex);
}
}
public ResponseEntity<Object> put(String url, Object body, HttpHeaders headers) {
try {
return webClient
.put()
.uri(url)
.headers(h -> h.addAll(headers))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.bodyValue(body)
.retrieve()
.toEntity(Object.class)
.block();
} catch (WebClientResponseException ex){
return buildErrorResponse(ex);
}
}
public ResponseEntity<Object> delete(String url, HttpHeaders headers) {
try {
return webClient
.delete()
.uri(url)
.headers(h -> h.addAll(headers))
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(Object.class)
.block();
} catch (WebClientResponseException ex) {
return buildErrorResponse(ex);
}
}
private ResponseEntity<Object> buildErrorResponse(WebClientResponseException ex){
Object errorBody;
try{
errorBody = ex.getResponseBodyAs(Object.class);
}catch (Exception e) {
errorBody = ex.getResponseBodyAsString();
}
return ResponseEntity
.status(ex.getStatusCode())
.contentType(MediaType.APPLICATION_JSON)
.body(errorBody);
}
@Bean private <T> ResponseEntity<T> buildErrorResponseTyped(WebClientResponseException ex) {
public WebClient webClient(WebClient.Builder builder) { T errorBody;
return builder try {
.baseUrl(baseUrl) // Set the base URL for all requests errorBody = (T) ex.getResponseBodyAs(Object.class);
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) // Set a default content type } catch (Exception e) {
.defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE) // Set a default accept header errorBody = (T) ex.getResponseBodyAsString();
.build(); }
return ResponseEntity
.status(ex.getStatusCode())
.contentType(MediaType.APPLICATION_JSON)
.body(errorBody);
} }
} }

Loading…
Cancel
Save