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; 24 import java.lang.annotation.RetentionPolicy; 25 26 import spoon.aval.annotation.Implementation; 27 import spoon.aval.annotation.structure.Type; 28 import spoon.aval.support.validator.URLValidator; 29 import spoon.aval.support.validator.problemFixer.RemoveThisAnnotation; 30 import spoon.processing.ProblemFixer; 31 import spoon.processing.Severity; 32 33 /** 34 * Validator that checks that the value of the annotation is a valid URL 35 * <p> 36 * For example, if the 37 * <code>value()<code> of an annotation <code>@A<code/> must be an URL, 38 * the definition of <code>@A</code> must be: 39 * 40 * <p> 41 * <pre> 42 * public @interface A{ 43 * @URLValue() String value(); 44 * } 45 * </pre> 46 * </p> 47 * 48 * @see spoon.aval.support.validator.URLValidator 49 50 * 51 */ 52 @Retention(RetentionPolicy.RUNTIME) 53 @Implementation(URLValidator.class) 54 @Type(CharSequence.class) 55 public @interface URLValue { 56 /** 57 * Message to report when validation fails 58 */ 59 String message() default "Value \"?val\" is supposed to be an URL "; 60 61 /** 62 * Severity of the validation faliure 63 */ 64 Severity severity() default Severity.WARNING; 65 66 /** 67 * The list of {@link ProblemFixer}s to propose 68 * when the validation fails. 69 */ 70 Class<? extends ProblemFixer>[] fixers() default {RemoveThisAnnotation.class}; 71 72 } 73