/**
* Spoon - http://spoon.gforge.inria.fr/
* Copyright (C) 2006 INRIA Futurs <renaud.pawlak@inria.fr>
*
* This software is governed by the CeCILL-C License under French law and
* abiding by the rules of distribution of free software. You can use,
* modify and/or redistribute the software under the terms of the
* CeCILL-C
* license as circulated by CEA, CNRS and INRIA at the following URL:
* http://www.cecill.info.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL-C
* License for more details.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-C license and that you accept its terms.
*/
package spoon.aval.annotation.value;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import spoon.aval.annotation.Implementation;
import spoon.aval.annotation.structure.Type;
import spoon.aval.support.validator.URLValidator;
import spoon.aval.support.validator.problemFixer.RemoveThisAnnotation;
import spoon.processing.ProblemFixer;
import spoon.processing.Severity;
/**
* Validator that checks that the value of the annotation is a valid URL
* <p>
* For example, if the
* <code>value()<code> of an annotation <code>@A<code/> must be an URL,
* the definition of <code>@A</code> must be:
*
* <p>
* <pre>
* public @interface A{
* @URLValue() String value();
* }
* </pre>
* </p>
*
* @see spoon.aval.support.validator.URLValidator
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Implementation(URLValidator.class)
@Type(CharSequence.class)
public @interface URLValue {
/**
* Message to report when validation fails
*/
String message() default "Value \"?val\" is supposed to be an URL ";
/**
* Severity of the validation faliure
*/
Severity severity() default Severity.WARNING;
/**
* The list of {@link ProblemFixer}s to propose
* when the validation fails.
*/
Class<? extends ProblemFixer>[] fixers() default {RemoveThisAnnotation.class};
}
|