From 15a0833d5867f0ed0f6653091657caa14df210c8 Mon Sep 17 00:00:00 2001 From: Jithmi004 Date: Fri, 7 Mar 2025 10:49:18 +0530 Subject: [PATCH 1/2] Implement nested error message handling for schema validation --- .../handlers/security/SchemaValidator.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java b/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java index 2b857a0feba9..b6c9dac85728 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java +++ b/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java @@ -78,7 +78,11 @@ public boolean handleRequest(MessageContext messageContext) { if (validationReport.hasErrors()) { StringBuilder finalMessage = new StringBuilder(); for (ValidationReport.Message message : validationReport.getMessages()) { - finalMessage.append(message.getMessage()).append(", "); + finalMessage.append(getErrorMessage(message)).append(", "); + } + // Remove the last comma and space, if present + if (finalMessage.length() > 0) { + finalMessage.setLength(finalMessage.length() - 2); } String errMessage = "Schema validation failed in the Request: "; logger.error(errMessage); @@ -101,7 +105,11 @@ public boolean handleResponse(MessageContext messageContext) { if (validationReport.hasErrors()) { StringBuilder finalMessage = new StringBuilder(); for (ValidationReport.Message message : validationReport.getMessages()) { - finalMessage.append(message.getMessage()).append(", "); + finalMessage.append(getErrorMessage(message)).append(", "); + } + // Remove the last comma and space, if present + if (finalMessage.length() > 0) { + finalMessage.setLength(finalMessage.length() - 2); } String errMessage = "Schema validation failed in the Response: "; logger.error(errMessage); @@ -110,4 +118,16 @@ public boolean handleResponse(MessageContext messageContext) { } return true; } + + private String getErrorMessage(ValidationReport.Message message){ + if(message.getNestedMessages().isEmpty()){ + return message.getMessage(); + } + StringBuilder combinedMessages = new StringBuilder(); + combinedMessages.append(message.getMessage()); + for (ValidationReport.Message nestedMessage : message.getNestedMessages()) { + combinedMessages.append(", ").append(getErrorMessage(nestedMessage)); + } + return combinedMessages.toString().trim(); + } } From 241c1a1e60d36673714bf4cc7942b739f20e8ada Mon Sep 17 00:00:00 2001 From: Jithmi004 Date: Fri, 7 Mar 2025 11:27:31 +0530 Subject: [PATCH 2/2] Format the code --- .../apimgt/gateway/handlers/security/SchemaValidator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java b/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java index b6c9dac85728..c44df611ce99 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java +++ b/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/handlers/security/SchemaValidator.java @@ -119,8 +119,8 @@ public boolean handleResponse(MessageContext messageContext) { return true; } - private String getErrorMessage(ValidationReport.Message message){ - if(message.getNestedMessages().isEmpty()){ + private String getErrorMessage(ValidationReport.Message message) { + if (message.getNestedMessages().isEmpty()) { return message.getMessage(); } StringBuilder combinedMessages = new StringBuilder();