From f11f294188ac8f1891c4468e2242462127c73930 Mon Sep 17 00:00:00 2001 From: mpriyank Date: Wed, 31 Jul 2024 16:29:01 +0100 Subject: Handle duplicate targets NcmpOut event - Accpted , Rejected and Pending targets in the NcmpOut response to have unique values hence changing the datastructre to Set. Issue-ID: CPS-2338 Change-Id: I24a109fad4c854eff1b052df38947cc121445bb9 Signed-off-by: mpriyank --- .../ncmp-out-event-schema-1.0.0.json | 24 ++++++++-------------- .../ncmp/NcmpOutEventMapper.java | 8 +++++--- .../ncmp/NcmpOutEventMapperSpec.groovy | 6 +++--- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/cps-ncmp-events/src/main/resources/schemas/cmnotificationsubscription/ncmp-out-event-schema-1.0.0.json b/cps-ncmp-events/src/main/resources/schemas/cmnotificationsubscription/ncmp-out-event-schema-1.0.0.json index 0c8d02a613..0e6e29049c 100644 --- a/cps-ncmp-events/src/main/resources/schemas/cmnotificationsubscription/ncmp-out-event-schema-1.0.0.json +++ b/cps-ncmp-events/src/main/resources/schemas/cmnotificationsubscription/ncmp-out-event-schema-1.0.0.json @@ -28,25 +28,19 @@ "description": "The unique subscription id" }, "acceptedTargets": { - "type": "array", - "description": "List of accepted targets", - "items": { - "type": "string" - } + "type": "object", + "existingJavaType": "java.util.Collection", + "description": "Unique Collection of accepted targets" }, "rejectedTargets": { - "type": "array", - "description": "List of rejected targets", - "items": { - "type": "string" - } + "type": "object", + "existingJavaType": "java.util.Collection", + "description": "Unique Collection of rejected targets" }, "pendingTargets": { - "type": "array", - "description": "List of pending targets", - "items": { - "type": "string" - } + "type": "object", + "existingJavaType": "java.util.Collection", + "description": "Unique Collection of pending targets" } }, "required": [ diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapper.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapper.java index ffd4b014fb..afff9d1298 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapper.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapper.java @@ -21,6 +21,8 @@ package org.onap.cps.ncmp.impl.cmnotificationsubscription.ncmp; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; @@ -76,9 +78,9 @@ public class NcmpOutEventMapper { final Map dmiSubscriptionsPerDmi, final Data cmSubscriptionData) { - final List acceptedCmHandleIds = new ArrayList<>(); - final List pendingCmHandleIds = new ArrayList<>(); - final List rejectedCmHandleIds = new ArrayList<>(); + final Collection acceptedCmHandleIds = new HashSet<>(); + final Collection pendingCmHandleIds = new HashSet<>(); + final Collection rejectedCmHandleIds = new HashSet<>(); dmiSubscriptionsPerDmi.forEach((dmiPluginName, dmiSubscriptionDetails) -> { final CmSubscriptionStatus cmSubscriptionStatus = diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapperSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapperSpec.groovy index 2251a33466..d3c4026962 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapperSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cmnotificationsubscription/ncmp/NcmpOutEventMapperSpec.groovy @@ -53,9 +53,9 @@ class NcmpOutEventMapperSpec extends Specification { then: 'event is mapped correctly for the subscription' result.data.subscriptionId == 'test-subscription' and: 'the cm handle ids are part of correct list' - result.data.pendingTargets == ['ch-A'] - result.data.acceptedTargets == ['ch-B'] - result.data.rejectedTargets == ['ch-C'] + result.data.pendingTargets == ['ch-A'] as Set + result.data.acceptedTargets == ['ch-B'] as Set + result.data.rejectedTargets == ['ch-C'] as Set } def 'Check for Cm Notification Rejected Subscription Outgoing event mapping'() { -- cgit 1.2.3-korg