1 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 37 public class TypeValidator implements Validator<Type> { 38 39 42 public void check(ValidationPoint<Type> vp) { 43 Class <?> 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 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 |