package org.alien4cloud.tosca.model.definitions.constraints; import alien4cloud.tosca.properties.constraints.exception.ConstraintViolationException; import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.regex.Pattern; import javax.validation.constraints.NotNull; import lombok.EqualsAndHashCode; import lombok.Getter; @Getter @EqualsAndHashCode(callSuper = false, of = { "pattern" }) public class PatternConstraint extends AbstractStringPropertyConstraint { @NotNull private String pattern; @JsonIgnore private Pattern compiledPattern; public void setPattern(String pattern) { this.pattern = pattern; this.compiledPattern = Pattern.compile(this.pattern); } @Override protected void doValidate(String propertyValue) throws ConstraintViolationException { if (!compiledPattern.matcher(propertyValue).matches()) { throw new ConstraintViolationException("The value do not match pattern " + pattern); } } }