From 1c67eb9bfa909c1e6b7f16a67ad5ed6dabaed5a2 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:18:04 -0500 Subject: [PATCH 1/9] mmd-2026: Update GET /transfers response --- .../src/main/resources/api.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/core-connector-interface/src/main/resources/api.yaml b/core-connector-interface/src/main/resources/api.yaml index ea1f9b1..c4f9cf7 100644 --- a/core-connector-interface/src/main/resources/api.yaml +++ b/core-connector-interface/src/main/resources/api.yaml @@ -209,7 +209,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/mojaloopTransferState' + $ref: '#/components/schemas/transferStatusResponse' 400: $ref: '#/components/responses/400' 404: @@ -1638,6 +1638,18 @@ components: - WAITING_FOR_QUOTE_ACCEPTANCE `AUTO_ACCEPT_QUOTE` is set to "false" and quote information has been returned, waiting to be accepted by the Payer DFSP using a `PUT /sendmoney/{transferId}` request. - COMPLETED The transfer has completed successfully. + transferStatusResponse: + type: object + properties: + transferId: + $ref: '#/components/schemas/mojaloopIdentifier' + transferState: + $ref: '#/components/schemas/transferStatus' + completedTimestamp: + $ref: '#/components/schemas/timestamp' + description: Time and date when the transaction was completed. + example: "2020-05-19T08:38:08.699-04:00" + responses: '400': description: Malformed or missing required headers or parameters @@ -1719,4 +1731,4 @@ components: schema: pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ type: string - description: Transfer identifier. \ No newline at end of file + description: Transfer identifier. From 07325d882ef104759fed7b71265cf244032b639e Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:18:51 -0500 Subject: [PATCH 2/9] Add files via upload --- ...e-connectors-camel-common-1.1.3-SNAPSHOT.jar | Bin 0 -> 18136 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core-connector/lib/core-connectors-camel-common-1.1.3-SNAPSHOT.jar diff --git a/core-connector/lib/core-connectors-camel-common-1.1.3-SNAPSHOT.jar b/core-connector/lib/core-connectors-camel-common-1.1.3-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..c2b051a088802a943dcd731deee9dd48696e4a8a GIT binary patch literal 18136 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 O-}PI%ZJOuDfBz2x`cM@B literal 0 HcmV?d00001 From fb4878848aea2ede2f474c37a1838c92fae6eb84 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:21:29 -0500 Subject: [PATCH 3/9] mmd-2026: Upgrade CC camel-common to 1.1.3 --- core-connector/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-connector/pom.xml b/core-connector/pom.xml index 929ea5a..0518cf7 100644 --- a/core-connector/pom.xml +++ b/core-connector/pom.xml @@ -187,9 +187,9 @@ com.modus.adapter.exception cbs-adapters-exception-handling - 1.1.0-SNAPSHOT + 1.1.3-SNAPSHOT system - ${basedir}/lib/core-connectors-camel-common-1.1.1-SNAPSHOT.jar + ${basedir}/lib/core-connectors-camel-common-1.1.3-SNAPSHOT.jar org.json From d6707ca40ab187fba97919c1034a76a309dd2807 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:25:34 -0500 Subject: [PATCH 4/9] mmd-2026: Update getTransfersByTransferId return --- .../main/java/com/modusbox/client/jaxrs/TransfersApiImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-connector/src/main/java/com/modusbox/client/jaxrs/TransfersApiImpl.java b/core-connector/src/main/java/com/modusbox/client/jaxrs/TransfersApiImpl.java index 871703a..17e3e64 100644 --- a/core-connector/src/main/java/com/modusbox/client/jaxrs/TransfersApiImpl.java +++ b/core-connector/src/main/java/com/modusbox/client/jaxrs/TransfersApiImpl.java @@ -2,7 +2,7 @@ import com.modusbox.client.api.TransfersApi; import com.modusbox.client.model.FulfilNotification; -import com.modusbox.client.model.MojaloopTransferState; +import com.modusbox.client.model.TransferStatusResponse; import com.modusbox.client.model.TransferRequestInbound; import com.modusbox.client.model.TransferResponseInbound; @@ -12,7 +12,7 @@ public class TransfersApiImpl implements TransfersApi { @Override - public MojaloopTransferState getTransfersByTransferId(@Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$") String transferId) { + public TransferStatusResponse getTransfersByTransferId(@Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$") String transferId) { return null; } From a88adb8b23287f9477fe09497cf553de19193ff9 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:28:04 -0500 Subject: [PATCH 5/9] Create CheckMojaloopError.java --- .../client/processor/CheckMojaloopError.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 core-connector/src/main/java/com/modusbox/client/processor/CheckMojaloopError.java diff --git a/core-connector/src/main/java/com/modusbox/client/processor/CheckMojaloopError.java b/core-connector/src/main/java/com/modusbox/client/processor/CheckMojaloopError.java new file mode 100644 index 0000000..344ecbd --- /dev/null +++ b/core-connector/src/main/java/com/modusbox/client/processor/CheckMojaloopError.java @@ -0,0 +1,56 @@ +package com.modusbox.client.processor; + +import com.google.gson.Gson; +import com.modusbox.client.customexception.CCCustomException; +import com.modusbox.client.enums.ErrorCode; +import com.modusbox.log4j2.message.CustomJsonMessage; +import com.modusbox.log4j2.message.CustomJsonMessageImpl; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.LinkedHashMap; + +public class CheckMojaloopError implements Processor { + + CustomJsonMessage customJsonMessage = new CustomJsonMessageImpl(); + + public void process(Exchange exchange) throws Exception { + Gson gson = new Gson(); + String s = gson.toJson(exchange.getIn().getBody(), LinkedHashMap.class); + JSONObject respObject = new JSONObject(s); + int errorCode = 0; + String errorMessage = ""; + + try { + errorCode = respObject.getInt("statusCode"); + errorMessage = respObject.getString("message"); + if (errorCode == 3208) { + customJsonMessage.logJsonMessage("error", String.valueOf(exchange.getIn().getHeader("X-CorrelationId")), + "Processing the exception at CheckMojaloopError", null, null, respObject.toString()); + throw new CCCustomException(ErrorCode.getErrorResponse(ErrorCode.TRANSFER_ID_NOT_FOUND)); + } + else if (errorCode == 400) { + customJsonMessage.logJsonMessage("error", String.valueOf(exchange.getIn().getHeader("X-CorrelationId")), + "Processing the exception at CheckMojaloopError", null, null, respObject.toString()); + if (errorMessage.startsWith(".path.transferId should match pattern")) { + throw new CCCustomException(ErrorCode.getErrorResponse(ErrorCode.MALFORMED_SYNTAX)); + } + else { + throw new CCCustomException(ErrorCode.getErrorResponse(ErrorCode.GENERIC_VALIDATION_ERROR)); + } + } + else { + customJsonMessage.logJsonMessage("error", String.valueOf(exchange.getIn().getHeader("X-CorrelationId")), + "Processing the exception at CheckMojaloopError, unhandled error code", null, null, respObject.toString()); + throw new CCCustomException(ErrorCode.getErrorResponse(ErrorCode.INTERNAL_SERVER_ERROR, "Error while retrieving transfer state, please retry later.")); + } + } catch (JSONException e) { + System.out.println("Problem extracting error code from Mojaloop error response occurred."); + throw new CCCustomException(ErrorCode.getErrorResponse(ErrorCode.INTERNAL_SERVER_ERROR)); + } + + } + +} From 2f9a9ea1233e49d146bcdad77ee3e176f0cd281f Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:29:40 -0500 Subject: [PATCH 6/9] mmd-2026: Add checkMojaloopError --- .../com/modusbox/client/router/CustomErrorRouter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core-connector/src/main/java/com/modusbox/client/router/CustomErrorRouter.java b/core-connector/src/main/java/com/modusbox/client/router/CustomErrorRouter.java index 6beac4d..004f0e2 100644 --- a/core-connector/src/main/java/com/modusbox/client/router/CustomErrorRouter.java +++ b/core-connector/src/main/java/com/modusbox/client/router/CustomErrorRouter.java @@ -2,11 +2,13 @@ import com.modusbox.client.processor.CheckCBSError; import com.modusbox.client.processor.CustomErrorProcessor; +import com.modusbox.client.processor.CheckMojaloopError; import org.apache.camel.builder.RouteBuilder; public final class CustomErrorRouter extends RouteBuilder { private CustomErrorProcessor customErrorProcessor = new CustomErrorProcessor(); private CheckCBSError checkCBSError = new CheckCBSError(); + private CheckMojaloopError checkMojaloopError = new CheckMojaloopError(); public void configure() { @@ -18,5 +20,10 @@ public void configure() { //.process(exchange -> System.out.println()) .process(checkCBSError) ; + + from("direct:catchMojaloopError") +// .process(exchange -> System.out.println()) + .process(checkMojaloopError) + ; } -} \ No newline at end of file +} From dec7d2188bf39725d033c777e734caee2183e13d Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:30:59 -0500 Subject: [PATCH 7/9] mmd-2026: Update GET /transfers response --- .../src/main/resources/mappings/getTransfersResponse.ds | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core-connector/src/main/resources/mappings/getTransfersResponse.ds b/core-connector/src/main/resources/mappings/getTransfersResponse.ds index c49f5b5..7ea3d14 100644 --- a/core-connector/src/main/resources/mappings/getTransfersResponse.ds +++ b/core-connector/src/main/resources/mappings/getTransfersResponse.ds @@ -1,3 +1,5 @@ { - "mojaloopTransferState": payload.fulfil.body.transferState -} \ No newline at end of file + "transferId": payload.transferId, + "transferState": payload.fulfil.body.transferState, + "completedTimestamp": payload.fulfil.body.completedTimestamp +} From 6c45739922a1245192b751246a58c63b75994b24 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:36:34 -0500 Subject: [PATCH 8/9] mmd-2026: Add error handling --- .../modusbox/client/router/TransfersRouter.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core-connector/src/main/java/com/modusbox/client/router/TransfersRouter.java b/core-connector/src/main/java/com/modusbox/client/router/TransfersRouter.java index e0f74f6..66150f6 100644 --- a/core-connector/src/main/java/com/modusbox/client/router/TransfersRouter.java +++ b/core-connector/src/main/java/com/modusbox/client/router/TransfersRouter.java @@ -89,10 +89,22 @@ public void configure() { "'Tracking the response', 'Verify the response', null)") // .process(exchange -> System.out.println()) + .choice() + .when(simple("${body['statusCode']} != null")) +// .process(exchange -> System.out.println()) + .to("direct:catchMojaloopError") + .endDoTry() + +// .process(exchange -> System.out.println()) + + .choice() + .when(simple("${body['fulfil']} != null")) +// .process(exchange -> System.out.println()) .marshal().json() .transform(datasonnet("resource:classpath:mappings/getTransfersResponse.ds")) .setBody(simple("${body.content}")) .marshal().json() + .endDoTry() /* * END processing @@ -101,6 +113,8 @@ public void configure() { "'Final Response: ${body}', " + "null, null, 'Response of GET /transfers/${header.transferId} API')") + .doCatch(CCCustomException.class, HttpOperationFailedException.class, JSONException.class) + .to("direct:extractCustomErrors") .doFinally().process(exchange -> { ((Histogram.Timer) exchange.getProperty(TIMER_NAME_GET)).observeDuration(); // stop Prometheus Histogram metric }).end() From 1b411f424ee9c3e5222d8aaf7bd59d93aeaaec5b Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 3 Feb 2022 20:37:30 -0500 Subject: [PATCH 9/9] mmd-2026: Replace with 1.1.3 --- ...e-connectors-camel-common-1.1.1-SNAPSHOT.jar | Bin 14845 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 core-connector/lib/core-connectors-camel-common-1.1.1-SNAPSHOT.jar diff --git a/core-connector/lib/core-connectors-camel-common-1.1.1-SNAPSHOT.jar b/core-connector/lib/core-connectors-camel-common-1.1.1-SNAPSHOT.jar deleted file mode 100644 index fc95223c2a54959b28cfac979a1b1b102ef7026a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14845 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 L^}tR4?YI8{$uGl`