diff --git a/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC12_Shipper_CancelEntireBookingAction.java b/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC12_Shipper_CancelEntireBookingAction.java index 2fbb2bc0..148ae396 100644 --- a/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC12_Shipper_CancelEntireBookingAction.java +++ b/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC12_Shipper_CancelEntireBookingAction.java @@ -61,6 +61,12 @@ protected Stream createSubChecks() { getMatchedExchangeUuid(), BookingState.CANCELLED ), + new QueryParamCheck( + BookingRole::isShipper, + getMatchedExchangeUuid(), + "operation", + "cancelBooking" + ), new ApiHeaderCheck( BookingRole::isShipper, getMatchedExchangeUuid(), diff --git a/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC9_Shipper_CancelBookingAmendment.java b/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC9_Shipper_CancelBookingAmendment.java index 49a80bac..f2bce1ab 100644 --- a/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC9_Shipper_CancelBookingAmendment.java +++ b/booking/src/main/java/org/dcsa/conformance/standards/booking/action/UC9_Shipper_CancelBookingAmendment.java @@ -52,6 +52,12 @@ protected Stream createSubChecks() { new UrlPathCheck(BookingRole::isShipper, getMatchedExchangeUuid(), "/v2/bookings/%s".formatted(cbrr)), new ResponseStatusCheck( BookingRole::isCarrier, getMatchedExchangeUuid(), expectedStatus), + new QueryParamCheck( + BookingRole::isShipper, + getMatchedExchangeUuid(), + "operation", + "cancelAmendment" + ), new ApiHeaderCheck( BookingRole::isShipper, getMatchedExchangeUuid(), diff --git a/booking/src/main/java/org/dcsa/conformance/standards/booking/party/Shipper.java b/booking/src/main/java/org/dcsa/conformance/standards/booking/party/Shipper.java index 717c050b..e545e27b 100644 --- a/booking/src/main/java/org/dcsa/conformance/standards/booking/party/Shipper.java +++ b/booking/src/main/java/org/dcsa/conformance/standards/booking/party/Shipper.java @@ -117,27 +117,29 @@ private void sendBookingRequest(JsonNode actionPrompt) { private void sendCancelEntireBooking(JsonNode actionPrompt) { log.info("Shipper.sendCancelEntireBooking(%s)".formatted(actionPrompt.toPrettyString())); String cbrr = actionPrompt.get("cbrr").asText(); - + Map> queryParams = Map.of("operation", List.of("cancelBooking")); asyncCounterpartPatch( - "/v2/bookings/%s?operation=cancelBooking".formatted(cbrr), + "/v2/bookings/%s".formatted(cbrr), + queryParams, new ObjectMapper() .createObjectNode() .put("bookingStatus", BookingState.CANCELLED.wireName())); - addOperatorLogEntry("Sent a cancel booking request of '%s'".formatted(cbrr)); + addOperatorLogEntry("Sent a cancel amendment request of '%s'".formatted(cbrr)); } private void sendCancelBookingAmendment(JsonNode actionPrompt) { - log.info("Shipper.sendCancelEntireBooking(%s)".formatted(actionPrompt.toPrettyString())); + log.info("Shipper.sendCancelBookingAmendment(%s)".formatted(actionPrompt.toPrettyString())); String cbrr = actionPrompt.get("cbrr").asText(); - + Map> queryParams = Map.of("operation", List.of("cancelAmendment")); asyncCounterpartPatch( - "/v2/bookings/%s?operation=cancelAmendment".formatted(cbrr), + "/v2/bookings/%s".formatted(cbrr), + queryParams, new ObjectMapper() .createObjectNode() .put("bookingStatus", BookingState.CANCELLED.wireName())); - addOperatorLogEntry("Sent a cancel booking request of '%s'".formatted(cbrr)); + addOperatorLogEntry("Sent a cancel amendment request of '%s'".formatted(cbrr)); } private void sendUpdatedBooking(JsonNode actionPrompt) { diff --git a/core/src/main/java/org/dcsa/conformance/core/party/ConformanceParty.java b/core/src/main/java/org/dcsa/conformance/core/party/ConformanceParty.java index 9e09ee84..da12baf3 100644 --- a/core/src/main/java/org/dcsa/conformance/core/party/ConformanceParty.java +++ b/core/src/main/java/org/dcsa/conformance/core/party/ConformanceParty.java @@ -183,6 +183,10 @@ protected void asyncCounterpartPatch(String path, JsonNode jsonBody) { asyncCounterpartPatch(path, jsonBody, conformanceResponse -> {}); } + protected void asyncCounterpartPatch(String path, Map> queryParams, JsonNode jsonBody) { + asyncCounterpartPatch(path, queryParams, jsonBody, conformanceResponse -> {}); + } + protected void asyncCounterpartPost(String path, JsonNode jsonBody) { asyncCounterpartPost(path, jsonBody, conformanceResponse -> {}); } @@ -195,6 +199,11 @@ protected void asyncCounterpartPatch(String path, JsonNode jsonBody, Consumer> queryParams, + JsonNode jsonBody, Consumer responseCallback) { + _asyncCounterpartPatchPostOrPut("PATCH", path, queryParams, jsonBody, responseCallback); + } + protected void asyncCounterpartPost(String path, JsonNode jsonBody, Consumer responseCallback) { _asyncCounterpartPatchPostOrPut("POST", path, Collections.emptyMap(), jsonBody, responseCallback); }