1 /** 2 * Spoon - http://spoon.gforge.inria.fr/ 3 * Copyright (C) 2006 INRIA Futurs <renaud.pawlak@inria.fr> 4 * 5 * This software is governed by the CeCILL-C License under French law and 6 * abiding by the rules of distribution of free software. You can use, 7 * modify and/or redistribute the software under the terms of the 8 * CeCILL-C 9 * license as circulated by CEA, CNRS and INRIA at the following URL: 10 * http://www.cecill.info. 11 * 12 * This program is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL-C 15 * License for more details. 16 * 17 * The fact that you are presently reading this means that you have had 18 * knowledge of the CeCILL-C license and that you accept its terms. 19 */ 20 21 package spoon.aval; 22 23 import java.lang.annotation.Annotation; 24 25 import spoon.aval.processing.ValidationPoint; 26 /** 27 * This interface defines classes that implement the validation of 28 * a validation annotation in AVal. A class that implements this 29 * interface is used as parameter for the {@link spoon.aval.annotation.Implementation#value()} 30 * 31 * @param <V> The type of the annotation it validates. 32 * @see spoon.aval.annotation.Implementation 33 */ 34 public interface Validator<V extends Annotation> { 35 36 37 /** 38 * This method implements the validation for a given meta-annotation 39 * 40 * Each time a meta-annotation is to be validated, a new instance of the 41 * class is constructed,and this method is called. Because of this, information 42 * that needs to be kept between validations <em>must</em> be kept in static fields. 43 * 44 * It is this method's responsability to raise errors or warnings as it 45 * sees fit. 46 * 47 * @param vp a ValidationPoint containing the information relevant to validate 48 * the use of an annotation 49 */ 50 public void check(ValidationPoint<V> vp); 51 } 52