Code Refactoring Ncmp* to Lcm* as per new scope
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / event / lcm / LcmEventsPublisher.java
1 /*
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2022 Nordix Foundation
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.ncmp.api.impl.event.lcm;
22
23 import lombok.RequiredArgsConstructor;
24 import lombok.extern.slf4j.Slf4j;
25 import org.onap.ncmp.cmhandle.lcm.event.NcmpEvent;
26 import org.springframework.kafka.core.KafkaTemplate;
27 import org.springframework.kafka.support.SendResult;
28 import org.springframework.stereotype.Service;
29 import org.springframework.util.concurrent.ListenableFuture;
30 import org.springframework.util.concurrent.ListenableFutureCallback;
31
32 /**
33  * LcmEventsPublisher to publish the LcmEvents on event of CREATE, UPDATE and DELETE.
34  */
35
36 @Slf4j
37 @Service
38 @RequiredArgsConstructor
39 public class LcmEventsPublisher {
40
41     private final KafkaTemplate<String, NcmpEvent> lcmEventKafkaTemplate;
42
43     /**
44      * LCM Event publisher.
45      *
46      * @param topicName valid topic name
47      * @param eventKey  message key
48      * @param ncmpEvent message payload
49      */
50     public void publishEvent(final String topicName, final String eventKey, final NcmpEvent ncmpEvent) {
51         final ListenableFuture<SendResult<String, NcmpEvent>> lcmEventFuture =
52                 lcmEventKafkaTemplate.send(topicName, eventKey, ncmpEvent);
53
54         lcmEventFuture.addCallback(new ListenableFutureCallback<>() {
55             @Override
56             public void onFailure(final Throwable throwable) {
57                 log.error("Unable to publish event to topic : {} due to {}", topicName, throwable.getMessage());
58             }
59
60             @Override
61             public void onSuccess(final SendResult<String, NcmpEvent> result) {
62                 log.debug("Successfully published event to topic : {} , NcmpEvent : {}",
63                         result.getRecordMetadata().topic(), result.getProducerRecord().value());
64             }
65         });
66     }
67 }