update exceptions
This commit is contained in:
parent
1179fd2877
commit
623eb23701
Binary file not shown.
@ -21,7 +21,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
@Slf4j
|
||||
@ApplicationScoped
|
||||
@RegisterForReflection
|
||||
public class MessageResponseHelper {
|
||||
public class MessageHelper {
|
||||
|
||||
private final MessagesConfig messagesConfig;
|
||||
private final Map<String, ErrorMapping> errorMappings;
|
||||
@ -31,7 +31,7 @@ public class MessageResponseHelper {
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
@Inject
|
||||
public MessageResponseHelper(
|
||||
public MessageHelper(
|
||||
ObjectMapper objectMapper,
|
||||
MessagesConfig messagesConfig
|
||||
) {
|
||||
@ -85,18 +85,18 @@ public class MessageResponseHelper {
|
||||
|
||||
private ErrorMapping getError(String errorCode) {
|
||||
return errorMappings.getOrDefault(
|
||||
errorCode, errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping())
|
||||
errorCode, errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping())
|
||||
);
|
||||
}
|
||||
|
||||
private Response buildErrorResponse(HttpStatusCodeException exception) {
|
||||
ErrorMapping mapping = errorMappings.getOrDefault(
|
||||
exception.getErrorCode(),
|
||||
errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping())
|
||||
);
|
||||
StatusResponse status = createError(
|
||||
mapping, exception.getFieldPath()
|
||||
exception.getErrorCode(), errorMappings.getOrDefault(
|
||||
String.valueOf(exception.getStatusCode()),
|
||||
createDefaultMapping()
|
||||
)
|
||||
);
|
||||
StatusResponse status = createError(mapping, exception.getFieldPath());
|
||||
|
||||
log.error(
|
||||
"[{}] Message {} -> {}",
|
||||
@ -151,7 +151,7 @@ public class MessageResponseHelper {
|
||||
}
|
||||
|
||||
private String loadFromJsonFile() {
|
||||
try (InputStream is = MessageResponseHelper.class.getClassLoader().getResourceAsStream(ERROR_FILE_PATH)) {
|
||||
try (InputStream is = MessageHelper.class.getClassLoader().getResourceAsStream(ERROR_FILE_PATH)) {
|
||||
if (is == null) {
|
||||
log.warn("No se encontró el archivo de errores: {}", ERROR_FILE_PATH);
|
||||
return "";
|
||||
@ -173,9 +173,9 @@ public class MessageResponseHelper {
|
||||
private ErrorMapping createDefaultMapping() {
|
||||
ErrorMapping mapping = new ErrorMapping();
|
||||
mapping.setBackendCode(ERROR_DEFAULT);
|
||||
mapping.setHttpCode(500);
|
||||
mapping.setStatusCode("500");
|
||||
mapping.setDescription("Error interno del servidor");
|
||||
mapping.setHttpCode(409);
|
||||
mapping.setStatusCode("409");
|
||||
mapping.setDescription("Conflicto");
|
||||
return mapping;
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@ public class MessageResponseHelper {
|
||||
ErrorMapping mapping = new ErrorMapping();
|
||||
mapping.setBackendCode(SUCCESS_DEFAULT);
|
||||
mapping.setHttpCode(200);
|
||||
mapping.setStatusCode("000");
|
||||
mapping.setStatusCode("200");
|
||||
mapping.setDescription("Operación exitosa");
|
||||
return mapping;
|
||||
}
|
||||
@ -31,17 +31,7 @@ public class HttpClientService implements HttpClientUseCase {
|
||||
|
||||
@Override
|
||||
public <T> T execute(HttpRequest request) {
|
||||
String finalUrl = request.getUrl();
|
||||
|
||||
if (request.getPathParams() != null && !request.getPathParams().isEmpty()) {
|
||||
log.debug("PathParams antes de reemplazar: {}", request.getPathParams());
|
||||
log.debug("URL original: {}", finalUrl);
|
||||
|
||||
for (Map.Entry<String, String> entry : request.getPathParams().entrySet()) {
|
||||
String placeholder = "{" + entry.getKey() + "}";
|
||||
finalUrl = finalUrl.replace(placeholder, entry.getValue());
|
||||
}
|
||||
}
|
||||
String finalUrl = buildFinalUrl(request);
|
||||
|
||||
log.info("URL final: {}", finalUrl);
|
||||
|
||||
@ -60,14 +50,12 @@ public class HttpClientService implements HttpClientUseCase {
|
||||
try (Client client = createClient(request.getConnectTimeout(), request.getReadTimeout())) {
|
||||
WebTarget target = client.target(finalUrl);
|
||||
|
||||
if (request.getQueryParams() != null && !request.getQueryParams().isEmpty()) {
|
||||
request.getQueryParams().forEach(target::queryParam);
|
||||
}
|
||||
|
||||
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
|
||||
|
||||
if (request.getHeaders() != null && !request.getHeaders().isEmpty()) {
|
||||
request.getHeaders().forEach(builder::header);
|
||||
for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) {
|
||||
builder.header(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
Response response = buildRequest(builder, request);
|
||||
@ -78,12 +66,55 @@ public class HttpClientService implements HttpClientUseCase {
|
||||
} catch (Exception e) {
|
||||
log.error("Error de conexión {}: {}", request.getMethod(), e.getMessage());
|
||||
throw HttpStatusCodeException.serviceUnavailable(
|
||||
"503",
|
||||
"Error de conexión con el servicio externo: " + e.getMessage()
|
||||
"503",
|
||||
"Error de conexión con el servicio externo: " + e.getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private String buildFinalUrl(HttpRequest request) {
|
||||
String finalUrl = request.getUrl();
|
||||
|
||||
if (request.getPathParams() != null && !request.getPathParams().isEmpty()) {
|
||||
log.debug("PathParams antes de reemplazar: {}", request.getPathParams());
|
||||
log.debug("URL original: {}", finalUrl);
|
||||
|
||||
for (Map.Entry<String, String> entry : request.getPathParams().entrySet()) {
|
||||
String placeholder = "{" + entry.getKey() + "}";
|
||||
finalUrl = finalUrl.replace(placeholder, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
finalUrl = appendQueryParams(finalUrl, request.getQueryParams());
|
||||
|
||||
return finalUrl;
|
||||
}
|
||||
|
||||
private String appendQueryParams(String url, Map<String, String> queryParams) {
|
||||
if (queryParams == null || queryParams.isEmpty()) {
|
||||
return url;
|
||||
}
|
||||
|
||||
StringBuilder urlBuilder = new StringBuilder(url);
|
||||
|
||||
boolean firstParam = !url.contains("?");
|
||||
|
||||
for (Map.Entry<String, String> entry : queryParams.entrySet()) {
|
||||
if (firstParam) {
|
||||
urlBuilder.append("?");
|
||||
firstParam = false;
|
||||
} else {
|
||||
urlBuilder.append("&");
|
||||
}
|
||||
|
||||
urlBuilder.append(entry.getKey())
|
||||
.append("=")
|
||||
.append(entry.getValue() != null ? entry.getValue() : "");
|
||||
}
|
||||
|
||||
return urlBuilder.toString();
|
||||
}
|
||||
|
||||
private Response buildRequest(
|
||||
Invocation.Builder builder,
|
||||
HttpRequest request
|
||||
@ -178,8 +209,8 @@ public class HttpClientService implements HttpClientUseCase {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> T deserializeApiResponse(
|
||||
String responseBody,
|
||||
HttpRequest request
|
||||
String responseBody,
|
||||
HttpRequest request
|
||||
) {
|
||||
try {
|
||||
if (request.getGenericType() != null) {
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
package com.banesco.common.domain.model;
|
||||
|
||||
import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest;
|
||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@RegisterForReflection
|
||||
public class AppIdConfig {
|
||||
private String appId;
|
||||
private LegalCustomerProductDirectoryRequest request;
|
||||
}
|
||||
@ -7,7 +7,7 @@ import lombok.ToString;
|
||||
@Getter
|
||||
@ToString
|
||||
@RegisterForReflection
|
||||
public class DominionConfig {
|
||||
public class DomainConfig {
|
||||
private String url;
|
||||
private TimeoutConfig timeout;
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.banesco.common.infrastructure.config;
|
||||
|
||||
import com.banesco.common.domain.model.AppIdConfig;
|
||||
import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.microprofile.config.Config;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@ApplicationScoped
|
||||
@RegisterForReflection
|
||||
public class ApiAllowedConfig {
|
||||
|
||||
private final Config config;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
private static final String API_ALLOWED_BASE = "api.allowed.";
|
||||
private static final String API_ALLOWED_APP_ID_NAME = "app-id";
|
||||
|
||||
@Inject
|
||||
public ApiAllowedConfig(
|
||||
Config config,
|
||||
ObjectMapper objectMapper
|
||||
) {
|
||||
this.config = config;
|
||||
this.objectMapper = objectMapper;
|
||||
}
|
||||
|
||||
public List<AppIdConfig> getAppIdAllowed() {
|
||||
try {
|
||||
String fullConfigName = API_ALLOWED_BASE + API_ALLOWED_APP_ID_NAME;
|
||||
String json = config.getValue(fullConfigName, String.class);
|
||||
log.info("Configurando {}: {}", fullConfigName, json);
|
||||
|
||||
if (json == null || json.trim().isEmpty()) {
|
||||
throw new IllegalStateException("Configuración no encontrada para: " + fullConfigName);
|
||||
}
|
||||
|
||||
List<Map<String, Object>> configList = objectMapper.readValue(json, new TypeReference<>() {});
|
||||
|
||||
return configList.stream()
|
||||
.map(this::mapToAppIdConfig)
|
||||
.toList();
|
||||
} catch (Exception e) {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
|
||||
private AppIdConfig mapToAppIdConfig(Map<String, Object> configMap) {
|
||||
AppIdConfig appIdConfig = new AppIdConfig();
|
||||
String appId = (String) configMap.get("appId");
|
||||
|
||||
appIdConfig.setAppId(appId);
|
||||
|
||||
if (configMap.containsKey("request")) {
|
||||
Object requestObj = configMap.get("request");
|
||||
LegalCustomerProductDirectoryRequest request = objectMapper.convertValue(
|
||||
requestObj, LegalCustomerProductDirectoryRequest.class
|
||||
);
|
||||
|
||||
appIdConfig.setRequest(request);
|
||||
}
|
||||
|
||||
return appIdConfig;
|
||||
}
|
||||
}
|
||||
@ -13,7 +13,7 @@ public class MessagesConfig {
|
||||
private final String errorMessagesJson;
|
||||
private final String messagesKey;
|
||||
|
||||
private static final String KEY = "busLogalCustomerProductDirectory";
|
||||
private static final String KEY = "bus-legal-customer-product-directory";
|
||||
|
||||
@Inject
|
||||
public MessagesConfig(Config config) {
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
package com.banesco.common.infrastructure.config;
|
||||
|
||||
import io.smallrye.config.ConfigMapping;
|
||||
|
||||
@ConfigMapping(prefix = "api.allowed.request-validation")
|
||||
public interface RequestValidationConfig {
|
||||
String customerIbsNumber();
|
||||
String accountStatus();
|
||||
String productCvCode();
|
||||
String limitType();
|
||||
String cacheaIndicator();
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package com.banesco.common.infrastructure.config;
|
||||
|
||||
import com.banesco.common.domain.model.DominionConfig;
|
||||
import com.banesco.common.domain.model.DomainConfig;
|
||||
import com.banesco.module.security_trace.domain.model.SecurityTraceConfig;
|
||||
import com.banesco.module.service_status.domain.model.ServiceStatusConfig;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
@ -36,8 +36,8 @@ public class RestClientConfig {
|
||||
this.objectMapper = objectMapper;
|
||||
}
|
||||
|
||||
public DominionConfig getDomLegalCustomerConfig() {
|
||||
return getConfig(API_DOMAIN_NAME, DominionConfig.class);
|
||||
public DomainConfig getDomLegalCustomerConfig() {
|
||||
return getConfig(API_DOMAIN_NAME, DomainConfig.class);
|
||||
}
|
||||
|
||||
public SecurityTraceConfig getSecurityTraceConfig() {
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package com.banesco.module.legal_customer_product_directory.application.service;
|
||||
|
||||
import com.banesco.common.application.helper.MessageResponseHelper;
|
||||
import com.banesco.common.application.helper.MessageHelper;
|
||||
import com.banesco.common.domain.exception.HttpStatusCodeException;
|
||||
import com.banesco.common.domain.model.ApiResponse;
|
||||
import com.banesco.common.domain.model.AppIdConfig;
|
||||
import com.banesco.common.infrastructure.config.ApiAllowedConfig;
|
||||
import com.banesco.common.infrastructure.context.RequestContext;
|
||||
import com.banesco.module.legal_customer_product_directory.application.usecase.DomainUseCase;
|
||||
import com.banesco.module.legal_customer_product_directory.application.usecase.LegalCustomerProductDirectoryUseCase;
|
||||
@ -17,28 +19,34 @@ import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
@Slf4j
|
||||
@ApplicationScoped
|
||||
public class LegalCustomerProductDirectoryService implements LegalCustomerProductDirectoryUseCase {
|
||||
|
||||
private final MessageResponseHelper messageResponseHelper;
|
||||
private final MessageHelper messageHelper;
|
||||
private final ServiceStatusUseCase serviceStatusUseCase;
|
||||
private final SecurityTraceUseCase securityTraceUseCase;
|
||||
private final DomainUseCase domainUseCase;
|
||||
|
||||
private final List<AppIdConfig> appIdsAllowed;
|
||||
|
||||
@Inject
|
||||
public LegalCustomerProductDirectoryService(
|
||||
MessageResponseHelper messageResponseHelper,
|
||||
ApiAllowedConfig apiAllowedConfig,
|
||||
MessageHelper messageHelper,
|
||||
ServiceStatusUseCase serviceStatusUseCase,
|
||||
SecurityTraceUseCase securityTraceUseCase,
|
||||
DomainUseCase domainUseCase
|
||||
) {
|
||||
this.messageResponseHelper = messageResponseHelper;
|
||||
this.messageHelper = messageHelper;
|
||||
this.serviceStatusUseCase = serviceStatusUseCase;
|
||||
this.securityTraceUseCase = securityTraceUseCase;
|
||||
this.domainUseCase = domainUseCase;
|
||||
this.appIdsAllowed = apiAllowedConfig.getAppIdAllowed();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -47,19 +55,21 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
|
||||
) {
|
||||
log.info("Iniciando ejecución para el cliente: {}", request.getCustomerIbsNumber());
|
||||
|
||||
if(!serviceStatus(request)) {
|
||||
log.info("Estatus del servicio no disponible: {}", request.getCustomerIbsNumber());
|
||||
LegalCustomerProductDirectoryRequest requestFromAppId = getRequestFromAppId(request);
|
||||
|
||||
if(!isServiceStatusActive(requestFromAppId)) {
|
||||
log.info("Estatus del servicio no disponible: {}", requestFromAppId.getCustomerIbsNumber());
|
||||
throw HttpStatusCodeException.serviceUnavailable("VRN04");
|
||||
}
|
||||
|
||||
try {
|
||||
ApiResponse<LegalCustomerProductDirectoryResponse> response = domain(request);
|
||||
ApiResponse<LegalCustomerProductDirectoryResponse> response = domain(requestFromAppId);
|
||||
|
||||
if (
|
||||
!Objects.isNull(response.getData()) &&
|
||||
messageResponseHelper.isSuccessStatusCode(response.getStatusResponse())
|
||||
messageHelper.isSuccessStatusCode(response.getStatusResponse())
|
||||
) {
|
||||
return new ApiResponse<>(response.getData(), messageResponseHelper.createStatusResponse(
|
||||
return new ApiResponse<>(response.getData(), messageHelper.createStatusResponse(
|
||||
response.getStatusResponse().getStatusCode()
|
||||
));
|
||||
}
|
||||
@ -76,6 +86,37 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
|
||||
}
|
||||
}
|
||||
|
||||
private LegalCustomerProductDirectoryRequest getRequestFromAppId(
|
||||
LegalCustomerProductDirectoryRequest request
|
||||
) {
|
||||
if(appIdsAllowed.isEmpty()) {
|
||||
log.info(
|
||||
"Configuración de la Lista App ID no disponible: {} -> {}",
|
||||
request.getCustomerIbsNumber(),
|
||||
request.getAppId()
|
||||
);
|
||||
throw HttpStatusCodeException.unauthorized("401");
|
||||
}
|
||||
|
||||
Optional<AppIdConfig> appIdAllowed = appIdsAllowed.stream()
|
||||
.filter(config -> config.getAppId().equals(request.getAppId()))
|
||||
.findFirst();
|
||||
|
||||
if(appIdAllowed.isEmpty()) {
|
||||
log.info("App ID no habilitado: {} -> {}", request.getCustomerIbsNumber(), request.getAppId());
|
||||
throw HttpStatusCodeException.unauthorized("401");
|
||||
}
|
||||
|
||||
AppIdConfig appIdConfig = appIdAllowed.get();
|
||||
|
||||
if(!request.hasValidRequestParameters(appIdConfig)) {
|
||||
log.info("App ID sin configuración: {} -> {}", request.getCustomerIbsNumber(), request.getAppId());
|
||||
throw HttpStatusCodeException.unauthorized("401");
|
||||
}
|
||||
|
||||
return request.fromAppIdConfig(appIdConfig);
|
||||
}
|
||||
|
||||
private ApiResponse<LegalCustomerProductDirectoryResponse> domain(
|
||||
LegalCustomerProductDirectoryRequest request
|
||||
) {
|
||||
@ -83,7 +124,7 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
|
||||
return domainUseCase.execute(request, LegalCustomerProductDirectoryResponse.class);
|
||||
}
|
||||
|
||||
private boolean serviceStatus(
|
||||
private boolean isServiceStatusActive(
|
||||
LegalCustomerProductDirectoryRequest request
|
||||
) {
|
||||
log.info("Ejecutando llamada al api de la consulta del estatus del servicio");
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package com.banesco.module.legal_customer_product_directory.domain.dto.request;
|
||||
|
||||
import com.banesco.common.domain.model.AppIdConfig;
|
||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static java.util.Map.entry;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@ -34,9 +34,74 @@ public class LegalCustomerProductDirectoryRequest {
|
||||
private String casheaIndicator; // VCASHEA - SI/NO (filtro)
|
||||
|
||||
public Map<String, String> toQueryString() {
|
||||
return Map.ofEntries(
|
||||
entry("appId", Objects.toString(getAppId(), "")),
|
||||
entry("customerReferenceFintechId", Objects.toString(getCustomerReferenceFintechId(), ""))
|
||||
);
|
||||
Map<String, String> queryParams = new LinkedHashMap<>();
|
||||
|
||||
addIfNotEmpty(queryParams, "appId", getAppId());
|
||||
addIfNotEmpty(queryParams, "customerReferenceFintechId", getCustomerReferenceFintechId());
|
||||
addIfNotEmpty(queryParams, "serviceType", getServiceType());
|
||||
addIfNotEmpty(queryParams, "limitType", getLimitType());
|
||||
addIfNotEmpty(queryParams, "casheaIndicator", getCasheaIndicator());
|
||||
addIfNotEmpty(queryParams, "bankNumber", getBankNumber());
|
||||
addIfNotEmpty(queryParams, "currencyCode", getCurrencyCode());
|
||||
addIfNotEmpty(queryParams, "accountStatus", getAccountStatus());
|
||||
addIfNotEmpty(queryParams, "productCvCode", getProductCvCode());
|
||||
addIfNotEmpty(queryParams, "productCode", getProductCode());
|
||||
addIfNotEmpty(queryParams, "channelCode", getChannelCode());
|
||||
addIfNotEmpty(queryParams, "affiliationStatus", getAffiliationStatus());
|
||||
|
||||
return queryParams;
|
||||
}
|
||||
|
||||
public LegalCustomerProductDirectoryRequest fromAppIdConfig(
|
||||
AppIdConfig appIdConfig
|
||||
) {
|
||||
return LegalCustomerProductDirectoryRequest.builder()
|
||||
.customerIbsNumber(this.getCustomerIbsNumber())
|
||||
.appId(this.getAppId())
|
||||
.customerReferenceFintechId(this.getCustomerReferenceFintechId())
|
||||
.serviceType(appIdConfig.getRequest().getServiceType())
|
||||
.limitType(appIdConfig.getRequest().getLimitType())
|
||||
.casheaIndicator(appIdConfig.getRequest().getCasheaIndicator())
|
||||
.bankNumber(appIdConfig.getRequest().getBankNumber())
|
||||
.currencyCode(appIdConfig.getRequest().getCurrencyCode())
|
||||
.accountStatus(appIdConfig.getRequest().getAccountStatus())
|
||||
.productCvCode(appIdConfig.getRequest().getProductCvCode())
|
||||
.productCode(appIdConfig.getRequest().getProductCode())
|
||||
.channelCode(appIdConfig.getRequest().getChannelCode())
|
||||
.affiliationStatus(appIdConfig.getRequest().getAffiliationStatus())
|
||||
.build();
|
||||
}
|
||||
|
||||
public boolean hasValidRequestParameters(AppIdConfig appIdConfig) {
|
||||
if (appIdConfig == null || appIdConfig.getRequest() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LegalCustomerProductDirectoryRequest configRequest = appIdConfig.getRequest();
|
||||
|
||||
return hasValue(configRequest.getBankNumber()) ||
|
||||
hasValue(configRequest.getCurrencyCode()) ||
|
||||
hasValue(configRequest.getAccountStatus()) ||
|
||||
hasValue(configRequest.getProductCvCode()) ||
|
||||
hasValue(configRequest.getProductCode()) ||
|
||||
hasValue(configRequest.getChannelCode()) ||
|
||||
hasValue(configRequest.getServiceType()) ||
|
||||
hasValue(configRequest.getAffiliationStatus()) ||
|
||||
hasValue(configRequest.getLimitType()) ||
|
||||
hasValue(configRequest.getCasheaIndicator());
|
||||
}
|
||||
|
||||
private void addIfNotEmpty(
|
||||
Map<String, String> map,
|
||||
String key,
|
||||
String value
|
||||
) {
|
||||
if (hasValue(value)) {
|
||||
map.put(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasValue(String field) {
|
||||
return field != null && !field.trim().isEmpty();
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@ import com.banesco.common.application.usecase.HttpClientUseCase;
|
||||
import com.banesco.common.domain.exception.HttpApiResponseException;
|
||||
import com.banesco.common.domain.exception.HttpStatusCodeException;
|
||||
import com.banesco.common.domain.model.ApiResponse;
|
||||
import com.banesco.common.domain.model.DominionConfig;
|
||||
import com.banesco.common.domain.model.DomainConfig;
|
||||
import com.banesco.common.domain.model.HttpRequest;
|
||||
import com.banesco.common.infrastructure.config.RestClientConfig;
|
||||
import com.banesco.module.legal_customer_product_directory.application.usecase.DomainUseCase;
|
||||
@ -19,7 +19,7 @@ import java.util.Map;
|
||||
@ApplicationScoped
|
||||
public class DomLegalCustomerDirectoryClient implements DomainUseCase {
|
||||
private final HttpClientUseCase httpClientUseCase;
|
||||
private final DominionConfig dominionConfig;
|
||||
private final DomainConfig domainConfig;
|
||||
|
||||
@Inject
|
||||
public DomLegalCustomerDirectoryClient(
|
||||
@ -27,8 +27,8 @@ public class DomLegalCustomerDirectoryClient implements DomainUseCase {
|
||||
RestClientConfig restClientConfig
|
||||
) {
|
||||
this.httpClientUseCase = httpClientUseCase;
|
||||
this.dominionConfig = restClientConfig.getDomLegalCustomerConfig();
|
||||
log.info("Configuración cargada para bus-legal-customer-directory: {}", dominionConfig);
|
||||
this.domainConfig = restClientConfig.getDomLegalCustomerConfig();
|
||||
log.info("Configuración cargada para bus-legal-customer-directory: {}", domainConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -38,14 +38,14 @@ public class DomLegalCustomerDirectoryClient implements DomainUseCase {
|
||||
) {
|
||||
String customerIbsNumber = params.getCustomerIbsNumber();
|
||||
HttpRequest request = HttpRequest.builder()
|
||||
.url(dominionConfig.getUrl())
|
||||
.url(domainConfig.getUrl())
|
||||
.method(HttpRequest.HttpMethod.GET)
|
||||
.pathParams(Map.of("customerIbsNumber", customerIbsNumber))
|
||||
.queryParams(params.toQueryString())
|
||||
.responseType(ApiResponse.class)
|
||||
.genericType(responseType)
|
||||
.connectTimeout(dominionConfig.getTimeout().getConnect())
|
||||
.readTimeout(dominionConfig.getTimeout().getResponse())
|
||||
.connectTimeout(domainConfig.getTimeout().getConnect())
|
||||
.readTimeout(domainConfig.getTimeout().getResponse())
|
||||
.build();
|
||||
|
||||
log.debug("Request configurado: {}", request);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.banesco.module.legal_customer_product_directory.infrastructure.resource;
|
||||
|
||||
import com.banesco.common.application.helper.MessageResponseHelper;
|
||||
import com.banesco.common.application.helper.MessageHelper;
|
||||
import com.banesco.common.domain.exception.HttpStatusCodeException;
|
||||
import com.banesco.common.domain.model.ApiResponse;
|
||||
import com.banesco.common.domain.model.StatusResponse;
|
||||
@ -30,15 +30,15 @@ import java.util.Objects;
|
||||
public class LegalCustomerProductDirectoryResource {
|
||||
|
||||
private final LegalCustomerProductDirectoryUseCase useCase;
|
||||
private final MessageResponseHelper messageResponseHelper;
|
||||
private final MessageHelper messageHelper;
|
||||
|
||||
@Inject
|
||||
public LegalCustomerProductDirectoryResource(
|
||||
LegalCustomerProductDirectoryUseCase useCase,
|
||||
MessageResponseHelper messageResponseHelper
|
||||
MessageHelper messageHelper
|
||||
) {
|
||||
this.useCase = useCase;
|
||||
this.messageResponseHelper = messageResponseHelper;
|
||||
this.messageHelper = messageHelper;
|
||||
}
|
||||
|
||||
@GET
|
||||
@ -344,9 +344,9 @@ public class LegalCustomerProductDirectoryResource {
|
||||
.build()
|
||||
)).build();
|
||||
} catch (HttpStatusCodeException e) {
|
||||
return messageResponseHelper.handleException(e);
|
||||
return messageHelper.handleException(e);
|
||||
} catch (Exception e) {
|
||||
return messageResponseHelper.handleGenericException(e);
|
||||
return messageHelper.handleGenericException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,13 +8,15 @@ quarkus:
|
||||
|
||||
api:
|
||||
source-id: BLCPD
|
||||
allowed:
|
||||
app-id: '[{"appId":"DANIAPP","request":{"serviceType":"P2P","limitType":"REC","casheaIndicator":"NO"}}]'
|
||||
read-messages:
|
||||
from-props: true
|
||||
busLogalCustomerProductDirectory:
|
||||
bus-legal-customer-product-directory:
|
||||
messages:
|
||||
key: 'busLogalCustomerProductDirectory'
|
||||
content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validación no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backend_code":"VRN04","http_code":"503","status_code":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backend_code":"204","http_code":"200","status_code":"200","description":"Cliente sin productos","status":"ok"}]'
|
||||
key: 'bus-legal-customer-product-directory'
|
||||
content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validación no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":"503","statusCode":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backendCode":"204","httpCode":"200","statusCode":"200","description":"Cliente sin productos","status":"ok"}]'
|
||||
rest-client:
|
||||
dom-legal-customer-product-directory: '{"url":"http://localhost:8083/dom-legal-customer-product-directory/retrieve/{customerIbsNumber}","timeout":{"connect":20000,"response":20000}}'
|
||||
security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":20000,"response":20000},"request":{"sp":"spAPI_Traza","eventCod":"CANCTARJ","bankCod":"01","curCod":"BS"}}'
|
||||
service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":20000,"response":20000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}'
|
||||
dom-legal-customer-product-directory: '{"url":"http://localhost:8083/dom-legal-customer-product-directory/retrieve/{customerIbsNumber}","timeout":{"connect":10000,"response":10000}}'
|
||||
security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","eventCod":"CANCTARJ","bankCod":"01","curCod":"BS"}}'
|
||||
service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":10000,"response":10000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}'
|
||||
Loading…
x
Reference in New Issue
Block a user