Use new RestClientParameters class in xacml-pdp
[policy/xacml-pdp.git] / main / src / main / java / org / onap / policy / pdpx / main / parameters / XacmlPdpParameterGroup.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
4  * Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.pdpx.main.parameters;
23
24 import lombok.Getter;
25 import org.apache.commons.lang3.StringUtils;
26 import org.onap.policy.common.endpoints.parameters.RestClientParameters;
27 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
28 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
29 import org.onap.policy.common.parameters.BeanValidationResult;
30 import org.onap.policy.common.parameters.ParameterGroupImpl;
31 import org.onap.policy.common.parameters.ValidationStatus;
32 import org.onap.policy.common.parameters.annotations.NotBlank;
33 import org.onap.policy.common.parameters.annotations.NotNull;
34 import org.onap.policy.common.parameters.annotations.Valid;
35 import org.onap.policy.models.base.Validated;
36
37 /**
38  * Class to hold all parameters needed for xacml pdp component.
39  *
40  */
41 @Getter
42 @NotNull
43 @NotBlank
44 public class XacmlPdpParameterGroup extends ParameterGroupImpl {
45     public static final String PARAM_POLICY_API = "policyApiParameters";
46
47     private String pdpGroup;
48     private String pdpType;
49     @Valid
50     private RestServerParameters restServerParameters;
51     @Valid
52     private RestClientParameters policyApiParameters;
53     @Valid
54     private TopicParameterGroup topicParameterGroup;
55     @Valid
56     private XacmlApplicationParameters applicationParameters;
57
58     /**
59      * Create the xacml pdp parameter group.
60      *
61      * @param name the parameter group name
62      * @param pdpGroup the pdp group name
63      */
64     public XacmlPdpParameterGroup(final String name, final String pdpGroup, final String pdpType,
65             final RestServerParameters restServerParameters, final RestClientParameters policyApiParameters,
66             final TopicParameterGroup topicParameterGroup, final XacmlApplicationParameters applicationParameters) {
67         super(name);
68         this.pdpGroup = pdpGroup;
69         this.pdpType = pdpType;
70         this.restServerParameters = restServerParameters;
71         this.policyApiParameters = policyApiParameters;
72         this.topicParameterGroup = topicParameterGroup;
73         this.applicationParameters = applicationParameters;
74     }
75
76     /**
77      * Validate the parameter group.
78      *
79      * @return the result of the validation
80      */
81     @Override
82     public BeanValidationResult validate() {
83         final BeanValidationResult validationResult = super.validate();
84
85         if (policyApiParameters != null && StringUtils.isBlank(policyApiParameters.getHostname())) {
86             var sub = new BeanValidationResult(PARAM_POLICY_API, policyApiParameters);
87             sub.addResult("hostname", policyApiParameters.getHostname(), ValidationStatus.INVALID, Validated.IS_NULL);
88             validationResult.addResult(sub);
89         }
90
91         return validationResult;
92     }
93 }