2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021 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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.clamp.controlloop.participant.intermediary.comm;
23 import java.util.List;
24 import javax.ws.rs.core.Response.Status;
25 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
26 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck;
27 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister;
28 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegister;
29 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
30 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
31 import org.onap.policy.clamp.controlloop.participant.intermediary.handler.Publisher;
32 import org.onap.policy.common.endpoints.event.comm.TopicSink;
33 import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClient;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.springframework.stereotype.Component;
39 * This class is used to send Participant Status messages to clamp using TopicSinkClient.
43 public class ParticipantMessagePublisher implements Publisher {
44 private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantMessagePublisher.class);
46 private boolean active = false;
47 private TopicSinkClient topicSinkClient;
50 * Constructor for instantiating ParticipantMessagePublisher.
52 * @param topicSinks the topic sinks
55 public void active(List<TopicSink> topicSinks) {
56 if (topicSinks.size() != 1) {
57 throw new IllegalArgumentException("Configuration unsupported, Topic sinks greater than 1");
59 this.topicSinkClient = new TopicSinkClient(topicSinks.get(0));
64 * Method to send Participant Status message to clamp on demand.
66 * @param participantStatus the Participant Status
68 public void sendParticipantStatus(final ParticipantStatus participantStatus) {
70 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
72 topicSinkClient.send(participantStatus);
73 LOGGER.debug("Sent Participant Status message to CLAMP - {}", participantStatus);
77 * Method to send Participant Status message to clamp on demand.
79 * @param participantRegister the Participant Status
81 public void sendParticipantRegister(final ParticipantRegister participantRegister) {
83 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
85 topicSinkClient.send(participantRegister);
86 LOGGER.debug("Sent Participant Register message to CLAMP - {}", participantRegister);
90 * Method to send Participant Status message to clamp on demand.
92 * @param participantDeregister the Participant Status
94 public void sendParticipantDeregister(final ParticipantDeregister participantDeregister) {
96 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
98 topicSinkClient.send(participantDeregister);
99 LOGGER.debug("Sent Participant Deregister message to CLAMP - {}", participantDeregister);
103 * Method to send Participant Update Ack message to runtime.
105 * @param participantUpdateAck the Participant Update Ack
107 public void sendParticipantUpdateAck(final ParticipantUpdateAck participantUpdateAck) {
109 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
111 topicSinkClient.send(participantUpdateAck);
112 LOGGER.debug("Sent Participant Update Ack message to CLAMP - {}", participantUpdateAck);
116 * Method to send ControlLoop Update/StateChange Ack message to runtime.
118 * @param controlLoopAck ControlLoop Update/StateChange Ack
120 public void sendControlLoopAck(final ControlLoopAck controlLoopAck) {
122 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
124 topicSinkClient.send(controlLoopAck);
125 LOGGER.debug("Sent ControlLoop Update/StateChange Ack to runtime - {}", controlLoopAck);
129 * Method to send Participant heartbeat to clamp on demand.
131 * @param participantStatus the Participant Status
133 public void sendHeartbeat(final ParticipantStatus participantStatus) {
135 throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
137 topicSinkClient.send(participantStatus);
138 LOGGER.debug("Sent Participant heartbeat to CLAMP - {}", participantStatus);