34 import javax.lang.model.element.AnnotationMirror;
35 import javax.lang.model.element.Element;
36 import javax.lang.model.element.TypeElement;
37 import javax.tools.Diagnostic.Kind;
38
39 import org.graalvm.compiler.processor.AbstractProcessor;
40
41 /**
42 * Processor for annotation types in the {@code org.graalvm.compiler.replacements} name space.
43 */
44 public class ReplacementsAnnotationProcessor extends AbstractProcessor {
45
46 private List<AnnotationHandler> handlers;
47
48 @Override
49 public SourceVersion getSupportedSourceVersion() {
50 return SourceVersion.latest();
51 }
52
53 @Override
54 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
55 if (!roundEnv.processingOver()) {
56 PluginGenerator generator = new PluginGenerator();
57 for (AnnotationHandler handler : getHandlers()) {
58 TypeElement annotationClass = getTypeElementOrNull(handler.annotationTypeName);
59 if (annotationClass != null) {
60 for (Element e : roundEnv.getElementsAnnotatedWith(annotationClass)) {
61 AnnotationMirror annotationMirror = getAnnotation(e, annotationClass.asType());
62 handler.process(e, annotationMirror, generator);
63 }
64 } else {
65 Set<? extends Element> roots = roundEnv.getRootElements();
66 String message = String.format("Processor %s disabled as %s is not resolvable on the compilation class path", handler.getClass().getName(), handler.annotationTypeName);
67 if (roots.isEmpty()) {
68 env().getMessager().printMessage(Kind.WARNING, message);
69 } else {
70 env().getMessager().printMessage(Kind.WARNING, message, roots.iterator().next());
71 }
72 }
73 }
74 generator.generateAll(this);
|
34 import javax.lang.model.element.AnnotationMirror;
35 import javax.lang.model.element.Element;
36 import javax.lang.model.element.TypeElement;
37 import javax.tools.Diagnostic.Kind;
38
39 import org.graalvm.compiler.processor.AbstractProcessor;
40
41 /**
42 * Processor for annotation types in the {@code org.graalvm.compiler.replacements} name space.
43 */
44 public class ReplacementsAnnotationProcessor extends AbstractProcessor {
45
46 private List<AnnotationHandler> handlers;
47
48 @Override
49 public SourceVersion getSupportedSourceVersion() {
50 return SourceVersion.latest();
51 }
52
53 @Override
54 public boolean doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
55 if (!roundEnv.processingOver()) {
56 PluginGenerator generator = new PluginGenerator();
57 for (AnnotationHandler handler : getHandlers()) {
58 TypeElement annotationClass = getTypeElementOrNull(handler.annotationTypeName);
59 if (annotationClass != null) {
60 for (Element e : roundEnv.getElementsAnnotatedWith(annotationClass)) {
61 AnnotationMirror annotationMirror = getAnnotation(e, annotationClass.asType());
62 handler.process(e, annotationMirror, generator);
63 }
64 } else {
65 Set<? extends Element> roots = roundEnv.getRootElements();
66 String message = String.format("Processor %s disabled as %s is not resolvable on the compilation class path", handler.getClass().getName(), handler.annotationTypeName);
67 if (roots.isEmpty()) {
68 env().getMessager().printMessage(Kind.WARNING, message);
69 } else {
70 env().getMessager().printMessage(Kind.WARNING, message, roots.iterator().next());
71 }
72 }
73 }
74 generator.generateAll(this);
|