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 * allowTracing is message tracing allowed?
52 * allowSelfSignedCerts are self-signed certificates allow
56 public class BusTopicParams {
59 private List<String> servers;
60 private Map<String, String> additionalProps;
62 private String effectiveTopic;
63 private String apiKey;
64 private String apiSecret;
65 private String consumerGroup;
66 private String consumerInstance;
67 private int fetchTimeout;
68 private int fetchLimit;
69 private boolean useHttps;
70 private boolean allowTracing;
71 private boolean allowSelfSignedCerts;
72 private boolean managed;
74 private String userName;
75 private String password;
76 private String environment;
77 private String aftEnvironment;
78 private String partner;
79 private String latitude;
80 private String longitude;
81 private String partitionId;
82 private String clientName;
83 private String hostname;
84 private String basePath;
86 private String serializationProvider;
88 public static TopicParamsBuilder builder() {
89 return new TopicParamsBuilder();
93 * Methods to Check if the property is INVALID.
96 boolean isEnvironmentInvalid() {
97 return StringUtils.isBlank(environment);
100 boolean isAftEnvironmentInvalid() {
101 return StringUtils.isBlank(aftEnvironment);
104 boolean isLatitudeInvalid() {
105 return StringUtils.isBlank(latitude);
108 boolean isLongitudeInvalid() {
109 return StringUtils.isBlank(longitude);
112 boolean isConsumerInstanceInvalid() {
113 return StringUtils.isBlank(consumerInstance);
116 boolean isConsumerGroupInvalid() {
117 return StringUtils.isBlank(consumerGroup);
120 public boolean isClientNameInvalid() {
121 return StringUtils.isBlank(clientName);
124 boolean isPartnerInvalid() {
125 return StringUtils.isBlank(partner);
128 boolean isServersInvalid() {
129 return (servers == null || servers.isEmpty()
130 || (servers.size() == 1 && ("".equals(servers.get(0)))));
133 boolean isTopicInvalid() {
134 return StringUtils.isBlank(topic);
137 boolean isPartitionIdInvalid() {
138 return StringUtils.isBlank(partitionId);
141 public boolean isHostnameInvalid() {
142 return StringUtils.isBlank(hostname);
145 public boolean isPortInvalid() {
146 return (getPort() <= 0 || getPort() >= 65535);
150 * Methods to Check if the property is Valid.
153 boolean isApiKeyValid() {
154 return StringUtils.isNotBlank(apiKey);
157 boolean isApiSecretValid() {
158 return StringUtils.isNotBlank(apiSecret);
161 boolean isUserNameValid() {
162 return StringUtils.isNotBlank(userName);
165 boolean isPasswordValid() {
166 return StringUtils.isNotBlank(password);
169 boolean isAdditionalPropsValid() {
170 return additionalProps != null;
173 public void setEffectiveTopic(String effectiveTopic) {
174 this.effectiveTopic = topicToLowerCase(effectiveTopic);
177 public void setTopic(String topic) {
178 this.topic = topicToLowerCase(topic);
181 public String getEffectiveTopic() {
182 return topicToLowerCase(effectiveTopic);
185 public String getTopic() {
186 return topicToLowerCase(topic);
189 private String topicToLowerCase(String topic) {
190 return (topic == null || topic.isEmpty()) ? topic : topic.toLowerCase();
193 @NoArgsConstructor(access = AccessLevel.PRIVATE)
194 public static class TopicParamsBuilder {
196 final BusTopicParams params = new BusTopicParams();
198 public TopicParamsBuilder servers(List<String> servers) {
199 this.params.servers = servers;
203 public TopicParamsBuilder topic(String topic) {
204 this.params.setTopic(topic);
208 public TopicParamsBuilder effectiveTopic(String effectiveTopic) {
209 this.params.setEffectiveTopic(effectiveTopic);
213 public TopicParamsBuilder apiKey(String apiKey) {
214 this.params.apiKey = apiKey;
218 public TopicParamsBuilder apiSecret(String apiSecret) {
219 this.params.apiSecret = apiSecret;
223 public TopicParamsBuilder consumerGroup(String consumerGroup) {
224 this.params.consumerGroup = consumerGroup;
228 public TopicParamsBuilder consumerInstance(String consumerInstance) {
229 this.params.consumerInstance = consumerInstance;
233 public TopicParamsBuilder fetchTimeout(int fetchTimeout) {
234 this.params.fetchTimeout = fetchTimeout;
238 public TopicParamsBuilder fetchLimit(int fetchLimit) {
239 this.params.fetchLimit = fetchLimit;
243 public TopicParamsBuilder useHttps(boolean useHttps) {
244 this.params.useHttps = useHttps;
248 public TopicParamsBuilder allowTracing(boolean allowTracing) {
249 this.params.allowTracing = allowTracing;
253 public TopicParamsBuilder allowSelfSignedCerts(boolean allowSelfSignedCerts) {
254 this.params.allowSelfSignedCerts = allowSelfSignedCerts;
258 public TopicParamsBuilder userName(String userName) {
259 this.params.userName = userName;
263 public TopicParamsBuilder password(String password) {
264 this.params.password = password;
268 public TopicParamsBuilder environment(String environment) {
269 this.params.environment = environment;
273 public TopicParamsBuilder aftEnvironment(String aftEnvironment) {
274 this.params.aftEnvironment = aftEnvironment;
278 public TopicParamsBuilder partner(String partner) {
279 this.params.partner = partner;
283 public TopicParamsBuilder latitude(String latitude) {
284 this.params.latitude = latitude;
288 public TopicParamsBuilder longitude(String longitude) {
289 this.params.longitude = longitude;
293 public TopicParamsBuilder additionalProps(Map<String, String> additionalProps) {
294 this.params.additionalProps = additionalProps;
298 public TopicParamsBuilder partitionId(String partitionId) {
299 this.params.partitionId = partitionId;
303 public BusTopicParams build() {
307 public TopicParamsBuilder managed(boolean managed) {
308 this.params.managed = managed;
312 public TopicParamsBuilder hostname(String hostname) {
313 this.params.hostname = hostname;
317 public TopicParamsBuilder clientName(String clientName) {
318 this.params.clientName = clientName;
322 public TopicParamsBuilder port(int port) {
323 this.params.port = port;
327 public TopicParamsBuilder basePath(String basePath) {
328 this.params.basePath = basePath;
332 public TopicParamsBuilder serializationProvider(String serializationProvider) {
333 this.params.serializationProvider = serializationProvider;