2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
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.apex.core.infrastructure.messaging.impl.ws.messageblock;
23 import com.google.common.eventbus.EventBus;
24 import org.onap.policy.apex.core.infrastructure.messaging.MessageListener;
25 import org.slf4j.ext.XLogger;
26 import org.slf4j.ext.XLoggerFactory;
29 * This class is used to pass messages received on a Java web socket to listening application class instances using an
32 * @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
33 * @param <M> the generic type
35 public class MessageBlockHandler<M> {
36 // Logger for this class
37 private static final XLogger LOGGER = XLoggerFactory.getXLogger(MessageBlockHandler.class);
40 * This event bus will forward the events to all of its subscribers.
42 private EventBus eventBus = null;
45 * Instantiates a new data handler.
47 * @param eventBusName the name of the event bus for this message block handler
49 public MessageBlockHandler(final String eventBusName) {
50 eventBus = new EventBus(eventBusName);
51 LOGGER.trace("message bus {} created ", eventBusName);
55 * Post a raw message block on the data handler event bus of this class.
57 * @param rawMessageBlock the block containing raw messages
59 public void post(final RawMessageBlock rawMessageBlock) {
60 if (rawMessageBlock.getMessage() != null) {
61 if (LOGGER.isDebugEnabled()) {
62 LOGGER.debug("new raw message recieved from {}", rawMessageBlock.getConn() == null ? "server"
63 : rawMessageBlock.getConn().getRemoteSocketAddress().getHostName());
65 eventBus.post(rawMessageBlock);
70 * Post a block of typed messages on the data handler event bus of this class.
72 * @param messageBlock the block containing typed messages
74 public void post(final MessageBlock<M> messageBlock) {
75 if (messageBlock.getMessages() != null) {
76 if (LOGGER.isDebugEnabled()) {
77 LOGGER.debug("new data message recieved from {}", messageBlock.getConnection() == null ? "server"
78 : messageBlock.getConnection().getRemoteSocketAddress().getHostName());
80 eventBus.post(messageBlock);
85 * Post a string message on the data handler event bus of this class.
87 * @param messageString the string message
89 public void post(final String messageString) {
90 if (messageString != null) {
91 if (LOGGER.isDebugEnabled()) {
92 LOGGER.debug("new string message recieved from server: {}", messageString);
94 eventBus.post(messageString);
99 * Register a listener to event bus.
101 * @param listener is an instance of WebSocketMessageListener
103 public void registerMessageHandler(final MessageListener<M> listener) {
104 LOGGER.entry(listener);
105 if (listener == null) {
106 throw new IllegalArgumentException("listener object cannot be null");
108 eventBus.register(listener);
109 LOGGER.debug("message listener {} is registered with forwarder", listener);
114 * Remove the listener subscribed to the event bus.
116 * @param listener the listener
118 public void unRegisterMessageHandler(final MessageListener<M> listener) {
119 if (listener == null) {
120 throw new IllegalArgumentException("listener object cannot be null");
122 LOGGER.entry(listener);
123 eventBus.unregister(listener);
124 LOGGER.trace(" message listener {} unregistered from forwarder", listener);