package com.rayo.core.validation; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import com.rayo.core.verb.Choices; import com.rayo.core.verb.Input; public class ChoicesValidator implements ConstraintValidator<ValidChoices, Input> { @Override public void initialize(ValidChoices constraint) { } @Override public boolean isValid(Input value, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); if (!((value.getGrammars() != null && value.getGrammars().size() > 0) || value.getCpaData() != null)) { context.buildConstraintViolationWithTemplate( Messages.MISSING_CHOICES) .addConstraintViolation(); return false; } for(Choices choice: value.getGrammars()) { if (!choice.isContentsOrUrlSpecified()) { context.buildConstraintViolationWithTemplate( Messages.MISSING_CHOICES_CONTENT_OR_URL) .addConstraintViolation(); return false; } if (!choice.isContentsTypeSpecifiedWithInlineContents()) { context.buildConstraintViolationWithTemplate( Messages.MISSING_CHOICES_CONTENT_TYPE) .addConstraintViolation(); return false; } } return true; } }