Removing deprecated DMAAP library
[policy/drools-pdp.git] / feature-pooling-messages / src / main / java / org / onap / policy / drools / pooling / message / Leader.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2018-2019, 2021 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2024 Nordix Foundation.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
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
22 package org.onap.policy.drools.pooling.message;
23
24 import lombok.NoArgsConstructor;
25 import org.onap.policy.drools.pooling.PoolingFeatureException;
26
27 /**
28  * Indicates that the "source" of this message is now the "lead" host.
29  */
30 @NoArgsConstructor
31 public class Leader extends MessageWithAssignments {
32
33     /**
34      * Constructor.
35      *
36      * @param source host on which the message originated
37      * @param assignments assignments
38      */
39     public Leader(String source, BucketAssignments assignments) {
40         super(source, assignments);
41     }
42
43     /**
44      * Also verifies that buckets have been assigned and that the source is
45      * indeed the leader.
46      */
47     @Override
48     public void checkValidity() throws PoolingFeatureException {
49
50         super.checkValidity();
51
52         BucketAssignments assignments = getAssignments();
53         if (assignments == null) {
54             throw new PoolingFeatureException("missing message bucket assignments");
55         }
56
57         String leader = getSource();
58
59         if (!assignments.hasAssignment(leader)) {
60             throw new PoolingFeatureException("leader " + leader + " has no bucket assignments");
61         }
62
63         for (String host : assignments.getHostArray()) {
64             if (host.compareTo(leader) < 0) {
65                 throw new PoolingFeatureException("invalid leader " + leader + ", should be " + host);
66             }
67         }
68     }
69
70 }