KickJava   Java API By Example, From Geeks To Geeks.

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


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.Annotation JavaDoc;
24 import java.lang.annotation.Retention JavaDoc;
25 import java.lang.annotation.RetentionPolicy JavaDoc;
26
27 import spoon.aval.annotation.Implementation;
28 import spoon.aval.support.validator.InsideValidator;
29 import spoon.aval.support.validator.problemFixer.DefaultInsideProblemFixer;
30 import spoon.aval.support.validator.problemFixer.RemoveThisAnnotation;
31 import spoon.processing.ProblemFixer;
32 import spoon.processing.Severity;
33 import spoon.reflect.declaration.CtAnnotationType;
34
35 /**
36  * Validator that states that the annotation can only be placed elements which
37  * are <em>inside</em> elements that are annotated with another element.
38  * <p>
39  * For example if <code>&#64;B</code> can only be placed on fields of classes that are annotated with
40  * <code>&#64;A</code>, the declaration of <code>&#64;B</code> would be:
41  * <pre>
42  * &#64;Inside(A.class)
43  * &#64;Target(FIELD)
44  * public &#64;interface B{}
45  * </pre>
46  *
47  * @see spoon.aval.support.validator.InsideValidator
48  */

49 @Retention JavaDoc(RetentionPolicy.RUNTIME)
50 @AValTarget(CtAnnotationType.class)
51 @Implementation(InsideValidator.class)
52 public @interface Inside {
53     /**
54      * The parent annotation
55      */

56     Class JavaDoc<? extends Annotation JavaDoc> value();
57     
58     /**
59      * Message to report when validation fails
60      */

61     String JavaDoc message() default "The use of this annotatiosn is only permited on an element inside @?val annotation ";
62     /**
63      * Severity of the validation faliure
64      */

65     Severity severity() default Severity.WARNING;
66     
67     /**
68      * The list of {@link ProblemFixer}s to propose
69      * when the validation fails.
70      */

71     Class JavaDoc<? extends ProblemFixer>[] fixers() default {DefaultInsideProblemFixer.class,RemoveThisAnnotation.class};
72 }
73
Popular Tags