diff --git a/extensions/common/api/management-api-json-ld-context/src/main/resources/document/management-context-v1.jsonld b/extensions/common/api/management-api-json-ld-context/src/main/resources/document/management-context-v1.jsonld index d8227fe8b7..e0eb082b4e 100644 --- a/extensions/common/api/management-api-json-ld-context/src/main/resources/document/management-context-v1.jsonld +++ b/extensions/common/api/management-api-json-ld-context/src/main/resources/document/management-context-v1.jsonld @@ -7,7 +7,8 @@ "DataAddress": { "@id": "edc:DataAddress", "@context": { - "type": "edc:type" + "type": "edc:type", + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" } }, "ContractDefinition": "edc:ContractDefinition", @@ -114,7 +115,13 @@ "consumerId": "edc:consumerId", "contractSigningDate": "edc:contractSigningDate", "contractId": "edc:contractId", - "dataDestination": "edc:dataDestination", + "dataDestination": { + "@id": "edc:dataDestination", + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + } + }, + "transferType": "edc:transferType", "correlationId": "edc:correlationId", "stateTimestamp": "edc:stateTimestamp", "value": "edc:value", diff --git a/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/SerdeIntegrationTest.java b/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/SerdeIntegrationTest.java index 446349fe0f..5cae1e91f6 100644 --- a/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/SerdeIntegrationTest.java +++ b/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/SerdeIntegrationTest.java @@ -66,6 +66,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static jakarta.json.Json.createObjectBuilder; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.MANAGEMENT_API_CONTEXT; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.MANAGEMENT_API_SCOPE; @@ -77,6 +78,7 @@ import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.createEdrEntry; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.createPolicyEvaluationPlan; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.createTransferProcess; +import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.dataAddressObject; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.inForceDatePermission; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.policyDefinitionObject; import static org.eclipse.edc.connector.api.management.jsonld.serde.TestFunctions.policyEvaluationPlanRequest; @@ -299,6 +301,27 @@ void de_TransferRequest() { assertThat(transferRequest.getPrivateProperties()).containsEntry(EDC_NAMESPACE + "fooPrivate", "bar"); assertThat(transferRequest.getProtocol()).isEqualTo(inputObject.getString("protocol")); assertThat(transferRequest.getCallbackAddresses()).hasSize(inputObject.getJsonArray("callbackAddresses").size()); + assertThat(transferRequest.getTransferType()).isEqualTo(inputObject.getString("transferType")); + } + + @Test + void de_TransferRequest_withoutDataAddressType() { + var dataDestination = createObjectBuilder() + .add("type", "type").build(); + + var inputObject = transferRequestObject(dataDestination); + var transferRequest = deserialize(inputObject, TransferRequest.class); + + assertThat(transferRequest).isNotNull(); + assertThat(transferRequest.getId()).isEqualTo(inputObject.getString(ID)); + assertThat(transferRequest.getCounterPartyAddress()).isEqualTo(inputObject.getString("counterPartyAddress")); + assertThat(transferRequest.getContractId()).isEqualTo(inputObject.getString("contractId")); + assertThat(transferRequest.getDataDestination()).extracting(DataAddress::getType).isEqualTo(inputObject.getJsonObject("dataDestination").getString("type")); + assertThat(transferRequest.getPrivateProperties()).containsEntry(EDC_NAMESPACE + "fooPrivate", "bar"); + assertThat(transferRequest.getProtocol()).isEqualTo(inputObject.getString("protocol")); + assertThat(transferRequest.getCallbackAddresses()).hasSize(inputObject.getJsonArray("callbackAddresses").size()); + assertThat(transferRequest.getTransferType()).isEqualTo(inputObject.getString("transferType")); + } @@ -431,7 +454,8 @@ public Stream provideArguments(ExtensionContext context) { Arguments.of(contractDefinitionObject(), ContractDefinition.class, null), Arguments.of(secretObject(), Secret.class, null), Arguments.of(querySpecObject(), QuerySpec.class, null), - Arguments.of(policyDefinitionObject(), PolicyDefinition.class, mapper) + Arguments.of(policyDefinitionObject(), PolicyDefinition.class, mapper), + Arguments.of(dataAddressObject(), DataAddress.class, null) ); } diff --git a/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/TestFunctions.java b/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/TestFunctions.java index d9d75fbb1a..68db53abdc 100644 --- a/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/TestFunctions.java +++ b/extensions/common/api/management-api-json-ld-context/src/test/java/org/eclipse/edc/connector/api/management/jsonld/serde/TestFunctions.java @@ -100,6 +100,16 @@ public static JsonObject assetObject() { .build(); } + public static JsonObject dataAddressObject() { + return createObjectBuilder() + .add(CONTEXT, createContextBuilder().build()) + .add(TYPE, "DataAddress") + .add("type", "address-type") + .add("propertyOne", "foo") + .add("propertyTwo", "bar") + .build(); + } + public static JsonObject contractDefinitionObject() { var criterion = Json.createObjectBuilder() .add(TYPE, "Criterion") @@ -163,12 +173,18 @@ public static JsonObject contractRequestObject() { } public static JsonObject transferRequestObject() { - var propertiesJson = Json.createObjectBuilder().add("foo", "bar").build(); - var privatePropertiesJson = Json.createObjectBuilder().add("fooPrivate", "bar").build(); var dataDestination = createObjectBuilder() .add(TYPE, "DataAddress") .add("type", "type").build(); + return transferRequestObject(dataDestination); + } + + public static JsonObject transferRequestObject(JsonObject dataDestination) { + var propertiesJson = Json.createObjectBuilder().add("foo", "bar").build(); + var privatePropertiesJson = Json.createObjectBuilder().add("fooPrivate", "bar").build(); + + return createObjectBuilder() .add(TYPE, "TransferRequest") .add(CONTEXT, createContextBuilder().build()) @@ -180,6 +196,7 @@ public static JsonObject transferRequestObject() { .add("privateProperties", privatePropertiesJson) .add("protocol", "protocol") .add("callbackAddresses", createCallbackAddress()) + .add("transferType", "myTransferType") .build(); }