X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Fimpl%2Fevents%2Fcmsubscription%2Fservice%2FCmNotificationSubscriptionHandlerServiceImpl.java;fp=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Fimpl%2Fevents%2Fcmsubscription%2Fservice%2FCmNotificationSubscriptionHandlerServiceImpl.java;h=8204f05c9f34b11e5daa1872087da48cac4857eb;hb=e90f0aa082e92b332f7bac7878be7f6576e722a3;hp=0000000000000000000000000000000000000000;hpb=362d7f981d2060314d9cd152a8cace524ebda356;p=cps.git diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionHandlerServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionHandlerServiceImpl.java new file mode 100644 index 000000000..8204f05c9 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionHandlerServiceImpl.java @@ -0,0 +1,70 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.impl.events.cmsubscription.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.onap.cps.ncmp.api.impl.events.cmsubscription.CmNotificationSubscriptionNcmpOutEventProducer; +import org.onap.cps.ncmp.api.impl.events.cmsubscription.DmiCmNotificationSubscriptionCacheHandler; +import org.onap.cps.ncmp.api.impl.events.cmsubscription.mapper.CmNotificationSubscriptionNcmpOutEventMapper; +import org.onap.cps.ncmp.events.cmnotificationsubscription_merge1_0_0.client_to_ncmp.CmNotificationSubscriptionNcmpInEvent; +import org.onap.cps.ncmp.events.cmnotificationsubscription_merge1_0_0.client_to_ncmp.Predicate; +import org.onap.cps.ncmp.events.cmsubscription_merge1_0_0.ncmp_to_client.CmNotificationSubscriptionNcmpOutEvent; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CmNotificationSubscriptionHandlerServiceImpl implements CmNotificationSubscriptionHandlerService { + + private final CmNotificationSubscriptionPersistenceService cmNotificationSubscriptionPersistenceService; + private final CmNotificationSubscriptionNcmpOutEventMapper cmNotificationSubscriptionNcmpOutEventMapper; + private final CmNotificationSubscriptionNcmpOutEventProducer cmNotificationSubscriptionNcmpOutEventProducer; + private final DmiCmNotificationSubscriptionCacheHandler dmiCmNotificationSubscriptionCacheHandler; + + @Override + public void processSubscriptionCreateRequest( + final CmNotificationSubscriptionNcmpInEvent cmNotificationSubscriptionNcmpInEvent) { + final String subscriptionId = cmNotificationSubscriptionNcmpInEvent.getData().getSubscriptionId(); + final List predicates = cmNotificationSubscriptionNcmpInEvent.getData().getPredicates(); + + if (cmNotificationSubscriptionPersistenceService.isUniqueSubscriptionId(subscriptionId)) { + dmiCmNotificationSubscriptionCacheHandler.add(subscriptionId, predicates); + } else { + final Set subscriptionTargetFilters = predicates.stream().flatMap( + predicate -> predicate.getTargetFilter().stream()).collect(Collectors.toSet()); + rejectAndPublishCmNotificationSubscriptionCreateRequest(subscriptionId, + new ArrayList<>(subscriptionTargetFilters)); + } + } + + private void rejectAndPublishCmNotificationSubscriptionCreateRequest(final String subscriptionId, + final List subscriptionTargetFilters) { + final CmNotificationSubscriptionNcmpOutEvent cmNotificationSubscriptionNcmpOutEvent = + cmNotificationSubscriptionNcmpOutEventMapper + .toCmNotificationSubscriptionNcmpOutEventForRejectedRequest(subscriptionId, + subscriptionTargetFilters); + cmNotificationSubscriptionNcmpOutEventProducer.publishCmNotificationSubscriptionNcmpOutEvent(subscriptionId, + "subscriptionCreateResponse", cmNotificationSubscriptionNcmpOutEvent, false); + } +}