Skip to content

Commit

Permalink
DT-1796: Log prompt answers for PINT
Browse files Browse the repository at this point in the history
  • Loading branch information
nt-gt committed Oct 17, 2024
1 parent 4db6d3a commit ade83a3
Show file tree
Hide file tree
Showing 14 changed files with 78 additions and 161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,12 @@ public static LinkedHashMap<String, PintScenarioListBuilder> createModuleScenari
initiateAndCloseTransferAction(PintResponseCode.RECE).thenEither(
noAction(),
retryTransfer(PintResponseCode.DUPE, SenderTransmissionClass.VALID_TRANSFER),
resignLatestEntry().then(
retryTransfer(PintResponseCode.DUPE, SenderTransmissionClass.VALID_TRANSFER)
),
manipulateLatestTransactionParameters().then(
retryTransfer(PintResponseCode.DISE, SenderTransmissionClass.VALID_TRANSFER)
)),
retryTransfer(PintResponseCode.DUPE, SenderTransmissionClass.VALID_TRANSFER, RetryType.RESIGN),
retryTransfer(PintResponseCode.DISE, SenderTransmissionClass.VALID_TRANSFER, RetryType.MANIPULATE)),
initiateAndCloseTransferAction(PintResponseCode.RECE, SenderTransmissionClass.VALID_TRANSFER).thenEither(
noAction(),
resignLatestEntry().then(
retryTransfer(PintResponseCode.DUPE, SenderTransmissionClass.VALID_TRANSFER)
),
manipulateLatestTransactionParameters().then(
retryTransfer(PintResponseCode.DISE, SenderTransmissionClass.VALID_TRANSFER)
)
retryTransfer(PintResponseCode.DUPE, SenderTransmissionClass.VALID_TRANSFER, RetryType.RESIGN),
retryTransfer(PintResponseCode.DISE, SenderTransmissionClass.VALID_TRANSFER, RetryType.MANIPULATE)
),
initiateAndCloseTransferAction(PintResponseCode.BSIG, SenderTransmissionClass.SIGNATURE_ISSUE).then(
initiateAndCloseTransferAction(PintResponseCode.RECE)
Expand All @@ -65,15 +57,15 @@ public static LinkedHashMap<String, PintScenarioListBuilder> createModuleScenari
),
receiverStateSetup(ScenarioClass.INVALID_RECIPIENT).then(
initiateAndCloseTransferAction(PintResponseCode.BENV)
),
)/*,
receiverStateSetup(ScenarioClass.FAIL_W_503).then(
initiateTransferUnsignedFailure(503, SenderTransmissionClass.VALID_TRANSFER).thenEither(
resetScenarioClass(ScenarioClass.NO_ISSUES).then(
initiateAndCloseTransferAction(PintResponseCode.RECE)),
initiateTransferUnsignedFailure(503, SenderTransmissionClass.VALID_TRANSFER).then(
resetScenarioClass(ScenarioClass.NO_ISSUES).then(
initiateAndCloseTransferAction(PintResponseCode.RECE)))
))
))*/
),
supplySenderTransferScenarioParameters(2).thenEither(
receiverStateSetup(ScenarioClass.NO_ISSUES)
Expand All @@ -87,7 +79,7 @@ public static LinkedHashMap<String, PintScenarioListBuilder> createModuleScenari
retryTransfer(PintResponseCode.RECE, SenderTransmissionClass.VALID_TRANSFER)
)
),
resetScenarioClass(ScenarioClass.FAIL_W_503).then(
/*resetScenarioClass(ScenarioClass.FAIL_W_503).then(
transferDocumentReceiverFailure().then(
resetScenarioClass(ScenarioClass.NO_ISSUES).thenEither(
transferDocument().then(closeTransferAction(PintResponseCode.RECE)),
Expand All @@ -99,7 +91,7 @@ public static LinkedHashMap<String, PintScenarioListBuilder> createModuleScenari
)
)
)
),
),*/
transferDocument(SenderDocumentTransmissionTypeCode.CORRUPTED_DOCUMENT).then(
retryTransfer(1, SenderTransmissionClass.VALID_TRANSFER).then(transferDocument().then(closeTransferAction(PintResponseCode.RECE)))
),
Expand Down Expand Up @@ -171,31 +163,6 @@ private static PintScenarioListBuilder supplySenderTransferScenarioParameters(in
));
}

