From 38091807ec0cbcf15b0de9409ac45064c067410b Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Tue, 18 Jul 2023 10:24:13 +0200 Subject: [PATCH 1/6] fix(irs-api): [TRI-1408] Correct Swagger API documentation for ESS API --- .../irs/configuration/OpenApiExamples.java | 40 +++++++++++++++++++ .../ess/controller/EssController.java | 2 +- .../ess/service/NotificationSummary.java | 6 +++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java index f1e95ed425..51a8cbb17a 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java @@ -29,10 +29,12 @@ import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.examples.Example; +import org.eclipse.tractusx.ess.service.NotificationSummary; import org.eclipse.tractusx.irs.component.AsyncFetchedItems; import org.eclipse.tractusx.irs.component.BatchResponse; import org.eclipse.tractusx.irs.component.BatchOrderResponse; import org.eclipse.tractusx.irs.component.Bpn; +import org.eclipse.tractusx.irs.component.FetchedItems; import org.eclipse.tractusx.irs.component.GlobalAssetIdentification; import org.eclipse.tractusx.irs.component.Job; import org.eclipse.tractusx.irs.component.JobErrorDetails; @@ -110,6 +112,7 @@ public void createExamples(final Components components) { .withStatusCode(HttpStatus.NOT_FOUND) .build())); components.addExamples("complete-job-result", createCompleteJobResult()); + components.addExamples("complete-ess-job-result", createCompleteEssJobResult()); components.addExamples("complete-order-result", createCompleteOrderResult()); components.addExamples("complete-batch-result", createCompleteBatchResult()); components.addExamples("job-result-without-uncompleted-result-tree", createJobResultWithoutTree()); @@ -242,6 +245,43 @@ private Example createCompleteJobResult() { .build()); } + private Example createCompleteEssJobResult() { + final Jobs essJobsJobs = Jobs.builder() + .job(Job.builder() + .id(UUID.fromString(JOB_ID)) + .globalAssetId(createGAID(GLOBAL_ASSET_ID)) + .state(JobState.COMPLETED) + .owner("") + .createdOn(EXAMPLE_ZONED_DATETIME) + .startedOn(EXAMPLE_ZONED_DATETIME) + .lastModifiedOn(EXAMPLE_ZONED_DATETIME) + .completedOn(EXAMPLE_ZONED_DATETIME) + .owner("") + .summary(createSummary()) + .parameter(createJobParameter()) + .exception(createJobException()) + .build()) + .relationships(List.of(createRelationship())) + .shells(List.of(createShell())) + .tombstone(createTombstone()) + .submodel(createEssSubmodel()) + .bpn(Bpn.withManufacturerId("BPNL00000003AYRE").updateManufacturerName("OEM A")) + .build(); + final NotificationSummary newSummary = new NotificationSummary( + AsyncFetchedItems.builder().running(0).completed(3).failed(0).build(), + FetchedItems.builder().completed(3).failed(0).build(), 6, 6); + final Job job = essJobsJobs.getJob().toBuilder().summary(newSummary).build(); + return toExample(essJobsJobs.toBuilder().job(job).build()); + } + + private Submodel createEssSubmodel() { + return Submodel.builder() + .aspectType("supply_chain_impacted") + .identification(SUBMODEL_IDENTIFICATION) + .payload(Map.of("supplyChainImpacted", "YES")) + .build(); + } + private Example createCompleteOrderResult() { return toExample(BatchOrderResponse.builder() .orderId(UUID_ID) diff --git a/irs-ess/src/main/java/org/eclipse/tractusx/ess/controller/EssController.java b/irs-ess/src/main/java/org/eclipse/tractusx/ess/controller/EssController.java index b71f5bb944..35c615ecf3 100644 --- a/irs-ess/src/main/java/org/eclipse/tractusx/ess/controller/EssController.java +++ b/irs-ess/src/main/java/org/eclipse/tractusx/ess/controller/EssController.java @@ -119,7 +119,7 @@ public JobHandle registerBPNInvestigation(final @Valid @RequestBody RegisterBpnI content = { @Content(mediaType = APPLICATION_JSON_VALUE, schema = @Schema(implementation = Jobs.class), examples = @ExampleObject(name = "complete", - ref = "#/components/examples/complete-job-result")) + ref = "#/components/examples/complete-ess-job-result")) }), @ApiResponse(responseCode = "400", description = "Return job failed.", content = { @Content(mediaType = APPLICATION_JSON_VALUE, diff --git a/irs-ess/src/main/java/org/eclipse/tractusx/ess/service/NotificationSummary.java b/irs-ess/src/main/java/org/eclipse/tractusx/ess/service/NotificationSummary.java index 683e61ba1d..4c58c35ee8 100644 --- a/irs-ess/src/main/java/org/eclipse/tractusx/ess/service/NotificationSummary.java +++ b/irs-ess/src/main/java/org/eclipse/tractusx/ess/service/NotificationSummary.java @@ -46,6 +46,12 @@ public NotificationSummary(final AsyncFetchedItems asyncFetchedItems, final Fetc super(asyncFetchedItems, bpnLookups); this.notifications = notificationItems; } + + public NotificationSummary(final AsyncFetchedItems asyncFetchedItems, final FetchedItems bpnLookups, + final Integer sentNotification, final Integer receivedNotification) { + super(asyncFetchedItems, bpnLookups); + this.notifications = new NotificationItems(sentNotification, receivedNotification); + } } /** From 5b86b8e2fbb65fce2fb795c05a4f7e5695dba987 Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Wed, 19 Jul 2023 09:38:13 +0200 Subject: [PATCH 2/6] fix(irs-api): [TRI-1408] Correct Swagger API documentation for ESS API - dummy BPN --- .../org/eclipse/tractusx/irs/configuration/OpenApiExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java index 51a8cbb17a..39a71959f7 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java @@ -265,7 +265,7 @@ private Example createCompleteEssJobResult() { .shells(List.of(createShell())) .tombstone(createTombstone()) .submodel(createEssSubmodel()) - .bpn(Bpn.withManufacturerId("BPNL00000003AYRE").updateManufacturerName("OEM A")) + .bpn(Bpn.withManufacturerId("BPNL00000003AAXX").updateManufacturerName("AB CD")) .build(); final NotificationSummary newSummary = new NotificationSummary( AsyncFetchedItems.builder().running(0).completed(3).failed(0).build(), From a617f8dc3e4f4ce4a3f28b5c46d7095589c77770 Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:53:36 +0200 Subject: [PATCH 3/6] fix(ess-api): [TRI-1408] Correct Swagger API documentation for ESS API - fix magic string and tests --- docs/src/api/irs-v1.0.yaml | 107 +++++++++++++++++- .../irs/configuration/OpenApiExamples.java | 10 +- 2 files changed, 113 insertions(+), 4 deletions(-) diff --git a/docs/src/api/irs-v1.0.yaml b/docs/src/api/irs-v1.0.yaml index fcd7538030..77d898b9eb 100644 --- a/docs/src/api/irs-v1.0.yaml +++ b/docs/src/api/irs-v1.0.yaml @@ -84,7 +84,7 @@ paths: application/json: examples: complete: - $ref: '#/components/examples/complete-job-result' + $ref: '#/components/examples/complete-ess-job-result' schema: $ref: '#/components/schemas/Jobs' description: Return job with item graph for the requested id. @@ -939,6 +939,111 @@ components: orderId: f253718e-a270-4367-901b-9d50d9bd8462 startedOn: 2022-02-03T14:48:54.709Z totalJobs: 1 + complete-ess-job-result: + value: + bpns: + - manufacturerId: BPNL00000003AAXX + manufacturerName: AB CD + job: + completedOn: 2022-02-03T14:48:54.709Z + createdOn: 2022-02-03T14:48:54.709Z + exception: + errorDetail: Timeout while requesting Digital Registry + exception: IrsTimeoutException + exceptionDate: 2022-02-03T14:48:54.709Z + globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0 + id: e5347c88-a921-11ec-b909-0242ac120002 + lastModifiedOn: 2022-02-03T14:48:54.709Z + owner: "" + parameter: + aspects: + - SerialPart + - AddressAspect + bomLifecycle: asBuilt + collectAspects: false + depth: 1 + direction: downward + lookupBPNs: false + startedOn: 2022-02-03T14:48:54.709Z + state: COMPLETED + summary: + asyncFetchedItems: + completed: 3 + failed: 0 + running: 0 + bpnLookups: + completed: 3 + failed: 0 + relationships: + - catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447 + linkedItem: + assembledOn: 2022-02-03T14:48:54.709Z + childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9 + lastModifiedOn: 2022-02-03T14:48:54.709Z + lifecycleContext: asBuilt + quantity: + measurementUnit: + datatypeURI: urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece + lexicalValue: piece + quantityNumber: 1.0 + shells: + - description: + - language: en + text: The shell for a vehicle + globalAssetId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9 + id: 882fc530-b69b-4707-95f6-5dbc5e9baaa8 + idShort: future concept x + specificAssetIds: + - name: engineserialid + value: "12309481209312" + submodelDescriptors: + - description: + - language: en + text: Provides base vehicle information + endpoints: + - interface: HTTP + protocolInformation: + endpointProtocol: HTTPS + endpointProtocolVersion: + - "1.0" + href: https://catena-x.net/vehicle/basedetails/ + id: 4a738a24-b7d8-4989-9cd6-387772f40565 + idShort: vehicle base details + semanticId: + keys: + - type: Submodel + value: urn:bamm:com.catenax.vehicle:0.1.1 + type: ModelReference + - description: + - language: en + text: Provides base vehicle information + endpoints: + - interface: HTTP + protocolInformation: + endpointProtocol: HTTPS + endpointProtocolVersion: + - "1.0" + href: https://catena-x.net/vehicle/partdetails/ + id: dae4d249-6d66-4818-b576-bf52f3b9ae90 + idShort: vehicle part details + semanticId: + keys: + - type: Submodel + value: urn:bamm:com.catenax.vehicle:0.1.1#PartDetails + type: ModelReference + submodels: + - aspectType: supply_chain_impacted + identification: urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff + payload: + supplyChainImpacted: "YES" + tombstones: + - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0 + endpointURL: https://catena-x.net/vehicle/partdetails/ + processingError: + errorDetail: Details to reason of Failure + lastAttempt: 2022-02-03T14:48:54.709Z + processStep: SchemaValidation + retryCounter: 0 complete-job-list-processing-state: value: content: diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java index 39a71959f7..780313562b 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java @@ -86,6 +86,10 @@ public class OpenApiExamples { private static final String GLOBAL_ASSET_ID = "urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0"; private static final String SUBMODEL_IDENTIFICATION = "urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff"; private static final String JOB_HANDLE_ID_1 = "6c311d29-5753-46d4-b32c-19b918ea93b0"; + private static final String EXAMPLE_BPN = "BPNL00000003AAXX"; + private static final String SUPPLY_CHAIN_IMPACTED_ASPECT_TYPE = "supply_chain_impacted"; + private static final String SUPPLY_CHAIN_IMPACTED_KEY = "supplyChainImpacted"; + private static final String SUPPLY_CHAIN_IMPACTER_RESULT = "YES"; public void createExamples(final Components components) { components.addExamples("job-handle", toExample(createJobHandle(JOB_HANDLE_ID_1))); @@ -265,7 +269,7 @@ private Example createCompleteEssJobResult() { .shells(List.of(createShell())) .tombstone(createTombstone()) .submodel(createEssSubmodel()) - .bpn(Bpn.withManufacturerId("BPNL00000003AAXX").updateManufacturerName("AB CD")) + .bpn(Bpn.withManufacturerId(EXAMPLE_BPN).updateManufacturerName("AB CD")) .build(); final NotificationSummary newSummary = new NotificationSummary( AsyncFetchedItems.builder().running(0).completed(3).failed(0).build(), @@ -276,9 +280,9 @@ private Example createCompleteEssJobResult() { private Submodel createEssSubmodel() { return Submodel.builder() - .aspectType("supply_chain_impacted") + .aspectType(SUPPLY_CHAIN_IMPACTED_ASPECT_TYPE) .identification(SUBMODEL_IDENTIFICATION) - .payload(Map.of("supplyChainImpacted", "YES")) + .payload(Map.of(SUPPLY_CHAIN_IMPACTED_KEY, SUPPLY_CHAIN_IMPACTER_RESULT)) .build(); } From 552ec932d3ef14d1fc4d1d6ee9d5358183845462 Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:01:39 +0200 Subject: [PATCH 4/6] fix(ess-api): [TRI-1408] Correct Swagger API documentation for ESS API - fix magic int --- .../tractusx/irs/configuration/OpenApiExamples.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java index 780313562b..4e4baaca2a 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java @@ -90,6 +90,9 @@ public class OpenApiExamples { private static final String SUPPLY_CHAIN_IMPACTED_ASPECT_TYPE = "supply_chain_impacted"; private static final String SUPPLY_CHAIN_IMPACTED_KEY = "supplyChainImpacted"; private static final String SUPPLY_CHAIN_IMPACTER_RESULT = "YES"; + private static final int FETCHED_ITEMS_SIZE = 3; + private static final int NO_RUNNING_OR_FAILED_ITEMS = 0; + private static final int SENT_NOTIFICATIONS_SIZE = 6; public void createExamples(final Components components) { components.addExamples("job-handle", toExample(createJobHandle(JOB_HANDLE_ID_1))); @@ -272,8 +275,9 @@ private Example createCompleteEssJobResult() { .bpn(Bpn.withManufacturerId(EXAMPLE_BPN).updateManufacturerName("AB CD")) .build(); final NotificationSummary newSummary = new NotificationSummary( - AsyncFetchedItems.builder().running(0).completed(3).failed(0).build(), - FetchedItems.builder().completed(3).failed(0).build(), 6, 6); + AsyncFetchedItems.builder().running(NO_RUNNING_OR_FAILED_ITEMS).completed(FETCHED_ITEMS_SIZE).failed(NO_RUNNING_OR_FAILED_ITEMS).build(), + FetchedItems.builder().completed(FETCHED_ITEMS_SIZE).failed(NO_RUNNING_OR_FAILED_ITEMS).build(), + SENT_NOTIFICATIONS_SIZE, SENT_NOTIFICATIONS_SIZE); final Job job = essJobsJobs.getJob().toBuilder().summary(newSummary).build(); return toExample(essJobsJobs.toBuilder().job(job).build()); } From 20eae844a38573c1b573c7b8d44bedcb7dc5f4da Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:05:00 +0200 Subject: [PATCH 5/6] fix(irs-api): [TRI-1408] Correct Swagger API documentation for ESS - description improvement Co-authored-by: ds-mkanal <100209308+mkanal@users.noreply.github.com> --- docs/src/api/irs-v1.0.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/api/irs-v1.0.yaml b/docs/src/api/irs-v1.0.yaml index 77d898b9eb..54c6aa69f0 100644 --- a/docs/src/api/irs-v1.0.yaml +++ b/docs/src/api/irs-v1.0.yaml @@ -1040,7 +1040,7 @@ components: - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0 endpointURL: https://catena-x.net/vehicle/partdetails/ processingError: - errorDetail: Details to reason of Failure + errorDetail: Details to reason of failure lastAttempt: 2022-02-03T14:48:54.709Z processStep: SchemaValidation retryCounter: 0 From b68c67ffe0152d60b8b70ebadc7f3dcb3aa61587 Mon Sep 17 00:00:00 2001 From: ds-ext-abugajewski <112549278+ds-ext-abugajewski@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:13:15 +0200 Subject: [PATCH 6/6] fix(ess-api): [TRI-1408] Correct Swagger API documentation for ESS API - Details to reason of failure improved --- docs/src/api/irs-v1.0.yaml | 4 ++-- .../eclipse/tractusx/irs/configuration/OpenApiExamples.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/api/irs-v1.0.yaml b/docs/src/api/irs-v1.0.yaml index 54c6aa69f0..199888b286 100644 --- a/docs/src/api/irs-v1.0.yaml +++ b/docs/src/api/irs-v1.0.yaml @@ -1161,7 +1161,7 @@ components: - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0 endpointURL: https://catena-x.net/vehicle/partdetails/ processingError: - errorDetail: Details to reason of Failure + errorDetail: Details to reason of failure lastAttempt: 2022-02-03T14:48:54.709Z processStep: SchemaValidation retryCounter: 0 @@ -1341,7 +1341,7 @@ components: - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0 endpointURL: https://catena-x.net/vehicle/partdetails/ processingError: - errorDetail: Details to reason of Failure + errorDetail: Details to reason of failure lastAttempt: 2022-02-03T14:48:54.709Z processStep: SchemaValidation retryCounter: 0 diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java index 4e4baaca2a..f08666c5c0 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/configuration/OpenApiExamples.java @@ -365,7 +365,7 @@ private Tombstone createTombstone() { .endpointURL("https://catena-x.net/vehicle/partdetails/") .processingError(ProcessingError.builder() .withProcessStep(ProcessStep.SCHEMA_VALIDATION) - .withErrorDetail("Details to reason of Failure") + .withErrorDetail("Details to reason of failure") .withLastAttempt(EXAMPLE_ZONED_DATETIME) .withRetryCounter(0) .build())