WebClient #14

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

@ -1,16 +1,11 @@
package com.mfsys.aconnect.client.service; package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.ApproveCRMRequestDTO; import com.mfsys.aconnect.client.dto.ApproveCRMRequestDTO;
import com.mfsys.aconnect.client.dto.WorkflowApprovalDTO;
import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; import com.mfsys.aconnect.client.dto.WorkflowRequestDTO;
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.HashMap;
import java.util.Map;
@Service @Service
public class CRMService { public class CRMService {
@ -18,9 +13,9 @@ public class CRMService {
@Value("${app.crm.uri}") @Value("${app.crm.uri}")
private String crmURI; private String crmURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public CRMService(RestTemplate restTemplate) { public CRMService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;
} }
public Object createIndividualCRM(WorkflowRequestDTO workflowRequestDTO, String token) { public Object createIndividualCRM(WorkflowRequestDTO workflowRequestDTO, String token) {
@ -32,16 +27,12 @@ public class CRMService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object createBusinessCRM(WorkflowRequestDTO workflowRequestDTO, String token) { public Object createBusinessCRM(WorkflowRequestDTO workflowRequestDTO, String token) {
@ -53,16 +44,12 @@ public class CRMService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object approveIndividualCRM(ApproveCRMRequestDTO approveCRMRequestDTO, String token) { public Object approveIndividualCRM(ApproveCRMRequestDTO approveCRMRequestDTO, String token) {
@ -74,16 +61,12 @@ public class CRMService {
headers.set("SUS_USERCODE", approveCRMRequestDTO.getSusUserCode()); headers.set("SUS_USERCODE", approveCRMRequestDTO.getSusUserCode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<ApproveCRMRequestDTO> entity = new HttpEntity<>(approveCRMRequestDTO, headers); return webClientConfig.patch(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.PATCH, approveCRMRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object approveBusinessCRM(ApproveCRMRequestDTO approveCRMRequestDTO, String token) { public Object approveBusinessCRM(ApproveCRMRequestDTO approveCRMRequestDTO, String token) {
@ -95,16 +78,12 @@ public class CRMService {
headers.set("SUS_USERCODE", approveCRMRequestDTO.getSusUserCode()); headers.set("SUS_USERCODE", approveCRMRequestDTO.getSusUserCode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<ApproveCRMRequestDTO> entity = new HttpEntity<>(approveCRMRequestDTO, headers); return webClientConfig.patch(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.PATCH, approveCRMRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -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());
} }
} }

@ -2,13 +2,10 @@ package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.WorkflowApprovalDTO; import com.mfsys.aconnect.client.dto.WorkflowApprovalDTO;
import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; import com.mfsys.aconnect.client.dto.WorkflowRequestDTO;
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.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@Service @Service
public class DepositAccountService { public class DepositAccountService {
@ -16,10 +13,9 @@ public class DepositAccountService {
@Value("${app.deposit.uri}") @Value("${app.deposit.uri}")
private String depositURI; private String depositURI;
private final WebClientConfig webClientConfig;
private final RestTemplate restTemplate; public DepositAccountService(WebClientConfig webClientConfig) {
public DepositAccountService(RestTemplate restTemplate) { this.webClientConfig = webClientConfig;
this.restTemplate = restTemplate;
} }
public Object createIndividualDeposit(WorkflowRequestDTO workflowRequestDTO, String token) { public Object createIndividualDeposit(WorkflowRequestDTO workflowRequestDTO, String token) {
@ -31,16 +27,12 @@ public class DepositAccountService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
@ -53,17 +45,12 @@ public class DepositAccountService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUserCode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUserCode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowApprovalDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.patch(
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.PATCH, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object createBusinessDeposit(WorkflowRequestDTO workflowRequestDTO, String token) { public Object createBusinessDeposit(WorkflowRequestDTO workflowRequestDTO, String token) {
@ -75,15 +62,11 @@ public class DepositAccountService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -2,12 +2,10 @@ package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.WorkflowApprovalDTO; import com.mfsys.aconnect.client.dto.WorkflowApprovalDTO;
import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; import com.mfsys.aconnect.client.dto.WorkflowRequestDTO;
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;
@Service @Service
public class LoanAccountService { public class LoanAccountService {
@ -15,9 +13,9 @@ public class LoanAccountService {
@Value("${app.loan.uri}") @Value("${app.loan.uri}")
private String loanURI; private String loanURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public LoanAccountService(RestTemplate restTemplate) { public LoanAccountService(WebClientConfig webClientConfig) {
this.restTemplate = restTemplate; this.webClientConfig = webClientConfig;
} }
public Object createIndividualLoan(WorkflowRequestDTO workflowRequestDTO, String token) { public Object createIndividualLoan(WorkflowRequestDTO workflowRequestDTO, String token) {
@ -29,16 +27,12 @@ public class LoanAccountService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.post(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.POST, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
public Object approvalIndividualLoan(WorkflowApprovalDTO workflowRequestDTO, String token) { public Object approvalIndividualLoan(WorkflowApprovalDTO workflowRequestDTO, String token) {
@ -50,16 +44,12 @@ public class LoanAccountService {
headers.set("SUS_USERCODE", workflowRequestDTO.getSusUserCode()); headers.set("SUS_USERCODE", workflowRequestDTO.getSusUserCode());
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<WorkflowApprovalDTO> entity = new HttpEntity<>(workflowRequestDTO, headers); return webClientConfig.patch(
ResponseEntity<Map> response = restTemplate.exchange(
url, url,
HttpMethod.PATCH, workflowRequestDTO,
entity, headers
Map.class )
); .getBody();
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
} }
} }

@ -1,10 +1,10 @@
package com.mfsys.aconnect.client.service; package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.*; import com.mfsys.aconnect.client.dto.*;
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.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -16,10 +16,9 @@ public class PendingCRMApplicationsService {
@Value("${app.crm.uri}") @Value("${app.crm.uri}")
private String crmURI; private String crmURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public PendingCRMApplicationsService(WebClientConfig webClientConfig) {
public PendingCRMApplicationsService(RestTemplate restTemplate) { this.webClientConfig = webClientConfig;
this.restTemplate = restTemplate;
} }
private Map<String, Object> param(String columnName, Object columnValue, String columnType, String conditionType) { private Map<String, Object> param(String columnName, Object columnValue, String columnType, String conditionType) {
@ -193,13 +192,10 @@ public class PendingCRMApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<LazyListRequestDTO> entity = new HttpEntity<>(payload, headers); return webClientConfig.postForString(
return restTemplate.exchange(
url, url,
HttpMethod.POST, payload,
entity, headers
String.class
); );
} }
@ -216,13 +212,10 @@ public class PendingCRMApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<LazyListRequestDTO> entity = new HttpEntity<>(payload, headers); return webClientConfig.postForString(
return restTemplate.exchange(
url, url,
HttpMethod.POST, payload,
entity, headers
String.class
); );
} }
@ -256,11 +249,10 @@ public class PendingCRMApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
return restTemplate.exchange( return webClientConfig.postForString(
url, url,
HttpMethod.POST, dto,
new HttpEntity<>(dto, headers), headers
String.class
); );
} }
@ -294,11 +286,10 @@ public class PendingCRMApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
return restTemplate.exchange( return webClientConfig.postForString(
url, url,
HttpMethod.POST, dto,
new HttpEntity<>(dto, headers), headers
String.class
); );
} }

@ -1,10 +1,10 @@
package com.mfsys.aconnect.client.service; package com.mfsys.aconnect.client.service;
import com.mfsys.aconnect.client.dto.*; import com.mfsys.aconnect.client.dto.*;
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.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -16,9 +16,10 @@ public class PendingDepositApplicationsService {
@Value("${app.deposit.uri}") @Value("${app.deposit.uri}")
private String depositURI; private String depositURI;
private final RestTemplate restTemplate; private final WebClientConfig webClientConfig;
public PendingDepositApplicationsService(WebClientConfig webClientConfig) {
public PendingDepositApplicationsService(RestTemplate restTemplate) {this.restTemplate = restTemplate;} this.webClientConfig = webClientConfig;
}
private Map<String, Object> param(String columnName, Object columnValue, String columnType, String conditionType) { private Map<String, Object> param(String columnName, Object columnValue, String columnType, String conditionType) {
return Map.of("columnName", columnName, "columnValue", columnValue, return Map.of("columnName", columnName, "columnValue", columnValue,
@ -196,13 +197,10 @@ public class PendingDepositApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<LazyListRequestDTO> entity = new HttpEntity<>(payload, headers); return webClientConfig.postForString(
return restTemplate.exchange(
url, url,
HttpMethod.POST, payload,
entity, headers
String.class
); );
} }
@ -219,13 +217,10 @@ public class PendingDepositApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<LazyListRequestDTO> entity = new HttpEntity<>(payload, headers); return webClientConfig.postForString(
return restTemplate.exchange(
url, url,
HttpMethod.POST, payload,
entity, headers
String.class
); );
} }
@ -259,11 +254,10 @@ public class PendingDepositApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
return restTemplate.exchange( return webClientConfig.postForString(
url, url,
HttpMethod.POST, dto,
new HttpEntity<>(dto, headers), headers
String.class
); );
} }
@ -296,11 +290,10 @@ public class PendingDepositApplicationsService {
headers.set("SUS_USERCODE", susUserCode); headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
return restTemplate.exchange( return webClientConfig.postForString(
url, url,
HttpMethod.POST, dto,
new HttpEntity<>(dto, headers), headers
String.class
); );
} }

@ -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,154 @@
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 ResponseEntity<String> 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 <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);
}
}
@Bean public ResponseEntity<Object> get(String url, HttpHeaders headers) {
public WebClient webClient(WebClient.Builder builder) { try {
return builder return webClient
.baseUrl(baseUrl) // Set the base URL for all requests .get()
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) // Set a default content type .uri(url)
.defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE) // Set a default accept header .headers(h -> h.addAll(headers))
.build(); .accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(Object.class)
.block();
} catch (WebClientResponseException ex){
return buildErrorResponse(ex);
}
}
public ResponseEntity<Object> patch(String url, Object body, HttpHeaders headers) {
try {
return webClient
.method(org.springframework.http.HttpMethod.PATCH)
.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);
}
private ResponseEntity<String> 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 <T> ResponseEntity<T> buildErrorResponseTyped(WebClientResponseException ex) {
T errorBody;
try {
errorBody = (T) ex.getResponseBodyAs(Object.class);
} catch (Exception e) {
errorBody = (T) ex.getResponseBodyAsString();
}
return ResponseEntity
.status(ex.getStatusCode())
.contentType(MediaType.APPLICATION_JSON)
.body(errorBody);
} }
} }

Loading…
Cancel
Save