KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > aval > annotation > structure > Type


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.annotation.structure;
22
23 import java.lang.annotation.Retention JavaDoc;
24 import java.lang.annotation.RetentionPolicy JavaDoc;
25
26 import spoon.aval.annotation.Implementation;
27 import spoon.aval.support.validator.TypeValidator;
28 import spoon.aval.support.validator.problemFixer.RemoveThisAnnotation;
29 import spoon.processing.ProblemFixer;
30 import spoon.processing.Severity;
31 import spoon.reflect.declaration.CtAnnotationType;
32
33 /**
34  * Validator that states that elements annotated with this annotation must be
35  * subtypes of the given type.
36  * <p>
37  * For example if <code>&#64;B</code> can only annotate elements of type String it would be defined as
38  * follows:
39  *
40  * <p>
41  *
42  * <pre>
43  * &#64;Type(String.class)
44  * &#64;Target(FIELD)
45  * public &#64;interface B {
46  * }
47  * </pre>
48  *
49  * </p>
50  *
51  * @see TypeValidator
52  */

53 @Retention JavaDoc(RetentionPolicy.RUNTIME)
54 @AValTarget(CtAnnotationType.class)
55 @Implementation(TypeValidator.class)
56 public @interface Type {
57
58     /**
59      * The type that restricts the annotation.
60      */

61     Class JavaDoc<?> value();
62     
63     /**
64      * Message to report when validation fails
65      */

66     String JavaDoc message() default "The use of this annotation must be defined on an element of type ?val";
67     
68     /**
69      * Severity of the validation faliure
70      */

71     Severity severity() default Severity.WARNING;
72     
73     
74     /**
75      * The list of {@link ProblemFixer}s to propose
76      * when the validation fails.
77      */

78     Class JavaDoc<? extends ProblemFixer>[] fixers() default {RemoveThisAnnotation.class};
79
80 }
81
Popular Tags