KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > aval > annotation > value > Matches


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.value;
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.annotation.structure.AValTarget;
28 import spoon.aval.annotation.structure.Type;
29 import spoon.aval.support.validator.MatchesValidator;
30 import spoon.aval.support.validator.problemFixer.RemoveThisAnnotation;
31 import spoon.processing.ProblemFixer;
32 import spoon.processing.Severity;
33 import spoon.reflect.declaration.CtField;
34
35 /**
36  * Validator that checks that the value of an attribute of type string matches
37  * to a given regular expression
38  * <p>
39  * For example, if the <code>value()<code> of an annotation <code>@A<code/> must either be "collection"
40  * or "singleton", the definition of <code>@A</code> must be:
41  *
42  * <p>
43  * <pre>
44  * public &#64;interface A{
45  * &#64;Matches("(collection|singleton)") String value();
46  * }
47  * </pre>
48  * </p>
49  *
50  * @see spoon.aval.support.validator.MatchesValidator
51  *
52  */

53 @Retention JavaDoc(RetentionPolicy.RUNTIME)
54 @AValTarget(CtField.class)
55 @Implementation(MatchesValidator.class)
56 @Type(CharSequence JavaDoc.class)
57 public @interface Matches {
58     /**
59      * A Java 1.4 regular expression.
60      *
61      * @see java.util.regex.Pattern
62      */

63     String JavaDoc value();
64     
65     /**
66      * Message to report when validation fails
67      */

68     String JavaDoc message() default "Value \"?val\" does not match ?regExp";
69     
70     /**
71      * Severity of the validation faliure
72      */

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

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