private static PintScenarioListBuilder manipulateLatestTransactionParameters() {
String sendingPlatform = SENDING_PLATFORM_PARTY_NAME.get();
String receivingPlatform = RECEIVING_PLATFORM_PARTY_NAME.get();
return new PintScenarioListBuilder(
previousAction ->
new ManipulateTransactionsAction(
receivingPlatform,
sendingPlatform,
(PintAction) previousAction
));
}

private static PintScenarioListBuilder resignLatestEntry() {
String sendingPlatform = SENDING_PLATFORM_PARTY_NAME.get();
String receivingPlatform = RECEIVING_PLATFORM_PARTY_NAME.get();
return new PintScenarioListBuilder(
previousAction ->
new ResignLatestEntryAction(
receivingPlatform,
sendingPlatform,
(PintAction) previousAction
));
}


private static PintScenarioListBuilder receiverStateSetup(ScenarioClass scenarioClass) {
String sendingPlatform = SENDING_PLATFORM_PARTY_NAME.get();
String receivingPlatform = RECEIVING_PLATFORM_PARTY_NAME.get();
Expand Down Expand Up @@ -308,6 +275,10 @@ private static PintScenarioListBuilder retryTransfer(int expectedMissingDocument
}

private static PintScenarioListBuilder retryTransfer(PintResponseCode pintResponseCode, SenderTransmissionClass senderTransmissionClass) {
return retryTransfer(pintResponseCode, senderTransmissionClass, RetryType.NO_CHANGE);
}

private static PintScenarioListBuilder retryTransfer(PintResponseCode pintResponseCode, SenderTransmissionClass senderTransmissionClass, RetryType retryType) {
String sendingPlatform = SENDING_PLATFORM_PARTY_NAME.get();
String receivingPlatform = RECEIVING_PLATFORM_PARTY_NAME.get();
return new PintScenarioListBuilder(
Expand All @@ -318,6 +289,7 @@ private static PintScenarioListBuilder retryTransfer(PintResponseCode pintRespon
(PintAction) previousAction,
pintResponseCode,
senderTransmissionClass,
retryType,
resolveMessageSchemaValidator(ENVELOPE_REQUEST_SCHEMA),
resolveMessageSchemaValidator(ENVELOPE_MANIFEST_SCHEMA),
resolveMessageSchemaValidator(ENVELOPE_TRANSFER_CHAIN_ENTRY_SCHEMA),
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ public void reset() {
super.reset();
if (previousAction != null) {
this.dspReference.set(null);
this.rspReference.set(null);
this.sspReference.set(null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ public String getHumanReadablePrompt() {
@Override
public ObjectNode asJsonNode() {
var node = super.asJsonNode()
.put("senderTransmissionClass", SenderTransmissionClass.VALID_ISSUANCE.name());
.put("senderTransmissionClass", senderTransmissionClass.name())
.put("retryType", RetryType.NO_CHANGE.name());
node.set("rsp", getRsp().toJson());
node.set("ssp", getSsp().toJson());
node.set("dsp", getDsp().toJson());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
public class PintRetryTransferAndCloseAction extends PintAction {
private final PintResponseCode responseCode;
private final SenderTransmissionClass senderTransmissionClass;
private final RetryType retryType;
private final JsonSchemaValidator requestSchemaValidator;
private final JsonSchemaValidator responseSchemaValidator;
private final JsonSchemaValidator envelopeEnvelopeSchemaValidator;
Expand All @@ -36,6 +37,7 @@ public PintRetryTransferAndCloseAction(
PintAction previousAction,
PintResponseCode responseCode,
SenderTransmissionClass senderTransmissionClass,
RetryType retryType,
JsonSchemaValidator requestSchemaValidator,
JsonSchemaValidator envelopeEnvelopeSchemaValidator,
JsonSchemaValidator envelopeTransferChainEntrySchemaValidator,
Expand All @@ -46,11 +48,12 @@ public PintRetryTransferAndCloseAction(
sendingPlatform,
receivingPlatform,
previousAction,
"RetryTransfer(%s)".formatted(responseCode.name()),
"RetryTransfer(%s, %s)".formatted(responseCode.name(), retryType.name()),
responseCode.getHttpResponseCode()
);
this.responseCode = responseCode;
this.senderTransmissionClass = senderTransmissionClass;
this.retryType = retryType;
this.requestSchemaValidator = requestSchemaValidator;
this.responseSchemaValidator = responseSchemaValidator;
this.envelopeEnvelopeSchemaValidator = envelopeEnvelopeSchemaValidator;
Expand All @@ -60,13 +63,18 @@ public PintRetryTransferAndCloseAction(

@Override
public String getHumanReadablePrompt() {
return ("Retry transfer-transaction request");
return switch (retryType) {
case NO_CHANGE -> "Retry transfer-transaction request";
case RESIGN -> "Retry the transfer-transaction request with the latest transaction entry resigned";
case MANIPULATE -> "Retry the transfer-transaction request after manipulating (and resigning) the latest transaction";
};
}

@Override
public ObjectNode asJsonNode() {
var node = super.asJsonNode()
.put("senderTransmissionClass", SenderTransmissionClass.VALID_ISSUANCE.name());
.put("senderTransmissionClass", senderTransmissionClass.name())
.put("retryType", retryType.name());
node.set("rsp", getRsp().toJson());
node.set("ssp", getSsp().toJson());
node.set("dsp", getDsp().toJson());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ public ObjectNode asJsonNode() {
.put("transportDocumentReference", this.getSsp().transportDocumentReference());
}

@Override
public boolean isInputRequired() {
return true;
}


@Override
public String getHumanReadablePrompt() {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.dcsa.conformance.standards.eblinterop.action;

public enum RetryType {
NO_CHANGE,
RESIGN,
MANIPULATE,
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public JsonNode getJsonForHumanReadablePrompt() {

@Override
public String getHumanReadablePrompt() {
return ("Scenario details");
return ("Please provide these scenario details. Additional documents required: %d".formatted(documentCount));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ public JsonNode generateSignedResponse(PintResponseCode responseCode, PayloadSig
receivedDocuments.add(checksum);
}
}
default -> {/* nothing */}
}
var signedPayload = payloadSigner.sign(unsignedPayload.toString());
return TextNode.valueOf(signedPayload);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,13 @@ private void initiateState(JsonNode actionPrompt) {
);
tdState.setScenarioClass(scenarioClass);
tdState.save(persistentMap);
var receivingParametersJson = receivingParameters.toJson();
addOperatorLogEntry(
"Prompt answer for initiateState: %s".formatted(receivingParametersJson));
asyncOrchestratorPostPartyInput(
actionPrompt.required("actionId").asText(), receivingParameters.toJson());
actionPrompt.required("actionId").asText(), receivingParametersJson);
addOperatorLogEntry(
"Finished ScenarioType");
"Finished ScenarioType setup");
}

private JsonNode generateReceiverParty(SenderScenarioParameters ssp, ScenarioClass scenarioClass, String expectedRecipient) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,9 @@ protected void doReset() {}
protected Map<Class<? extends ConformanceAction>, Consumer<JsonNode>> getActionPromptHandlers() {
return Map.ofEntries(
Map.entry(SenderSupplyScenarioParametersAction.class, this::supplyScenarioParameters),
Map.entry(ResignLatestEntryAction.class, this::resignLatestEntry),
Map.entry(PintInitiateAndCloseTransferAction.class, this::initiateTransferRequest),
Map.entry(PintInitiateTransferAction.class, this::initiateTransferRequest),
Map.entry(PintInitiateTransferUnsignedErrorAction.class, this::initiateTransferRequest),
Map.entry(ManipulateTransactionsAction.class, this::manipulateTransactions),
Map.entry(PintTransferAdditionalDocumentAction.class, this::transferActionDocument),
Map.entry(PintTransferAdditionalDocumentFailureAction.class, this::transferActionDocument),
Map.entry(PintRetryTransferAction.class, this::retryTransfer),
Expand Down Expand Up @@ -149,26 +147,11 @@ private void supplyScenarioParameters(JsonNode actionPrompt) {
"BOLE",
payloadSigner.getPublicKeyInPemFormat(),
carrierPayloadSigner.getPublicKeyInPemFormat()
);
asyncOrchestratorPostPartyInput(
actionPrompt.required("actionId").asText(), scenarioParameters.toJson());
).toJson();
addOperatorLogEntry(
"Provided ScenarioParameters: %s".formatted(scenarioParameters));
}

private void resignLatestEntry(JsonNode actionPrompt) {
log.info(
"EblInteropSendingPlatform.resignLatestEntry(%s)"
.formatted(actionPrompt.toPrettyString()));
var ssp = SenderScenarioParameters.fromJson(actionPrompt.required("ssp"));
var tdr = ssp.transportDocumentReference();
var sendingState = TDSendingState.load(persistentMap, tdr);
sendingState.resignLatestEntry(payloadSigner);
sendingState.save(persistentMap);
"Prompt answer for supplyScenarioParameters: %s".formatted(scenarioParameters.toString()));
asyncOrchestratorPostPartyInput(
actionPrompt.required("actionId").asText(), OBJECT_MAPPER.createObjectNode());
addOperatorLogEntry(
"Resigned latest entry for document: %s".formatted(tdr));
actionPrompt.required("actionId").asText(), scenarioParameters);
}

private void manipulateTransactions(JsonNode actionPrompt) {
Expand Down Expand Up @@ -242,8 +225,15 @@ private void retryTransfer(JsonNode actionPrompt) {
log.info("EblInteropSendingPlatform.retryTransfer(%s)".formatted(actionPrompt.toPrettyString()));
var ssp = SenderScenarioParameters.fromJson(actionPrompt.required("ssp"));
var tdr = ssp.transportDocumentReference();
var retryType = RetryType.valueOf(actionPrompt.required("retryType").asText());
var rsp = ReceiverScenarioParameters.fromJson(actionPrompt.required("rsp"));
var sendingState = TDSendingState.load(persistentMap, tdr);

switch (retryType) {
case RESIGN -> sendingState.resignLatestEntry(payloadSigner);
case MANIPULATE -> sendingState.manipulateLatestTransaction(payloadSigner, rsp);
}

var body = OBJECT_MAPPER.createObjectNode();
var tdPayload = loadTDR(tdr);
body.set("transportDocument", tdPayload);
Expand All @@ -264,7 +254,7 @@ private void retryTransfer(JsonNode actionPrompt) {
}
sendingState.save(persistentMap);
addOperatorLogEntry(
"Re-sent an eBL with transportDocumentReference '%s'".formatted(tdr));
"Re-sent an eBL with transportDocumentReference '%s' with type: %s".formatted(tdr, retryType.name()));
}

private ObjectNode loadTDR(String tdr) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ private static Stream<Arguments> testStandards() {
Arguments.of("JIT", true),
Arguments.of("OVS", false),
Arguments.of("OVS", true),
// DT-1796, PINT issue: Unknown TD Reference: j5k./hY,wZNqNDSEmJ`
// Arguments.of("PINT", true),
// Arguments.of("PINT", false),
Arguments.of("PINT", false),
Arguments.of("PINT", true),
Arguments.of("TnT", false),
Arguments.of("TnT", true),
Arguments.of("eBL Issuance", false),
Expand Down
Loading

0 comments on commit ade83a3

Please sign in to comment.