01: /**
02: * Spoon - http://spoon.gforge.inria.fr/
03: * Copyright (C) 2006 INRIA Futurs <renaud.pawlak@inria.fr>
04: *
05: * This software is governed by the CeCILL-C License under French law and
06: * abiding by the rules of distribution of free software. You can use,
07: * modify and/or redistribute the software under the terms of the
08: * CeCILL-C
09: * 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: */package spoon.aval;
20:
21: import java.lang.annotation.Annotation;
22:
23: import spoon.aval.processing.ValidationPoint;
24:
25: /**
26: * This interface defines classes that implement the validation of
27: * a validation annotation in AVal. A class that implements this
28: * interface is used as parameter for the {@link spoon.aval.annotation.Implementation#value()}
29: *
30: * @param <V> The type of the annotation it validates.
31: * @see spoon.aval.annotation.Implementation
32: */
33: public interface Validator<V extends Annotation> {
34:
35: /**
36: * This method implements the validation for a given meta-annotation
37: *
38: * Each time a meta-annotation is to be validated, a new instance of the
39: * class is constructed,and this method is called. Because of this, information
40: * that needs to be kept between validations <em>must</em> be kept in static fields.
41: *
42: * It is this method's responsability to raise errors or warnings as it
43: * sees fit.
44: *
45: * @param vp a ValidationPoint containing the information relevant to validate
46: * the use of an annotation
47: */
48: public void check(ValidationPoint<V> vp);
49: }
|