aboutsummaryrefslogtreecommitdiffstats
path: root/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java
blob: 28c4f42d2c3eaeafe68a12aeca4c697612361158 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*-
 * ============LICENSE_START=======================================================
 * ONAP
 * ================================================================================
 * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
 * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.models.simulators;

import java.util.LinkedList;
import java.util.List;
import lombok.Getter;
import org.onap.policy.common.endpoints.parameters.TopicParameters;
import org.onap.policy.common.parameters.BeanValidationResult;
import org.onap.policy.common.parameters.BeanValidator;
import org.onap.policy.common.parameters.ValidationStatus;
import org.onap.policy.common.parameters.annotations.Valid;
import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup;

/**
 * Simulator parameters.
 */
@Getter
public class SimulatorParameters {

    /**
     * Note: this is only used to capture the provider's parameters; the rest server
     * parameters that it contains are ignored. Instead, the parameters for the rest
     * server are contained within the {@link #restServers} entry having the same name as
     * the provider parameters.
     */
    private DmaapSimParameterGroup dmaapProvider;

    private @Valid CdsServerParameters grpcServer;

    /**
     * Parameters for the REST server simulators that are to be started.
     */
    private List<@Valid ClassRestServerParameters> restServers = new LinkedList<>();

    /**
     * Topic sinks that are used by {@link #topicServers}.
     */
    private List<@Valid TopicParameters> topicSinks = new LinkedList<>();

    /**
     * Topic sources that are used by {@link #topicServers}.
     */
    private List<@Valid TopicParameters> topicSources = new LinkedList<>();

    /**
     * Parameters for the TOPIC server simulators that are to be started.
     */
    private List<@Valid TopicServerParameters> topicServers = new LinkedList<>();


    /**
     * Validates the parameters.
     *
     * @param containerName name of the parameter container
     * @return the validation result
     */
    public BeanValidationResult validate(String containerName) {
        BeanValidationResult result = new BeanValidator().validateTop(containerName, this);

        if (dmaapProvider != null) {
            // do not want full validation of the provider, so validate the relevant
            // fields ourselves
            var subResult = new BeanValidationResult("dmaapProvider", dmaapProvider);
            subResult.validateNotNull("name", dmaapProvider.getName());
            if (dmaapProvider.getTopicSweepSec() < 1) {
                subResult.addResult("topicSweepSec", dmaapProvider.getTopicSweepSec(),
                                ValidationStatus.INVALID, "is below the minimum value: 1");
            }
            result.addResult(subResult);
        }

        return result;
    }
}