/*- * ============LICENSE_START======================================================= * ONAP * ================================================================================ * Copyright (C) 2020 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.ObjectValidationResult; import org.onap.policy.common.parameters.ValidationStatus; 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 CdsServerParameters grpcServer; /** * Parameters for the REST server simulators that are to be started. */ private List restServers = new LinkedList<>(); /** * Topic sinks that are used by {@link #topicServers}. */ private List topicSinks = new LinkedList<>(); /** * Topic sources that are used by {@link #topicServers}. */ private List topicSources = new LinkedList<>(); /** * Parameters for the TOPIC server simulators that are to be started. */ private List 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 BeanValidationResult subResult = new BeanValidationResult("dmaapProvider", dmaapProvider); subResult.validateNotNull("name", dmaapProvider.getName()); if (dmaapProvider.getTopicSweepSec() < 1) { ObjectValidationResult fieldResult = new ObjectValidationResult("topicSweepSec", dmaapProvider.getTopicSweepSec(), ValidationStatus.INVALID, "is below the minimum value: 1"); subResult.addResult(fieldResult); } result.addResult(subResult); } if (grpcServer != null) { result.addResult(grpcServer.validate()); } result.validateList("restServers", restServers, params -> params.validate("restServers")); result.validateList("topicServers", topicServers, params -> params.validate("topicServers")); return result; } }