2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.tosca.constraints;
23 import com.google.common.collect.Sets;
24 import org.openecomp.sdc.be.model.tosca.ToscaType;
25 import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintValueDoNotMatchPropertyTypeException;
26 import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException;
28 import javax.validation.constraints.NotNull;
29 import java.util.List;
32 public class ValidValuesConstraint extends AbstractPropertyConstraint {
35 private List<String> validValues;
36 private Set<Object> validValuesTyped;
38 public ValidValuesConstraint(List<String> validValues) {
39 this.validValues = validValues;
42 public ValidValuesConstraint() {
46 public void initialize(ToscaType propertyType) throws ConstraintValueDoNotMatchPropertyTypeException {
47 validValuesTyped = Sets.newHashSet();
48 if (validValues == null) {
49 throw new ConstraintValueDoNotMatchPropertyTypeException(
50 "validValues constraint has invalid value <> property type is <" + propertyType.toString() + ">");
52 for (String value : validValues) {
53 if (!propertyType.isValidValue(value)) {
54 throw new ConstraintValueDoNotMatchPropertyTypeException("validValues constraint has invalid value <"
55 + value + "> property type is <" + propertyType.toString() + ">");
57 validValuesTyped.add(propertyType.convert(value));
63 public void validate(Object propertyValue) throws ConstraintViolationException {
64 if (propertyValue == null) {
65 throw new ConstraintViolationException("Value to validate is null");
67 if (!validValuesTyped.contains(propertyValue)) {
68 throw new ConstraintViolationException("The value is not in the list of valid values");
72 public List<String> getValidValues() {
76 public void setValidValues(List<String> validValues) {
77 this.validValues = validValues;