/* * 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; import java.util.Collection; import java.util.Set; import javax.lang.model.element.ElementVisitor; import javax.lang.model.util.ElementKindVisitor6; import org.hibernate.validator.ap.checks.ConstraintCheckIssue; import org.hibernate.validator.ap.util.CollectionHelper; import org.hibernate.validator.ap.util.Configuration; import org.hibernate.validator.ap.util.MessagerAdapter; /** * An abstract {@link ElementVisitor} that should be used for implementation * of any other element visitors. The only method present in this class ({@link AbstractElementVisitor#reportIssues(Collection)} * is used to report found {@link ConstraintCheckIssue}s. Each {@link ConstraintCheckIssue} occurred will be reported using the * {@link javax.annotation.processing.Messager} API. * * @author Marko Bekhta */ public class AbstractElementVisitor<T, V> extends ElementKindVisitor6<T, V> { protected final MessagerAdapter messager; protected final boolean verbose; public AbstractElementVisitor( MessagerAdapter messager, Configuration configuration) { this.messager = messager; this.verbose = configuration.isVerbose(); } /** * Reports provided issues using {@link javax.annotation.processing.Messager} API based on their * kind ({@link ConstraintCheckIssue.IssueKind}). * * @param foundIssues a collection of issues to be reported */ protected void reportIssues(Collection<ConstraintCheckIssue> foundIssues) { Set<ConstraintCheckIssue> warnings = CollectionHelper.newHashSet(); Set<ConstraintCheckIssue> errors = CollectionHelper.newHashSet(); for ( ConstraintCheckIssue issue : foundIssues ) { if ( issue.isError() ) { errors.add( issue ); } else if ( issue.isWarning() ) { warnings.add( issue ); } } messager.reportErrors( errors ); messager.reportWarnings( warnings ); } }