Drools support for kafka topics
[policy/drools-pdp.git] / feature-pooling-dmaap / src / main / java / org / onap / policy / drools / pooling / message / Message.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2018-2019, 2021 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.drools.pooling.message;
22
23 import lombok.Getter;
24 import lombok.NoArgsConstructor;
25 import lombok.Setter;
26 import org.onap.policy.drools.pooling.PoolingFeatureException;
27
28 /**
29  * Messages sent on the internal topic.
30  */
31 @Getter
32 @Setter
33 @NoArgsConstructor
34 public class Message {
35
36     /**
37      * Name of the administrative channel.
38      */
39     public static final String ADMIN = "_admin";
40
41     /**
42      * Host that originated the message.
43      */
44     private String source;
45
46     /**
47      * Channel on which the message is routed, which is either the target host
48      * or {@link #ADMIN}.
49      */
50     private String channel;
51
52
53     /**
54      * Constructor.
55      *
56      * @param source host on which the message originated
57      */
58     public Message(String source) {
59         this.source = source;
60     }
61
62     /**
63      * Checks the validity of the message, including verifying that required
64      * fields are not missing.
65      *
66      * @throws PoolingFeatureException if the message is invalid
67      */
68     public void checkValidity() throws PoolingFeatureException {
69         if (source == null || source.isEmpty()) {
70             throw new PoolingFeatureException("missing message source");
71         }
72
73         if (channel == null || channel.isEmpty()) {
74             throw new PoolingFeatureException("missing message channel");
75         }
76     }
77
78 }