update error messages into private api; update generals

This commit is contained in:
Ramon Ramirez 2026-01-30 15:27:12 -04:00
parent c2893f5e49
commit 078010ac85
7 changed files with 95 additions and 79 deletions

View File

@ -12,6 +12,9 @@ import lombok.extern.slf4j.Slf4j;
public class RequestValidatorHelper { public class RequestValidatorHelper {
private final RequestValidationConfig config; private final RequestValidationConfig config;
private static final String REQUIRED_CODE = "VDE01";
private static final String VALIDATE_CODE = "VDE02";
@Inject @Inject
public RequestValidatorHelper( public RequestValidatorHelper(
RequestValidationConfig config RequestValidationConfig config
@ -30,18 +33,18 @@ public class RequestValidatorHelper {
public void validateFieldValues( public void validateFieldValues(
LegalCustomerProductDirectoryRequest request LegalCustomerProductDirectoryRequest request
) { ) {
validate(request.getCustomerId(), config.customerId(), "customerId"); validate(request.getCustomerId(), config.customerIdNumber(), "customerId");
} }
private void required(String value, String fieldName) { private void required(String value, String fieldName) {
if (value == null || value.trim().isEmpty()) { if (value == null || value.trim().isEmpty()) {
throw HttpStatusCodeException.badRequest("VDE01", fieldName); throw HttpStatusCodeException.badRequest(REQUIRED_CODE, fieldName);
} }
} }
private void validate(String value, String regex, String fieldName) { private void validate(String value, String regex, String fieldName) {
if (value != null && !value.isEmpty() && !value.matches(regex)) { if (value != null && !value.isEmpty() && !value.matches(regex)) {
throw HttpStatusCodeException.badRequest("VDE02", fieldName); throw HttpStatusCodeException.badRequest(VALIDATE_CODE, fieldName);
} }
} }
} }

View File

@ -143,6 +143,20 @@ public class HttpRequest {
.build(); .build();
} }
public static <T, R> HttpRequest forDirectResponse(
String url,
HttpMethod method,
Class<T> responseType,
Class<R> errorType
) {
return HttpRequest.builder()
.url(url)
.method(method)
.responseType(responseType)
.errorType(errorType)
.build();
}
public static <T, U> HttpRequest forGenericResponse( public static <T, U> HttpRequest forGenericResponse(
String url, String url,
HttpMethod method, HttpMethod method,

View File

@ -4,7 +4,7 @@ import io.smallrye.config.ConfigMapping;
@ConfigMapping(prefix = "api.allowed.request-validation") @ConfigMapping(prefix = "api.allowed.request-validation")
public interface RequestValidationConfig { public interface RequestValidationConfig {
String customerId(); String customerIdNumber();
String accountStatus(); String accountStatus();
String productCvCode(); String productCvCode();
String limitType(); String limitType();

View File

@ -318,7 +318,7 @@ public class LegalCustomerProductDirectoryResource {
}) })
public Response retrieve( public Response retrieve(
@HeaderParam("customerReferenceFintechId") @HeaderParam("customerReferenceFintechId")
@Parameter(description = "ID de la fintech", required = true, example = "pranical-test") @Parameter(description = "ID de la fintech", required = true, example = "provider-test")
String customerReferenceFintechId, String customerReferenceFintechId,
@HeaderParam("appId") @HeaderParam("appId")

View File

@ -10,7 +10,7 @@ api:
source-id: RLCPD source-id: RLCPD
allowed: allowed:
request-validation: request-validation:
customer-id: '\d+' customer-id-number: '\d+'
account-status: '^(A|D|ACTBSUSD)$' account-status: '^(A|D|ACTBSUSD)$'
product-cv-code: '^(CV|CVFL)$' product-cv-code: '^(CV|CVFL)$'
limit-type: '^(PAG|REC)$' limit-type: '^(PAG|REC)$'
@ -21,6 +21,6 @@ api:
rec-legal-customer-product-directory: rec-legal-customer-product-directory:
messages: messages:
key: 'rec-legal-customer-product-directory' key: 'rec-legal-customer-product-directory'
content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion 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":"VRN01","httpCode":"400","statusCode":"VRN01","description":"Campo Codigo de IBS Requerido"},{"backendCode":"VRN02","httpCode":"204","statusCode":"VRN02","description":"Cliente sin productos"}]' content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion 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"},{"backendCode":"VRN01","httpCode":400,"statusCode":"VRN01","description":"Campo Codigo de IBS Requerido"},{"backendCode":"VRN02","httpCode":204,"statusCode":"VRN02","description":"Cliente sin productos"}]'
rest-client: rest-client:
bus-legal-customer-product-directory: '{"url":"http://localhost:8082/legal-customer-product-directory/retrieve/{customerId}","timeout":{"connect":15000,"response":15000},"config":{}}' bus-legal-customer-product-directory: '{"url":"http://localhost:8082/legal-customer-product-directory/retrieve/{customerId}","timeout":{"connect":15000,"response":15000},"config":{}}'

View File

@ -68,14 +68,13 @@ data:
api.allowed.request-validation.limit-type: ^(PAG|REC)$ api.allowed.request-validation.limit-type: ^(PAG|REC)$
api.allowed.request-validation.product-cv-code: ^(CV|CVFL)$ api.allowed.request-validation.product-cv-code: ^(CV|CVFL)$
api.read-messages.from-props: 'true' api.read-messages.from-props: 'true'
api.rest-client.register-security: '{"url":"http://api-register-security-route-proyecto-prueba-ja.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":20000,"response":20000},"config":{"sp":"spAPI_Traza","codEve":"P2PVUEL","codEve2":"P2PVUEL","codBan":"01","codMon":"BS"}}'
quarkus.http.port: '8080' quarkus.http.port: '8080'
api.allowed.request-validation.customer-ibs-number: \d+ api.allowed.request-validation.customer-ibs-number: \d+
quarkus.profile: dev quarkus.profile: dev
api.allowed.request-validation.account-status: ^(A|O|ACTBSUSD)$ api.allowed.request-validation.account-status: ^(A|O|ACTBSUSD)$
quarkus.log.console.format: '%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n' quarkus.log.console.format: '%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n'
quarkus.http.idle-timeout: 30s quarkus.http.idle-timeout: 30s
api.recLogalCustomerProductDirectory.messages.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"}]' api.recLogalCustomerProductDirectory.messages.content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion 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"},{"backendCode":"VRN01","httpCode":400,"statusCode":"VRN01","description":"Campo Codigo de IBS Requerido"},{"backendCode":"VRN02","httpCode":204,"statusCode":"VRN02","description":"Cliente sin productos"}]'
quarkus.thread-pool.max-threads: '100' quarkus.thread-pool.max-threads: '100'
quarkus.smallrye-health.liveness-path: /actuator/health/live quarkus.smallrye-health.liveness-path: /actuator/health/live
api.source-id: LCPD api.source-id: LCPD