package org.alien4cloud.tosca.model.definitions.constraints;
import javax.validation.constraints.NotNull;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import alien4cloud.json.deserializer.TextDeserializer;
import alien4cloud.tosca.normative.IPropertyType;
import alien4cloud.tosca.properties.constraints.exception.ConstraintValueDoNotMatchPropertyTypeException;
import alien4cloud.tosca.properties.constraints.exception.ConstraintViolationException;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false, of = { "lessOrEqual" })
@SuppressWarnings({ "unchecked" })
public class LessOrEqualConstraint extends AbstractComparablePropertyConstraint {
@JsonDeserialize(using = TextDeserializer.class)
@NotNull
private String lessOrEqual;
@Override
public void initialize(IPropertyType<?> propertyType) throws ConstraintValueDoNotMatchPropertyTypeException {
initialize(lessOrEqual, propertyType);
}
@Override
protected void doValidate(Object propertyValue) throws ConstraintViolationException {
if (getComparable().compareTo(propertyValue) < 0) {
throw new ConstraintViolationException(propertyValue + " >= " + lessOrEqual);
}
}
}