diff --git a/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/mediators/GatewayErrorMediator.java b/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/mediators/GatewayErrorMediator.java index d6b73098..09e91d49 100644 --- a/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/mediators/GatewayErrorMediator.java +++ b/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/mediators/GatewayErrorMediator.java @@ -82,6 +82,9 @@ public boolean mediate(MessageContext messageContext) { // Error handling logic. JSONObject errorData; + String statusCodeString = extractStatusCode(messageContext); + int statusCode = Integer.parseInt(statusCodeString); + if ((messageContext.getProperty(GatewayConstants.ERROR_CODE)) != null) { int errorCode = (int) messageContext.getProperty(GatewayConstants.ERROR_CODE); @@ -109,12 +112,14 @@ public boolean mediate(MessageContext messageContext) { // Assume the errors thrown from the relevant internal webapps of these APIs are // already formatted according to the CDS format return true; + } else if (messageContext.getProperty(GatewayConstants.ENDPOINT_ADDRESS) != null && + statusCode != HttpStatus.SC_REQUEST_TIMEOUT) { + // Assume the errors coming from the backend are properly formatted. + return true; } else { - String statusCodeString = extractStatusCode(messageContext); if (StringUtils.isBlank(statusCodeString)) { return true; } - int statusCode = Integer.parseInt(statusCodeString); ErrorConstants.AUErrorEnum errorEnum; if ("406".equals(statusCodeString)) { errorEnum = ErrorConstants.AUErrorEnum.INVALID_ACCEPT_HEADER; diff --git a/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/utils/GatewayConstants.java b/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/utils/GatewayConstants.java index 03049089..13c8c3a6 100644 --- a/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/utils/GatewayConstants.java +++ b/components/org.wso2.openbanking.cds.gateway/src/main/java/org/wso2/openbanking/cds/gateway/utils/GatewayConstants.java @@ -137,6 +137,7 @@ private GatewayConstants() { public static final String REST_METHOD = "REST_METHOD"; public static final String OAUTH_JWT_ASSERTION = "client_assertion"; public static final String CLIENT_ID = "client_id"; + public static final String ENDPOINT_ADDRESS = "ENDPOINT_ADDRESS"; // Constants related to executors public static final String HTTP_GET = "GET";