2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.apex.core.infrastructure.messaging.impl.ws.messageblock;
24 import com.google.common.eventbus.EventBus;
25 import org.onap.policy.apex.core.infrastructure.messaging.MessageListener;
26 import org.slf4j.ext.XLogger;
27 import org.slf4j.ext.XLoggerFactory;
30 * This class is used to pass messages received on a Java web socket to listening application class instances using an
33 * @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
34 * @param <M> the generic type
36 public class MessageBlockHandler<M> {
37 // Logger for this class
38 private static final XLogger LOGGER = XLoggerFactory.getXLogger(MessageBlockHandler.class);
41 * This event bus will forward the events to all of its subscribers.
43 private EventBus eventBus = null;
46 * Instantiates a new data handler.
48 * @param eventBusName the name of the event bus for this message block handler
50 public MessageBlockHandler(final String eventBusName) {
51 eventBus = new EventBus(eventBusName);
52 LOGGER.trace("message bus {} created ", eventBusName);
56 * Post a raw message block on the data handler event bus of this class.
58 * @param rawMessageBlock the block containing raw messages
60 public void post(final RawMessageBlock rawMessageBlock) {
61 if (rawMessageBlock.getMessage() != null) {
62 if (LOGGER.isDebugEnabled()) {
63 LOGGER.debug("new raw message recieved from {}", rawMessageBlock.getWebSocket() == null ? "server"
64 : rawMessageBlock.getWebSocket().getRemoteSocketAddress().getHostName());
66 eventBus.post(rawMessageBlock);
71 * Post a block of typed messages on the data handler event bus of this class.
73 * @param messageBlock the block containing typed messages
75 public void post(final MessageBlock<M> messageBlock) {
76 if (messageBlock.getMessages() != null) {
77 if (LOGGER.isDebugEnabled()) {
78 LOGGER.debug("new data message recieved from {}", messageBlock.getWebSocket() == null ? "server"
79 : messageBlock.getWebSocket().getRemoteSocketAddress().getHostName());
81 eventBus.post(messageBlock);
86 * Post a string message on the data handler event bus of this class.
88 * @param messageString the string message
90 public void post(final String messageString) {
91 if (messageString != null) {
92 if (LOGGER.isDebugEnabled()) {
93 LOGGER.debug("new string message recieved from server: {}", messageString);
95 eventBus.post(messageString);
100 * Register a listener to event bus.
102 * @param listener is an instance of WebSocketMessageListener
104 public void registerMessageHandler(final MessageListener<M> listener) {
105 LOGGER.entry(listener);
106 if (listener == null) {
107 throw new IllegalArgumentException("listener object cannot be null");
109 eventBus.register(listener);
110 LOGGER.debug("message listener {} is registered with forwarder", listener);
115 * Remove the listener subscribed to the event bus.
117 * @param listener the listener
119 public void unRegisterMessageHandler(final MessageListener<M> listener) {
120 if (listener == null) {
121 throw new IllegalArgumentException("listener object cannot be null");
123 LOGGER.entry(listener);
124 eventBus.unregister(listener);
125 LOGGER.trace(" message listener {} unregistered from forwarder", listener);