Changes for checkstyle 8.32
[policy/apex-pdp.git] / core / core-infrastructure / src / main / java / org / onap / policy / apex / core / infrastructure / messaging / impl / ws / messageblock / MessageBlockHandler.java
1 /*-
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
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.policy.apex.core.infrastructure.messaging.impl.ws.messageblock;
22
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;
27
28 /**
29  * This class is used to pass messages received on a Java web socket to listening application class instances using an
30  * event bus.
31  *
32  * @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
33  * @param <M> the generic type
34  */
35 public class MessageBlockHandler<M> {
36     // Logger for this class
37     private static final XLogger LOGGER = XLoggerFactory.getXLogger(MessageBlockHandler.class);
38
39     /**
40      * This event bus will forward the events to all of its subscribers.
41      */
42     private EventBus eventBus = null;
43
44     /**
45      * Instantiates a new data handler.
46      *
47      * @param eventBusName the name of the event bus for this message block handler
48      */
49     public MessageBlockHandler(final String eventBusName) {
50         eventBus = new EventBus(eventBusName);
51         LOGGER.trace("message bus {} created ", eventBusName);
52     }
53
54     /**
55      * Post a raw message block on the data handler event bus of this class.
56      *
57      * @param rawMessageBlock the block containing raw messages
58      */
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());
64             }
65             eventBus.post(rawMessageBlock);
66         }
67     }
68
69     /**
70      * Post a block of typed messages on the data handler event bus of this class.
71      *
72      * @param messageBlock the block containing typed messages
73      */
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());
79             }
80             eventBus.post(messageBlock);
81         }
82     }
83
84     /**
85      * Post a string message on the data handler event bus of this class.
86      *
87      * @param messageString the string message
88      */
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);
93             }
94             eventBus.post(messageString);
95         }
96     }
97
98     /**
99      * Register a listener to event bus.
100      *
101      * @param listener is an instance of WebSocketMessageListener
102      */
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");
107         }
108         eventBus.register(listener);
109         LOGGER.debug("message listener {} is registered with forwarder", listener);
110         LOGGER.exit();
111     }
112
113     /**
114      * Remove the listener subscribed to the event bus.
115      *
116      * @param listener the listener
117      */
118     public void unRegisterMessageHandler(final MessageListener<M> listener) {
119         if (listener == null) {
120             throw new IllegalArgumentException("listener object cannot be null");
121         }
122         LOGGER.entry(listener);
123         eventBus.unregister(listener);
124         LOGGER.trace(" message listener {} unregistered from forwarder", listener);
125         LOGGER.exit();
126     }
127 }