[DMAAP-CLIENT] First sonar issues review part2
[dmaap/messagerouter/dmaapclient.git] / src / main / java / org / onap / dmaap / mr / client / MRPublisher.java
1 /*******************************************************************************
2  *  ============LICENSE_START=======================================================
3  *  org.onap.dmaap
4  *  ================================================================================
5  *  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  *  ================================================================================
7  *  Modifications Copyright © 2021 Orange.
8  *  ================================================================================
9  *  Licensed under the Apache License, Version 2.0 (the "License");
10  *  you may not use this file except in compliance with the License.
11  *  You may obtain a copy of the License at
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  *  Unless required by applicable law or agreed to in writing, software
15  *  distributed under the License is distributed on an "AS IS" BASIS,
16  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  *  See the License for the specific language governing permissions and
18  *  limitations under the License.
19  *  ============LICENSE_END=========================================================
20  *
21  *  ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  *
23  *******************************************************************************/
24
25 package org.onap.dmaap.mr.client;
26
27 import java.io.IOException;
28 import java.util.Collection;
29
30 /**
31  * A MR publishing interface.
32  */
33 public interface MRPublisher extends MRClient {
34     /**
35      * A simple message container.
36      */
37     class Message {
38         public Message(String partition, String msg) {
39             fPartition = partition == null ? "" : partition;
40             fMsg = msg;
41             if (fMsg == null) {
42                 throw new IllegalArgumentException("Can't send a null message.");
43             }
44         }
45
46         public Message(Message msg) {
47             this(msg.fPartition, msg.fMsg);
48         }
49
50         public final String fPartition;
51         public final String fMsg;
52     }
53
54     /**
55      * Send the given message without partition. partition will be placed at HTTP request level.
56      *
57      * @param msg message to sent
58      * @return the number of pending messages
59      * @throws IOException exception
60      */
61     int send(String msg) throws IOException;
62
63     /**
64      * Send the given message using the given partition.
65      *
66      * @param partition partition
67      * @param msg       message
68      * @return the number of pending messages
69      * @throws IOException exception
70      */
71     int send(String partition, String msg) throws IOException;
72
73     /**
74      * Send the given message using its partition.
75      *
76      * @param msg mesg
77      * @return the number of pending messages
78      * @throws IOException exp
79      */
80     int send(Message msg) throws IOException;
81
82     /**
83      * Send the given messages using their partitions.
84      *
85      * @param msgs msg
86      * @return the number of pending messages
87      * @throws IOException exp
88      */
89     int send(Collection<Message> msgs) throws IOException;
90
91     /**
92      * Close this publisher. It's an error to call send() after close()
93      */
94     void close();
95 }