2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
6 * Modifications Copyright (C) 2018-2019, 2021 AT&T Intellectual Property. All rights reserved.
7 * Modifications Copyright (C) 2019, 2023 Nordix Foundation.
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
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.common.endpoints.event.comm.bus.internal;
25 import java.util.List;
27 import lombok.AccessLevel;
29 import lombok.NoArgsConstructor;
31 import org.apache.commons.lang3.StringUtils;
34 * Member variables of this Params class are as follows.
36 * <p>servers DMaaP servers
37 * topic DMaaP Topic to be monitored
38 * apiKey DMaaP API Key (optional)
39 * apiSecret DMaaP API Secret (optional)
40 * consumerGroup DMaaP Reader Consumer Group
41 * consumerInstance DMaaP Reader Instance
42 * fetchTimeout DMaaP fetch timeout
43 * fetchLimit DMaaP fetch limit
44 * environment DME2 Environment
45 * aftEnvironment DME2 AFT Environment
46 * partner DME2 Partner
47 * latitude DME2 Latitude
48 * longitude DME2 Longitude
49 * additionalProps Additional properties to pass to DME2
50 * useHttps does connection use HTTPS?
51 * allowSelfSignedCerts are self-signed certificates allow
55 public class BusTopicParams {
58 private List<String> servers;
59 private Map<String, String> additionalProps;
61 private String effectiveTopic;
62 private String apiKey;
63 private String apiSecret;
64 private String consumerGroup;
65 private String consumerInstance;
66 private int fetchTimeout;
67 private int fetchLimit;
68 private boolean useHttps;
69 private boolean allowSelfSignedCerts;
70 private boolean managed;
72 private String userName;
73 private String password;
74 private String environment;
75 private String aftEnvironment;
76 private String partner;
77 private String latitude;
78 private String longitude;
79 private String partitionId;
80 private String clientName;
81 private String hostname;
82 private String basePath;
84 private String serializationProvider;
86 public static TopicParamsBuilder builder() {
87 return new TopicParamsBuilder();
91 * Methods to Check if the property is INVALID.
94 boolean isEnvironmentInvalid() {
95 return StringUtils.isBlank(environment);
98 boolean isAftEnvironmentInvalid() {
99 return StringUtils.isBlank(aftEnvironment);
102 boolean isLatitudeInvalid() {
103 return StringUtils.isBlank(latitude);
106 boolean isLongitudeInvalid() {
107 return StringUtils.isBlank(longitude);
110 boolean isConsumerInstanceInvalid() {
111 return StringUtils.isBlank(consumerInstance);
114 boolean isConsumerGroupInvalid() {
115 return StringUtils.isBlank(consumerGroup);
118 public boolean isClientNameInvalid() {
119 return StringUtils.isBlank(clientName);
122 boolean isPartnerInvalid() {
123 return StringUtils.isBlank(partner);
126 boolean isServersInvalid() {
127 return (servers == null || servers.isEmpty()
128 || (servers.size() == 1 && ("".equals(servers.get(0)))));
131 boolean isTopicInvalid() {
132 return StringUtils.isBlank(topic);
135 boolean isPartitionIdInvalid() {
136 return StringUtils.isBlank(partitionId);
139 public boolean isHostnameInvalid() {
140 return StringUtils.isBlank(hostname);
143 public boolean isPortInvalid() {
144 return (getPort() <= 0 || getPort() >= 65535);
148 * Methods to Check if the property is Valid.
151 boolean isApiKeyValid() {
152 return StringUtils.isNotBlank(apiKey);
155 boolean isApiSecretValid() {
156 return StringUtils.isNotBlank(apiSecret);
159 boolean isUserNameValid() {
160 return StringUtils.isNotBlank(userName);
163 boolean isPasswordValid() {
164 return StringUtils.isNotBlank(password);
167 boolean isAdditionalPropsValid() {
168 return additionalProps != null;
171 public void setEffectiveTopic(String effectiveTopic) {
172 this.effectiveTopic = topicToLowerCase(effectiveTopic);
175 public void setTopic(String topic) {
176 this.topic = topicToLowerCase(topic);
179 public String getEffectiveTopic() {
180 return topicToLowerCase(effectiveTopic);
183 public String getTopic() {
184 return topicToLowerCase(topic);
187 private String topicToLowerCase(String topic) {
188 return (topic == null || topic.isEmpty()) ? topic : topic.toLowerCase();
191 @NoArgsConstructor(access = AccessLevel.PRIVATE)
192 public static class TopicParamsBuilder {
194 final BusTopicParams params = new BusTopicParams();
196 public TopicParamsBuilder servers(List<String> servers) {
197 this.params.servers = servers;
201 public TopicParamsBuilder topic(String topic) {
202 this.params.setTopic(topic);
206 public TopicParamsBuilder effectiveTopic(String effectiveTopic) {
207 this.params.setEffectiveTopic(effectiveTopic);
211 public TopicParamsBuilder apiKey(String apiKey) {
212 this.params.apiKey = apiKey;
216 public TopicParamsBuilder apiSecret(String apiSecret) {
217 this.params.apiSecret = apiSecret;
221 public TopicParamsBuilder consumerGroup(String consumerGroup) {
222 this.params.consumerGroup = consumerGroup;
226 public TopicParamsBuilder consumerInstance(String consumerInstance) {
227 this.params.consumerInstance = consumerInstance;
231 public TopicParamsBuilder fetchTimeout(int fetchTimeout) {
232 this.params.fetchTimeout = fetchTimeout;
236 public TopicParamsBuilder fetchLimit(int fetchLimit) {
237 this.params.fetchLimit = fetchLimit;
241 public TopicParamsBuilder useHttps(boolean useHttps) {
242 this.params.useHttps = useHttps;
246 public TopicParamsBuilder allowSelfSignedCerts(boolean allowSelfSignedCerts) {
247 this.params.allowSelfSignedCerts = allowSelfSignedCerts;
251 public TopicParamsBuilder userName(String userName) {
252 this.params.userName = userName;
256 public TopicParamsBuilder password(String password) {
257 this.params.password = password;
261 public TopicParamsBuilder environment(String environment) {
262 this.params.environment = environment;
266 public TopicParamsBuilder aftEnvironment(String aftEnvironment) {
267 this.params.aftEnvironment = aftEnvironment;
271 public TopicParamsBuilder partner(String partner) {
272 this.params.partner = partner;
276 public TopicParamsBuilder latitude(String latitude) {
277 this.params.latitude = latitude;
281 public TopicParamsBuilder longitude(String longitude) {
282 this.params.longitude = longitude;
286 public TopicParamsBuilder additionalProps(Map<String, String> additionalProps) {
287 this.params.additionalProps = additionalProps;
291 public TopicParamsBuilder partitionId(String partitionId) {
292 this.params.partitionId = partitionId;
296 public BusTopicParams build() {
300 public TopicParamsBuilder managed(boolean managed) {
301 this.params.managed = managed;
305 public TopicParamsBuilder hostname(String hostname) {
306 this.params.hostname = hostname;
310 public TopicParamsBuilder clientName(String clientName) {
311 this.params.clientName = clientName;
315 public TopicParamsBuilder port(int port) {
316 this.params.port = port;
320 public TopicParamsBuilder basePath(String basePath) {
321 this.params.basePath = basePath;
325 public TopicParamsBuilder serializationProvider(String serializationProvider) {
326 this.params.serializationProvider = serializationProvider;