From f300194deee749427175a05ed4af8bd563447ba0 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Thu, 16 Sep 2021 10:44:46 +0200 Subject: [PATCH] NONRTRIC - Enrichment Coordinator Service, making type availability subscriptions persistent Bugfix, owner was not considered. Signed-off-by: PatrikBuhr Issue-ID: NONRTRIC-577 Change-Id: I960f5f9e328ee6c43ea9ef0df5736dcc17201da4 --- enrichment-coordinator-service/api/ecs-api.json | 5 +---- enrichment-coordinator-service/api/ecs-api.yaml | 1 - .../controllers/r1producer/ProducerInfoTypeInfo.java | 4 ++-- .../oransc/enrichment/repository/InfoTypeSubscriptions.java | 10 +++++++--- .../src/test/java/org/oransc/enrichment/ApplicationTest.java | 1 + 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/enrichment-coordinator-service/api/ecs-api.json b/enrichment-coordinator-service/api/ecs-api.json index 982633ba..0e8164ef 100644 --- a/enrichment-coordinator-service/api/ecs-api.json +++ b/enrichment-coordinator-service/api/ecs-api.json @@ -207,10 +207,7 @@ "producer_info_type_info": { "description": "Information for an Information Type", "type": "object", - "required": [ - "info_job_data_schema", - "info_type_information" - ], + "required": ["info_job_data_schema"], "properties": { "info_type_information": { "description": "Type specific information for the information type", diff --git a/enrichment-coordinator-service/api/ecs-api.yaml b/enrichment-coordinator-service/api/ecs-api.yaml index 1900215a..3445edee 100644 --- a/enrichment-coordinator-service/api/ecs-api.yaml +++ b/enrichment-coordinator-service/api/ecs-api.yaml @@ -1171,7 +1171,6 @@ components: producer_info_type_info: required: - info_job_data_schema - - info_type_information type: object properties: info_type_information: diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerInfoTypeInfo.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerInfoTypeInfo.java index b0375c24..311b8a7d 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerInfoTypeInfo.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerInfoTypeInfo.java @@ -39,9 +39,9 @@ public class ProducerInfoTypeInfo { @Schema( name = "info_type_information", description = "Type specific information for the information type", - required = true) + required = false) @SerializedName("info_type_information") - @JsonProperty(value = "info_type_information", required = true) + @JsonProperty(value = "info_type_information", required = false) public Object typeSpecificInformation; public ProducerInfoTypeInfo(Object jobDataSchema, Object typeSpecificInformation) { diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/InfoTypeSubscriptions.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/InfoTypeSubscriptions.java index 60fe35f3..2d6da4f5 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/InfoTypeSubscriptions.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/InfoTypeSubscriptions.java @@ -99,8 +99,7 @@ public class InfoTypeSubscriptions { } public synchronized void put(SubscriptionInfo subscription) { - allSubscriptions.put(subscription.getId(), subscription); - subscriptionsByOwner.put(subscription.owner, subscription.id, subscription); + doPut(subscription); storeInFile(subscription); logger.debug("Added type status subscription {}", subscription.id); } @@ -259,10 +258,15 @@ public class InfoTypeSubscriptions { for (File file : dbDir.listFiles()) { String json = Files.readString(file.toPath()); SubscriptionInfo subscription = gson.fromJson(json, SubscriptionInfo.class); - this.allSubscriptions.put(subscription.getId(), subscription); + doPut(subscription); } } + private void doPut(SubscriptionInfo subscription) { + allSubscriptions.put(subscription.getId(), subscription); + subscriptionsByOwner.put(subscription.owner, subscription.id, subscription); + } + private File getFile(SubscriptionInfo subscription) { return getPath(subscription).toFile(); } diff --git a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java index fa5b7e31..5292d90e 100644 --- a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java +++ b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java @@ -933,6 +933,7 @@ class ApplicationTest { InfoTypeSubscriptions restoredSubscriptions = new InfoTypeSubscriptions(this.applicationConfig); assertThat(restoredSubscriptions.size()).isEqualTo(1); + assertThat(restoredSubscriptions.getSubscriptionsForOwner("owner")).hasSize(1); // Delete the subscription restClient().deleteForEntity(typeSubscriptionUrl() + "/subscriptionId").block(); -- 2.16.6