/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.ap.checks;
import java.util.Set;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
import org.hibernate.validator.ap.util.CollectionHelper;
import org.hibernate.validator.ap.util.ConstraintHelper;
/**
* A {@link ConstraintChecks} implementation that executes the contained checks
* against all parts of given multi-valued annotations.
*
* @author Gunnar Morling
*/
public class MultiValuedChecks implements ConstraintChecks {
private final ConstraintHelper constraintHelper;
private final SingleValuedChecks delegate;
/**
* Creates a new MultiValuedChecks.
*
* @param constraintHelper Helper for handling multi-valued constraints.
* @param checks The checks to execute.
*/
public MultiValuedChecks(ConstraintHelper constraintHelper,
ConstraintCheck... checks) {
this.constraintHelper = constraintHelper;
this.delegate = new SingleValuedChecks( checks );
}
@Override
public Set<ConstraintCheckIssue> execute(Element element, AnnotationMirror annotation) {
Set<ConstraintCheckIssue> theValue = CollectionHelper.newHashSet();
//execute the checks on each element of the multi-valued constraint
for ( AnnotationMirror onePartOfMultiValuedConstraint :
constraintHelper.getPartsOfMultiValuedConstraint( annotation ) ) {
theValue.addAll( delegate.execute( element, onePartOfMultiValuedConstraint ) );
}
return theValue;
}
}