2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 Intel. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.distribution.reception.handling.sdc;
23 import java.util.List;
24 import java.util.UUID;
25 import org.onap.policy.common.parameters.GroupValidationResult;
26 import org.onap.policy.common.parameters.ValidationStatus;
27 import org.onap.policy.common.utils.validation.ParameterValidationUtils;
28 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
31 * This class handles reading, parsing and validating of the Policy SDC Service Distribution
32 * parameters from Json format, which strictly adheres to the interface:IConfiguration, defined by
35 public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHandlerConfigurationParameterGroup {
37 // Interface of IConfiguration item
38 private String asdcAddress;
39 private List<String> messageBusAddress;
41 private String password;
42 private int pollingInterval;
43 private int pollingTimeout;
44 private String consumerId;
45 private List<String> artifactTypes;
46 private String consumerGroup;
47 private String environmentName;
48 private String keyStorePath;
49 private String keyStorePassword;
50 private boolean activeServerTlsAuth;
51 private boolean isFilterInEmptyResources;
52 private boolean isUseHttpsWithDmaap;
55 * Inner static class is to used as a Builder.
58 public static class SdcConfigurationBuilder {
59 private String asdcAddress;
60 private List<String> messageBusAddress;
62 private String password;
63 private int pollingInterval;
64 private int pollingTimeout;
65 private String consumerId;
66 private List<String> artifactTypes;
67 private String consumerGroup;
68 private String environmentName;
69 private String keystorePath;
70 private String keystorePassword;
71 private boolean activeserverTlsAuth;
72 private boolean isFilterinEmptyResources;
73 private Boolean isUseHttpsWithDmaap;
75 public SdcConfigurationBuilder setAsdcAddress(final String val) {
80 public SdcConfigurationBuilder setMessageBusAddress(final List<String> val) {
81 messageBusAddress = val;
85 public SdcConfigurationBuilder setUser(final String val) {
90 public SdcConfigurationBuilder setPassword(final String val) {
95 public SdcConfigurationBuilder setPollingInterval(final int val) {
96 pollingInterval = val;
100 public SdcConfigurationBuilder setPollingTimeout(final int val) {
101 pollingTimeout = val;
105 public SdcConfigurationBuilder setConsumerId(final String val) {
110 public SdcConfigurationBuilder setArtifactTypes(final List<String> val) {
115 public SdcConfigurationBuilder setConsumerGroup(final String val) {
120 public SdcConfigurationBuilder setEnvironmentName(final String val) {
121 environmentName = val;
125 public SdcConfigurationBuilder setKeystorePath(final String val) {
130 public SdcConfigurationBuilder setKeystorePassword(final String val) {
131 keystorePassword = val;
135 public SdcConfigurationBuilder setActiveserverTlsAuth(final boolean val) {
136 activeserverTlsAuth = val;
140 public SdcConfigurationBuilder setIsFilterinEmptyResources(final boolean val) {
141 isFilterinEmptyResources = val;
145 public SdcConfigurationBuilder setIsUseHttpsWithDmaap(final Boolean val) {
146 isUseHttpsWithDmaap = val;
151 * Creates a new PssdConfigurationParametersGroup instance.
153 public SdcReceptionHandlerConfigurationParameterGroup build() {
154 return new SdcReceptionHandlerConfigurationParameterGroup(this);
159 * The constructor for instantiating PssdConfigurationParametersGroup. It is kept private so
160 * that it could only be called by PssdConfigurationBuilder.
162 * @param builder stores all the values used by PssdConfigurationParametersGroup
164 private SdcReceptionHandlerConfigurationParameterGroup(final SdcConfigurationBuilder builder) {
165 asdcAddress = builder.asdcAddress;
166 messageBusAddress = builder.messageBusAddress;
168 password = builder.password;
169 pollingInterval = builder.pollingInterval;
170 pollingTimeout = builder.pollingTimeout;
171 consumerId = builder.consumerId;
172 artifactTypes = builder.artifactTypes;
173 consumerGroup = builder.consumerGroup;
174 environmentName = builder.environmentName;
175 keyStorePath = builder.keystorePath;
176 keyStorePassword = builder.keystorePassword;
177 activeServerTlsAuth = builder.activeserverTlsAuth;
178 isFilterInEmptyResources = builder.isFilterinEmptyResources;
179 isUseHttpsWithDmaap = builder.isUseHttpsWithDmaap;
183 public String getAsdcAddress() {
187 public List<String> getMessageBusAddress() {
188 return messageBusAddress;
191 public String getUser() {
195 public String getPassword() {
199 public int getPollingInterval() {
200 return pollingInterval;
203 public int getPollingTimeout() {
204 return pollingTimeout;
207 public String getConsumerId() {
211 public List<String> getArtifactTypes() {
212 return artifactTypes;
215 public String getConsumerGroup() {
216 return consumerGroup;
219 public String getEnvironmentName() {
220 return environmentName;
223 public String getKeyStorePassword() {
224 return keyStorePassword;
227 public boolean isActiveServerTlsAuth() {
228 return activeServerTlsAuth;
231 public String getKeyStorePath() {
235 public boolean isFilterInEmptyResources() {
236 return isFilterInEmptyResources;
239 public boolean isUseHttpsWithDmaap() {
240 return isUseHttpsWithDmaap;
247 public String toString() {
248 return "name =" + getName() + ",TestParameters:[asdcAddress = " + asdcAddress + ", messageBusAddress = "
249 + messageBusAddress + ", user = " + user + "]";
253 * Set the name of this group.
255 * @param name the name to set.
258 public void setName(final String name) {
259 super.setName(name + "_" + UUID.randomUUID().toString());
266 public GroupValidationResult validate() {
267 final GroupValidationResult validationResult = new GroupValidationResult(this);
268 validateStringElement(validationResult, asdcAddress, "asdcAddress");
269 validateStringElement(validationResult, user, "user");
270 validateStringElement(validationResult, consumerId, "consumerId");
271 validateStringElement(validationResult, consumerGroup, "consumerGroup");
272 validateStringElement(validationResult, keyStorePath, "keyStorePath");
273 validateStringElement(validationResult, keyStorePassword, "keyStorePassword");
274 validateIntElement(validationResult, pollingInterval, "pollingInterval");
275 validateIntElement(validationResult, pollingTimeout, "pollingTimeout");
276 validateStringListElement(validationResult, messageBusAddress, "messageBusAddress");
277 validateStringListElement(validationResult, artifactTypes, "artifactTypes");
278 return validationResult;
282 * Validate the integer Element.
284 * @param validationResult the result object
285 * @param element the element to validate
286 * @param elementName the element name for error message
288 private void validateIntElement(final GroupValidationResult validationResult, final int element,
289 final String elementName) {
290 if (!ParameterValidationUtils.validateIntParameter(element)) {
291 validationResult.setResult(elementName, ValidationStatus.INVALID,
292 elementName + " must be a positive integer");
297 * Validate the String List Element.
299 * @param validationResult the result object
300 * @param element the element to validate
301 * @param elementName the element name for error message
303 private void validateStringListElement(final GroupValidationResult validationResult, final List<String> element,
304 final String elementName) {
305 if (element == null) {
306 validationResult.setResult(elementName, ValidationStatus.INVALID,
307 elementName + " must be a list of non-blank string");
309 for (final String temp : element) {
310 if (!ParameterValidationUtils.validateStringParameter(temp)) {
311 validationResult.setResult(elementName, ValidationStatus.INVALID,
312 "the string of " + elementName + "must be a non-blank string");
319 * Validate the string element.
321 * @param validationResult the result object
322 * @param element the element to validate
323 * @param elementName the element name for error message
325 private void validateStringElement(final GroupValidationResult validationResult, final String element,
326 final String elementName) {
327 if (!ParameterValidationUtils.validateStringParameter(asdcAddress)) {
328 validationResult.setResult(elementName, ValidationStatus.INVALID,
329 elementName + " must be a non-blank string");