update error messages into private api; update generals

This commit is contained in:
Ramon Ramirez 2026-01-30 15:47:59 -04:00
parent eb8949a5bf
commit cefe587d73
9 changed files with 101 additions and 78 deletions

View File

@ -5,7 +5,7 @@
<artifactId>dom-payment-instruction-request</artifactId> <artifactId>dom-payment-instruction-request</artifactId>
<version>1.0-native-quarkus-jdk17</version> <version>1.0-native-quarkus-jdk17</version>
<name>dom-payment-instruction-request</name> <name>dom-payment-instruction-request</name>
<description>API Domain - Create payment single request</description> <description>API Domain - Create payment multiple request</description>
<properties> <properties>
<maven.compiler.release>17</maven.compiler.release> <maven.compiler.release>17</maven.compiler.release>

View File

@ -58,83 +58,83 @@ public class HttpRequest {
private boolean logResponseBody = true; private boolean logResponseBody = true;
public static <T> HttpRequest forApiResponse( public static <T> HttpRequest forApiResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> dataType Class<T> dataType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiResponse.class) .responseType(ApiResponse.class)
.genericType(dataType) .genericType(dataType)
.apiResponse(true) .apiResponse(true)
.build(); .build();
} }
public static <T> HttpRequest forApiResponseList( public static <T> HttpRequest forApiResponseList(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> elementType Class<T> elementType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiResponse.class) .responseType(ApiResponse.class)
.complexType(TypeBuilder.listOf(elementType)) .complexType(TypeBuilder.listOf(elementType))
.apiResponse(true) .apiResponse(true)
.listResponse(true) .listResponse(true)
.build(); .build();
} }
public static <T> HttpRequest forApiPrivateResponse( public static <T> HttpRequest forApiPrivateResponse(
String url, String url,
String statusSuccess, String statusSuccess,
HttpMethod method, HttpMethod method,
Class<T> successType Class<T> successType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiPrivateResponse.class) .responseType(ApiPrivateResponse.class)
.complexType(TypeBuilder.parametricType( .complexType(TypeBuilder.parametricType(
Either.class, Either.class,
successType, successType,
ApiPrivateError.class ApiPrivateError.class
)) ))
.apiPrivateResponse(true) .apiPrivateResponse(true)
.eitherResponse(true) .eitherResponse(true)
.errorType(ApiPrivateError.class) .errorType(ApiPrivateError.class)
.statusSuccess(statusSuccess) .statusSuccess(statusSuccess)
.build(); .build();
} }
public static <T> HttpRequest forApiPrivateResponseList( public static <T> HttpRequest forApiPrivateResponseList(
String url, String url,
String statusSuccess, String statusSuccess,
HttpMethod method, HttpMethod method,
Class<T> elementType Class<T> elementType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiPrivateResponse.class) .responseType(ApiPrivateResponse.class)
.complexType(TypeBuilder.parametricType( .complexType(TypeBuilder.parametricType(
Either.class, Either.class,
TypeBuilder.listOf(elementType), TypeBuilder.listOf(elementType),
ApiPrivateError.class ApiPrivateError.class
)) ))
.apiPrivateResponse(true) .apiPrivateResponse(true)
.eitherResponse(true) .eitherResponse(true)
.listResponse(true) .listResponse(true)
.errorType(ApiPrivateError.class) .errorType(ApiPrivateError.class)
.statusSuccess(statusSuccess) .statusSuccess(statusSuccess)
.build(); .build();
} }
public static <T> HttpRequest forDirectResponse( public static <T> HttpRequest forDirectResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> responseType Class<T> responseType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
@ -143,18 +143,32 @@ public class HttpRequest {
.build(); .build();
} }
public static <T, U> HttpRequest forGenericResponse( public static <T, R> HttpRequest forDirectResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> rawType, Class<T> responseType,
Class<U> genericType Class<R> errorType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(rawType) .responseType(responseType)
.complexType(TypeBuilder.parametricType(rawType, genericType)) .errorType(errorType)
.build(); .build();
}
public static <T, U> HttpRequest forGenericResponse(
String url,
HttpMethod method,
Class<T> rawType,
Class<U> genericType
) {
return HttpRequest.builder()
.url(url)
.method(method)
.responseType(rawType)
.complexType(TypeBuilder.parametricType(rawType, genericType))
.build();
} }
public HttpRequest withHeaders(Map<String, String> headers) { public HttpRequest withHeaders(Map<String, String> headers) {

View File

@ -21,7 +21,7 @@ public class RestClientConfig {
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private static final String API_BASE = "api.rest-client."; private static final String API_BASE = "api.rest-client.";
private static final String API_PAYMENT_FILE_NAME = "payment-file"; private static final String API_PAYMENT_INSTRUCTION_NAME = "payment-file";
@Inject @Inject
public RestClientConfig( public RestClientConfig(
@ -33,7 +33,7 @@ public class RestClientConfig {
} }
public PaymentRequestConfig getPaymentRequestConfig() { public PaymentRequestConfig getPaymentRequestConfig() {
return getConfig(API_PAYMENT_FILE_NAME, PaymentRequestConfig.class); return getConfig(API_PAYMENT_INSTRUCTION_NAME, PaymentRequestConfig.class);
} }
private <T> T getConfig( private <T> T getConfig(

View File

@ -45,7 +45,7 @@ public class PaymentInstructionRequestService implements PaymentInstructionReque
); );
} catch (ApiPrivateException e) { } catch (ApiPrivateException e) {
log.warn("Excepcion de la api privada: {} -> {}", e.getStatusCode(), e.getMessage()); log.warn("Excepcion de la api privada: {} -> {}", e.getStatusCode(), e.getMessage());
response = messageHelper.handleException(HttpStatusCodeException.badRequest("400")); response = messageHelper.handleException(HttpStatusCodeException.conflict(e.getStatusCode()));
} catch (HttpStatusCodeException e) { } catch (HttpStatusCodeException e) {
log.error("Excepcion HTTP del api privada: {} - {}", e.getStatusCode(), e.getErrorCode()); log.error("Excepcion HTTP del api privada: {} - {}", e.getStatusCode(), e.getErrorCode());
response = messageHelper.handleException(e); response = messageHelper.handleException(e);

View File

@ -35,7 +35,7 @@ public class ApiPrivateAdapter implements ApiPrivateRepository {
); );
if(response.isEmpty()) { if(response.isEmpty()) {
throw HttpStatusCodeException.badRequest("400"); throw HttpStatusCodeException.conflict("PIBE-00");
} }
log.info("Resultado de las transacciones obtenidas: {}", response.size()); log.info("Resultado de las transacciones obtenidas: {}", response.size());

View File

@ -22,6 +22,8 @@ public class PaymentRequestClient implements PaymentRequestUseCase {
private final HttpClientUseCase httpClientUseCase; private final HttpClientUseCase httpClientUseCase;
private final PaymentRequestConfig paymentRequestConfig; private final PaymentRequestConfig paymentRequestConfig;
private static final String EMPTY_MESSAGE = "EMPTY_MESSAGE";
@Inject @Inject
public PaymentRequestClient( public PaymentRequestClient(
SerializationHelper serializationHelper, SerializationHelper serializationHelper,
@ -68,12 +70,19 @@ public class PaymentRequestClient implements PaymentRequestUseCase {
); );
throw ApiPrivateException.builder() throw ApiPrivateException.builder()
.statusCode(response.getEstatus()) .statusCode("PIBE-00")
.message("EMPTY_MESSAGE") .message(EMPTY_MESSAGE)
.build(); .build();
} }
if (detail.isLeft()) { if (detail.isLeft()) {
if(detail.getLeft() == null) {
throw ApiPrivateException.builder()
.statusCode("PIBE-00")
.message(EMPTY_MESSAGE)
.build();
}
return detail.getLeft(); return detail.getLeft();
} }
@ -88,10 +97,10 @@ public class PaymentRequestClient implements PaymentRequestUseCase {
); );
throw ApiPrivateException.builder() throw ApiPrivateException.builder()
.statusCode(response.getEstatus()) .statusCode("PIBE-01")
.message((error.getCodError() != null) .message((error.getCodError() != null)
? error.getCodError() + ":" + error.getMensajeError() ? error.getCodError() + ":" + error.getMensajeError()
: "EMPTY_MESSAGE" : EMPTY_MESSAGE
) )
.build(); .build();
} catch (ApiPrivateException e) { } catch (ApiPrivateException e) {

View File

@ -13,6 +13,6 @@ api:
dom-payment-instruction-request: dom-payment-instruction-request:
messages: messages:
key: 'dom-payment-instruction-request' key: 'dom-payment-instruction-request'
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":"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":"PIBE-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIBE-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]'
rest-client: rest-client:
payment-file: '{"url":"http://10.135.193.156:8080/RequestPayment/notificationRequestPayment/v1/generate/createRequestPayMasive","timeout":{"connect":10000,"response":10000},"statusSuccess":"00"}' payment-file: '{"url":"http://10.135.193.156:8080/RequestPayment/notificationRequestPayment/v1/generate/createRequestPayMasive","timeout":{"connect":10000,"response":10000},"statusSuccess":"00"}'

View File

@ -72,7 +72,7 @@ data:
api.read-messages.from-props: 'true' api.read-messages.from-props: 'true'
quarkus.http.port: '8080' quarkus.http.port: '8080'
quarkus.profile: dev quarkus.profile: dev
api.dom-payment-instruction-request.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"},{"backend_code":"204","http_code":"200","status_code":"200","description":"Cliente sin productos","status":"ok"}]' api.dom-payment-instruction-request.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":"PIBE-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIBE-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]'
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
quarkus.thread-pool.max-threads: '100' quarkus.thread-pool.max-threads: '100'