From f8b13e957313eb7a618f337331758438c869f0a4 Mon Sep 17 00:00:00 2001 From: Steve Hu Date: Mon, 27 Feb 2023 23:02:18 -0500 Subject: [PATCH] fixes #1631 update request transformer to do some validation logic (#1632) --- .../reqtrans/RequestTransformerInterceptor.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/request-transformer/src/main/java/com/networknt/reqtrans/RequestTransformerInterceptor.java b/request-transformer/src/main/java/com/networknt/reqtrans/RequestTransformerInterceptor.java index dc82d2b222..094512bb53 100644 --- a/request-transformer/src/main/java/com/networknt/reqtrans/RequestTransformerInterceptor.java +++ b/request-transformer/src/main/java/com/networknt/reqtrans/RequestTransformerInterceptor.java @@ -28,7 +28,8 @@ /** * Transforms the request body of an active request being processed. - * This is executed by RequestInterceptorExecutionHandler. + * This is executed by RequestInterceptorExecutionHandler. Also, this class will be responsible for + * some special validations that the normal handlers cannot do or not easy to do. * * @author Kalev Gonvick * @@ -204,6 +205,17 @@ public void handleRequest(HttpServerExchange exchange) throws Exception { } exchange.getRequestHeaders().put(Headers.CONTENT_LENGTH, length); break; + case "validationError": + // If the rule engine returns any validationError entry, stop the chain and send the res. + // this can be either XML or JSON or TEXT. Just make sure it matches the content type + String errorMessage = (String)result.get("errorMessage"); + String contentType = (String)result.get("contentType"); + int statusCode = (Integer)result.get("statusCode"); + if(logger.isTraceEnabled()) logger.trace("Entry key validationError with errorMessage {} contentType {} statusCode {}"); + exchange.getResponseHeaders().add(Headers.CONTENT_TYPE, contentType); + exchange.setStatusCode(statusCode); + exchange.getResponseSender().send(errorMessage); + break; } } }