package org.jboss.resteasy.test.validation.resource;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.constraintvalidation.SupportedValidationTarget;
import javax.validation.constraintvalidation.ValidationTarget;

@SupportedValidationTarget(ValidationTarget.PARAMETERS)
public class ValidationComplexCrossParameterValidator
        implements ConstraintValidator<ValidationComplexCrossParameterConstraint, Object[]> {
    private ValidationComplexCrossParameterConstraint constraintAnnotation;

    @Override
    public void initialize(ValidationComplexCrossParameterConstraint constraintAnnotation) {
        this.constraintAnnotation = constraintAnnotation;
    }

    @Override
    public boolean isValid(Object[] value, ConstraintValidatorContext context) {
        int sum = 0;

        for (int i = 0; i < value.length; i++) {
            if (!(value[i] instanceof Integer)) {
                return false;
            }
            sum += Integer.class.cast(value[i]);
        }
        return sum <= constraintAnnotation.value();
    }
}
