01: /**
02: * Spoon - http://spoon.gforge.inria.fr/
03: * Copyright (C) 2006 INRIA Futurs <renaud.pawlak@inria.fr>
04: *
05: * This software is governed by the CeCILL-C License under French law and
06: * abiding by the rules of distribution of free software. You can use,
07: * modify and/or redistribute the software under the terms of the
08: * CeCILL-C
09: * 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: */package spoon.aval.support.validator;
20:
21: import spoon.aval.Validator;
22: import spoon.aval.annotation.structure.AValTarget;
23: import spoon.aval.processing.AValProcessor;
24: import spoon.aval.processing.ValidationPoint;
25:
26: /**
27: * Implementation for the @Validator {@link AValTarget}
28: *
29: * <p>
30: * This class is responible for the validation of the target of an annotation.
31: * It takes the CtElement defined in the {@link AValTarget} and checks that it
32: * is the same type as the one in validation point. If it is not, it reports an
33: * ERROR
34: *
35: * @see AValTarget
36: */
37: public class AValTargetValidator implements Validator<AValTarget> {
38:
39: /**
40: * Implementation of the Validator interface. Called by
41: * {@link AValProcessor}
42: */
43: public void check(ValidationPoint<AValTarget> vp) {
44: if (!vp.getValAnnotation().value().isAssignableFrom(
45: vp.getProgramElement().getClass())) {
46: String message = vp.getValAnnotation().message().replace(
47: "?val", vp.getValAnnotation().value().toString());
48: ValidationPoint.report(vp.getValAnnotation().severity(), vp
49: .getDslAnnotation(), message, vp.fixerFactory(vp
50: .getValAnnotation().fixers()));
51: }
52: }
53:
54: }
|