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.problemFixer;
20:
21: import java.lang.annotation.Annotation;
22:
23: import spoon.aval.annotation.structure.Inside;
24: import spoon.aval.processing.ValidationPoint;
25: import spoon.processing.AbstractProblemFixer;
26: import spoon.reflect.Changes;
27: import spoon.reflect.declaration.CtElement;
28:
29: public class DefaultInsideProblemFixer extends AbstractProblemFixer
30: implements AValFixer<Inside> {
31:
32: private Class<? extends Annotation> expectedAnnotation;
33:
34: public String getDescription() {
35: return "Annotates the parent with the missing "
36: + expectedAnnotation.getName() + " annotation";
37: }
38:
39: public String getLabel() {
40: return "Annotate parent with " + expectedAnnotation.getName();
41: }
42:
43: public Changes run(CtElement element) {
44: Changes mod = new Changes();
45: element.getFactory().Annotation().annotate(element.getParent(),
46: expectedAnnotation);
47: mod.getModified().add(element);
48: return mod;
49: }
50:
51: public void setValidationPoint(ValidationPoint<Inside> vp) {
52: expectedAnnotation = (Class<? extends Annotation>) vp
53: .getValAnnotation().value();
54: }
55:
56: }
|