KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > aval > support > validator > TypeValidator


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.support.validator;
22
23 import spoon.aval.Validator;
24 import spoon.aval.annotation.structure.Type;
25 import spoon.aval.processing.AValProcessor;
26 import spoon.aval.processing.ValidationPoint;
27 import spoon.processing.Severity;
28 import spoon.reflect.declaration.CtType;
29 import spoon.reflect.declaration.CtTypedElement;
30 /**
31  * Implementation of the {@link Type} Validator.
32  * <p>
33  * This class implements the {@link Type} Validator.
34  * it checks that the current validation point is of the type described in the
35  * &#64;Type instance. If this is not the case, an ERROR is reported
36  */

37 public class TypeValidator implements Validator<Type> {
38     
39     /**
40      * Implementation of the Validator interface. Called by {@link AValProcessor}
41      */

42     public void check(ValidationPoint<Type> vp) {
43         Class JavaDoc<?> actualClass = null;
44         if (vp.getProgramElement() instanceof CtTypedElement<?>) {
45             CtTypedElement<?> typed = (CtTypedElement<?>) vp
46                     .getProgramElement();
47             actualClass = typed.getType().getActualClass();
48
49         }
50
51         if (vp.getProgramElement() instanceof CtType<?>) {
52             actualClass = ((CtType) vp.getProgramElement()).getActualClass();
53         }
54
55         if (actualClass == null) {
56             ValidationPoint.report(Severity.ERROR, vp.getProgramElement(),
57                     "Not a type!");
58             return;
59         }
60
61         if (!vp.getValAnnotation().value().isAssignableFrom(actualClass)) {
62             String JavaDoc message = vp.getValAnnotation().message().replace("?val", vp.getValAnnotation().value().toString());
63             ValidationPoint.report(vp.getValAnnotation().severity(), vp.getDslAnnotation(),
64                     message,vp.fixerFactory(vp.getValAnnotation().fixers()));
65         }
66     }
67 }
68
Popular Tags