From 34988ccd57b8bf4b846305990d11e8016cc65180 Mon Sep 17 00:00:00 2001 From: Ernst-Christoph Schrewe Date: Mon, 11 Mar 2024 10:15:23 +0100 Subject: [PATCH] fix: review changes --- .../DataInjectionCommandLineRunner.java | 4 - .../logic/util/DtrRequestBodyBuilder.java | 104 +++++++----------- .../backend/common/util/VariablesService.java | 6 + .../MaterialPartnerRelationServiceImpl.java | 16 +-- .../src/main/resources/application.properties | 1 + .../src/test/resources/application.properties | 1 + charts/puris/README.md | 1 + .../puris/templates/backend-deployment.yaml | 2 + charts/puris/values.yaml | 4 + .../config/customer/puris-backend.properties | 1 + .../config/supplier/puris-backend.properties | 1 + 11 files changed, 62 insertions(+), 79 deletions(-) diff --git a/backend/src/main/java/org/eclipse/tractusx/puris/backend/DataInjectionCommandLineRunner.java b/backend/src/main/java/org/eclipse/tractusx/puris/backend/DataInjectionCommandLineRunner.java index f87b7669..6c83c59b 100644 --- a/backend/src/main/java/org/eclipse/tractusx/puris/backend/DataInjectionCommandLineRunner.java +++ b/backend/src/main/java/org/eclipse/tractusx/puris/backend/DataInjectionCommandLineRunner.java @@ -193,10 +193,6 @@ private void setupCustomerRole() throws JsonProcessingException { log.info(mySelf.toString()); - MaterialPartnerRelation newMpr = new MaterialPartnerRelation(centralControlUnitEntity, supplierPartner, "FOO42", false, true); - newMpr.setPartnerCXNumber("860fb504-b884-4009-9313-c6fb6cdcffff"); - mprService.create(newMpr); - var builder = MaterialItemStock.builder(); var materialItemStock = builder.partner(supplierPartner) .material(semiconductorMaterial) diff --git a/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/ddtr/logic/util/DtrRequestBodyBuilder.java b/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/ddtr/logic/util/DtrRequestBodyBuilder.java index 4b71d5dd..90839bcf 100644 --- a/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/ddtr/logic/util/DtrRequestBodyBuilder.java +++ b/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/ddtr/logic/util/DtrRequestBodyBuilder.java @@ -70,24 +70,24 @@ public JsonNode createMaterialRegistrationRequestBody(MaterialPartnerRelation ma var specificAssetIdsArray = objectMapper.createArrayNode(); body.set("specificAssetIds", specificAssetIdsArray); - var partnerRefNode = List.of(getReferenceObject(materialPartnerRelation.getPartner().getBpnl())); + var partnerRefNode = List.of(createReferenceObject(materialPartnerRelation.getPartner().getBpnl())); - var digitalTwinObject = getDigitalTwinObject(partnerRefNode); + var digitalTwinObject = createDigitalTwinObject(partnerRefNode); specificAssetIdsArray.add(digitalTwinObject); - var manufacturerIdObject = getManufacturerIdObject(materialPartnerRelation.getPartner().getBpnl(), partnerRefNode); + var manufacturerIdObject = createManufacturerIdObject(materialPartnerRelation.getPartner().getBpnl(), partnerRefNode); specificAssetIdsArray.add(manufacturerIdObject); - var manufacturerPartIdObject = getManufacturerPartIdObject(materialPartnerRelation.getPartnerMaterialNumber(), partnerRefNode); + var manufacturerPartIdObject = createManufacturerPartIdObject(materialPartnerRelation.getPartnerMaterialNumber(), partnerRefNode); specificAssetIdsArray.add(manufacturerPartIdObject); - var customerPartIdObject = getCustomerPartIdObject(material.getOwnMaterialNumber(), materialPartnerRelation.getPartner().getBpnl()); + var customerPartIdObject = createCustomerPartIdObject(material.getOwnMaterialNumber(), materialPartnerRelation.getPartner().getBpnl()); specificAssetIdsArray.add(customerPartIdObject); var submodelDescriptorsArray = objectMapper.createArrayNode(); body.set("submodelDescriptors", submodelDescriptorsArray); - var itemStockRequestSubmodelObject = getItemStockSubmodelObject(); + var itemStockRequestSubmodelObject = createItemStockSubmodelObject(); submodelDescriptorsArray.add(itemStockRequestSubmodelObject); log.info("Created body for material " + material.getOwnMaterialNumber() + "\n" + body.toPrettyString()); return body; @@ -108,16 +108,16 @@ public JsonNode createProductRegistrationRequestBody(Material material, String p var specificAssetIdsArray = objectMapper.createArrayNode(); body.set("specificAssetIds", specificAssetIdsArray); mprs = mprs.stream().filter(MaterialPartnerRelation::isPartnerBuysMaterial).filter(mpr -> mpr.getMaterial().equals(material)).toList(); - var partnerRefObjects = mprs.stream().map(mpr -> getReferenceObject(mpr.getPartner().getBpnl())).toList(); + var partnerRefObjects = mprs.stream().map(mpr -> createReferenceObject(mpr.getPartner().getBpnl())).toList(); if (material.isProductFlag()) { - var digitalTwinObject = getDigitalTwinObject(partnerRefObjects); + var digitalTwinObject = createDigitalTwinObject(partnerRefObjects); specificAssetIdsArray.add(digitalTwinObject); - var manufacturerPartIdObject = getManufacturerPartIdObject(material.getOwnMaterialNumber(), partnerRefObjects); + var manufacturerPartIdObject = createManufacturerPartIdObject(material.getOwnMaterialNumber(), partnerRefObjects); specificAssetIdsArray.add(manufacturerPartIdObject); - var manufacturerIdObject = getManufacturerIdObject(variablesService.getOwnBpnl(), partnerRefObjects); + var manufacturerIdObject = createManufacturerIdObject(variablesService.getOwnBpnl(), partnerRefObjects); specificAssetIdsArray.add(manufacturerIdObject); for (var mpr : mprs) { - var customerPartIdObject = getCustomerPartIdObject(mpr.getPartnerMaterialNumber(), mpr.getPartner().getBpnl()); + var customerPartIdObject = createCustomerPartIdObject(mpr.getPartnerMaterialNumber(), mpr.getPartner().getBpnl()); specificAssetIdsArray.add(customerPartIdObject); } } else { @@ -128,88 +128,58 @@ public JsonNode createProductRegistrationRequestBody(Material material, String p var submodelDescriptorsArray = objectMapper.createArrayNode(); body.set("submodelDescriptors", submodelDescriptorsArray); - var itemStockRequestSubmodelObject = getItemStockSubmodelObject(); + var itemStockRequestSubmodelObject = createItemStockSubmodelObject(); submodelDescriptorsArray.add(itemStockRequestSubmodelObject); log.info("Created body for product " + material.getOwnMaterialNumber() + "\n" + body.toPrettyString()); return body; } - private ObjectNode getManufacturerPartIdObject(String manufacturerPartId, List refObjects) { - var manufacturerPartIdObject = objectMapper.createObjectNode(); - manufacturerPartIdObject.put("name", MANUFACTURER_PART_ID); - manufacturerPartIdObject.put("value", manufacturerPartId); + + private ObjectNode createGenericIdObject(String name, String id, List refObjects) { + var idObject = objectMapper.createObjectNode(); + idObject.put("name", name); + idObject.put("value", id); ObjectNode externalSubjectIdObject = objectMapper.createObjectNode(); - manufacturerPartIdObject.set("externalSubjectId", externalSubjectIdObject); + idObject.set("externalSubjectId", externalSubjectIdObject); externalSubjectIdObject.put("type", "ExternalReference"); ArrayNode keysArray = objectMapper.createArrayNode(); externalSubjectIdObject.set("keys", keysArray); for (var refObject : refObjects) { keysArray.add(refObject); } - keysArray.add(getOwnReferenceObject()); - return manufacturerPartIdObject; + keysArray.add(createOwnReferenceObject()); + return idObject; } - private ObjectNode getManufacturerIdObject(String manufacturerId, List refObjects) { - var manufacturerIdObject = objectMapper.createObjectNode(); - manufacturerIdObject.put("name", MANUFACTURER_ID); - manufacturerIdObject.put("value", manufacturerId); - ObjectNode externalSubjectIdObject = objectMapper.createObjectNode(); - manufacturerIdObject.set("externalSubjectId", externalSubjectIdObject); - externalSubjectIdObject.put("type", "ExternalReference"); - ArrayNode keysArray = objectMapper.createArrayNode(); - externalSubjectIdObject.set("keys", keysArray); - for (var refObject : refObjects) { - keysArray.add(refObject); - } - keysArray.add(getOwnReferenceObject()); - return manufacturerIdObject; + private ObjectNode createManufacturerPartIdObject(String manufacturerPartId, List refObjects) { + return createGenericIdObject(MANUFACTURER_PART_ID, manufacturerPartId, refObjects); } - private ObjectNode getCustomerPartIdObject(String customerPartId, String customerBpnl) { - var customerPartIdObject = objectMapper.createObjectNode(); - customerPartIdObject.put("name", CUSTOMER_PART_ID); - customerPartIdObject.put("value", customerPartId); - ObjectNode externalSubjectIdObject = objectMapper.createObjectNode(); - customerPartIdObject.set("externalSubjectId", externalSubjectIdObject); - externalSubjectIdObject.put("type", "ExternalReference"); - ArrayNode keysArray = objectMapper.createArrayNode(); - externalSubjectIdObject.set("keys", keysArray); - keysArray.add(getOwnReferenceObject()); - keysArray.add(getReferenceObject(customerBpnl)); - return customerPartIdObject; + private ObjectNode createManufacturerIdObject(String manufacturerId, List refObjects) { + return createGenericIdObject(MANUFACTURER_ID, manufacturerId, refObjects); } - private ObjectNode getReferenceObject(String bpnl) { + private ObjectNode createCustomerPartIdObject(String customerPartId, String customerBpnl) { + return createGenericIdObject(CUSTOMER_PART_ID, customerPartId, List.of(createReferenceObject(customerBpnl))); + } + + private JsonNode createDigitalTwinObject(List refNodes) { + return createGenericIdObject(DIGITAL_TWIN_TYPE, "PartType", refNodes); + } + + private ObjectNode createReferenceObject(String bpnl) { var refObject = objectMapper.createObjectNode(); refObject.put("type", "GlobalReference"); refObject.put("value", bpnl); return refObject; } - private ObjectNode getOwnReferenceObject() { - return getReferenceObject(variablesService.getOwnBpnl()); - } - - - private JsonNode getDigitalTwinObject(List refNodes) { - var digitalTwinObject = objectMapper.createObjectNode(); - digitalTwinObject.put("name", DIGITAL_TWIN_TYPE); - digitalTwinObject.put("value", "PartType"); - var externalSubjectIdObject = objectMapper.createObjectNode(); - digitalTwinObject.set("externalSubjectId", externalSubjectIdObject); - externalSubjectIdObject.put("type", "ExternalReference"); - var keysArray = objectMapper.createArrayNode(); - externalSubjectIdObject.set("keys", keysArray); - keysArray.add(getOwnReferenceObject()); - for (var refNode : refNodes) { - keysArray.add(refNode); - } - return digitalTwinObject; + private ObjectNode createOwnReferenceObject() { + return createReferenceObject(variablesService.getOwnBpnl()); } - private JsonNode getItemStockSubmodelObject() { + private JsonNode createItemStockSubmodelObject() { var itemStockRequestSubmodelObject = objectMapper.createObjectNode(); itemStockRequestSubmodelObject.put("id", UUID.randomUUID().toString()); @@ -230,7 +200,7 @@ private JsonNode getItemStockSubmodelObject() { submodel3EndpointObject.put("interface", "SUBMODEL-3.0"); var protocolInformationObject = objectMapper.createObjectNode(); submodel3EndpointObject.set("protocolInformation", protocolInformationObject); - protocolInformationObject.put("href", variablesService.getEdcProtocolUrl()); + protocolInformationObject.put("href", variablesService.getEdcDataplanePublicUrl()); protocolInformationObject.put("endpointProtocol", "HTTP"); var endpointProtocolVersionArray = objectMapper.createArrayNode(); protocolInformationObject.set("endpointProtocolVersion", endpointProtocolVersionArray); diff --git a/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/util/VariablesService.java b/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/util/VariablesService.java index edc893b1..24807e94 100644 --- a/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/util/VariablesService.java +++ b/backend/src/main/java/org/eclipse/tractusx/puris/backend/common/util/VariablesService.java @@ -139,6 +139,12 @@ public class VariablesService { * Your control plane's protocol url */ private String edcProtocolUrl; + @Value("${edc.dataplane.public.url}") + /** + * Your data plane's public url + */ + private String edcDataplanePublicUrl; + @Value("${own.bpnl}") /** diff --git a/backend/src/main/java/org/eclipse/tractusx/puris/backend/masterdata/logic/service/MaterialPartnerRelationServiceImpl.java b/backend/src/main/java/org/eclipse/tractusx/puris/backend/masterdata/logic/service/MaterialPartnerRelationServiceImpl.java index e7a3d9f5..13e2d31f 100644 --- a/backend/src/main/java/org/eclipse/tractusx/puris/backend/masterdata/logic/service/MaterialPartnerRelationServiceImpl.java +++ b/backend/src/main/java/org/eclipse/tractusx/puris/backend/masterdata/logic/service/MaterialPartnerRelationServiceImpl.java @@ -115,19 +115,19 @@ public Boolean call() throws Exception { stream().filter(mpr -> mpr.getPartnerCXNumber() != null).toList(); boolean result = dtrAdapterService.updateProduct(materialPartnerRelation.getMaterial(), allCustomers); if (result) { - log.info("Updated product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber()); + log.info("Updated product ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber()); } else { - log.warn("Update failed for product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries); + log.warn("Update of product ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries); } success &= result; } if (materialPartnerRelation.getMaterial().isMaterialFlag()) { boolean result = dtrAdapterService.updateMaterialAtDtr(materialPartnerRelation); if (result) { - log.info("Updated material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + + log.info("Updated material ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " and supplier partner " + materialPartnerRelation.getPartner().getBpnl()); } else { - log.warn("Failed Update for material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + + log.warn("Update of material ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " and supplier partner " + materialPartnerRelation.getPartner().getBpnl() + " Retries left: " + retries); } success &= result; @@ -142,9 +142,9 @@ public Boolean call() throws Exception { stream().filter(mpr -> mpr.getPartnerCXNumber() != null).toList(); boolean result = dtrAdapterService.updateProduct(materialPartnerRelation.getMaterial(), allCustomers); if (result) { - log.info("Updated product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber()); + log.info("Updated product ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber()); } else { - log.warn("Update failed for product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries); + log.warn("Update of product ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries); } success &= result; @@ -152,10 +152,10 @@ public Boolean call() throws Exception { if (materialPartnerRelation.getMaterial().isMaterialFlag()) { boolean result = dtrAdapterService.registerMaterialAtDtr(materialPartnerRelation); if (result) { - log.info("Created material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + + log.info("Created material ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " and supplier partner " + materialPartnerRelation.getPartner().getBpnl()); } else { - log.warn("Failed creation for material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + + log.warn("Creation of material ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " and supplier partner " + materialPartnerRelation.getPartner().getBpnl() + " Retries left: " + retries); } success &= result; diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index a6d596ec..9243ea17 100755 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -36,6 +36,7 @@ server.servlet.context-path=${API_ROOTDIR:/catena} edc.controlplane.key=${EDC_CONTROLPLANE_KEY:password} edc.controlplane.management.url=${EDC_CONTROLPLANE_MANAGEMENT_URL:http://customer-control-plane:8181/management} edc.controlplane.protocol.url=${EDC_CONTROLPLANE_PROTOCOL_URL:http://customer-control-plane:8184/api/v1/dsp} +edc.dataplane.public.url=${EDC_DATAPLANE_PUBLIC_URL:http://customer-data-plane:8285/api/public/} # Jackson (JSON) #spring.jackson.default-property-inclusion=non_empty diff --git a/backend/src/test/resources/application.properties b/backend/src/test/resources/application.properties index e3a3ab2b..66860332 100755 --- a/backend/src/test/resources/application.properties +++ b/backend/src/test/resources/application.properties @@ -27,6 +27,7 @@ server.servlet.context-path=${API_ROOTDIR:/catena} edc.controlplane.key=${EDC_CONTROLPLANE_KEY:password} edc.controlplane.management.url=${EDC_CONTROLPLANE_MANAGEMENT_URL:http://customer-control-plane:8181/management} edc.controlplane.protocol.url=${EDC_CONTROLPLANE_PROTOCOL_URL:http://customer-control-plane:8184/api/v1/dsp} +edc.dataplane.public.url=${EDC_DATAPLANE_PUBLIC_URL:http://customer-data-plane:8285/api/public/} # Jackson (JSON) #spring.jackson.default-property-inclusion=non_empty diff --git a/charts/puris/README.md b/charts/puris/README.md index b4466fa2..51cf7681 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -65,6 +65,7 @@ $ helm install puris --namespace puris --create-namespace . | backend.puris.datasource.username | string | `"db-user"` | Username of the database. Ignored if postgres.enabled is true. | | backend.puris.demonstrator.role | string | `nil` | Current role of the PURIS demonstrator. Default value should be empty. Can be set to "customer" or "supplier" to enable demonstration setup | | backend.puris.dtr.url | string | `"http://localhost:4243"` | Endpoint for DTR | +| backend.puris.edc.controlplane.dataplane.public.url | string | `"https://your-data-plane:8285/api/public/"` | Url of one of your data plane's public api | | backend.puris.edc.controlplane.host | string | `"172.17.0.2"` | | | backend.puris.edc.controlplane.key | string | `"password"` | Key for the EDC control plane | | backend.puris.edc.controlplane.management.url | string | `"https:/your-edc-address:8181/management"` | Url to the EDC controlplane management of the edc | diff --git a/charts/puris/templates/backend-deployment.yaml b/charts/puris/templates/backend-deployment.yaml index 8e6761c2..4c8c7b8d 100644 --- a/charts/puris/templates/backend-deployment.yaml +++ b/charts/puris/templates/backend-deployment.yaml @@ -96,6 +96,8 @@ spec: value: "{{ .Values.backend.puris.edc.controlplane.management.url }}" - name: EDC_CONTROLPLANE_PROTOCOL_URL value: "{{ .Values.backend.puris.edc.controlplane.protocol.url }}" + - name: EDC_DATAPLANE_PUBLIC_URL + value: "{{ .Values.backend.puris.edc.dataplane.public.url }}" - name: OWN_BPNA value: "{{ .Values.backend.puris.own.bpna }}" - name: OWN_BPNL diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index ef57e970..f54fe4cf 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -375,6 +375,10 @@ backend: url: "https://your-edc-address:8184/api/v1/dsp" # -- Key for the EDC control plane key: "password" + dataplane: + public: + # -- Url of one of your data plane's public api + url: "https://your-data-plane:8285/api/public/" own: # -- Own BPNL of the EDC bpnl: BPNL4444444444XX diff --git a/local/tractus-x-edc/config/customer/puris-backend.properties b/local/tractus-x-edc/config/customer/puris-backend.properties index 78c21f99..75d33430 100644 --- a/local/tractus-x-edc/config/customer/puris-backend.properties +++ b/local/tractus-x-edc/config/customer/puris-backend.properties @@ -17,6 +17,7 @@ puris.generatematerialcatenaxid=true edc.controlplane.key=${EDC_API_PW} edc.controlplane.management.url=http://customer-control-plane:8181/management edc.controlplane.protocol.url=http://customer-control-plane:8184/api/v1/dsp +edc.dataplane.public.url=http://customer-data-plane:8285/api/public/ own.bpnl=BPNL4444444444XX own.name=Control Unit Creator Inc. diff --git a/local/tractus-x-edc/config/supplier/puris-backend.properties b/local/tractus-x-edc/config/supplier/puris-backend.properties index e37b49e9..9dffbda7 100644 --- a/local/tractus-x-edc/config/supplier/puris-backend.properties +++ b/local/tractus-x-edc/config/supplier/puris-backend.properties @@ -17,6 +17,7 @@ puris.generatematerialcatenaxid=true edc.controlplane.key=${EDC_API_PW} edc.controlplane.management.url=http://supplier-control-plane:9181/management edc.controlplane.protocol.url=http://supplier-control-plane:9184/api/v1/dsp +edc.dataplane.public.url=http://supplier-data-plane:9285/api/public/ own.bpnl=BPNL1234567890ZZ own.name=Semiconductor Supplier Inc.