yangys
2024-04-04 ed4a5236bab800094be4a8378f5098eebe3de6ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.qianwen.smart.core.auto.common;
 
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;
 
public abstract class AbstractBladeProcessor extends AbstractProcessor {
  public SourceVersion getSupportedSourceVersion() {
    return SourceVersion.latestSupported();
  }
  
  public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    try {
      return processImpl(annotations, roundEnv);
    } catch (Exception e) {
      fatalError(e);
      return false;
    } 
  }
  
  protected abstract boolean processImpl(Set<? extends TypeElement> paramSet, RoundEnvironment paramRoundEnvironment);
  
  protected void log(String msg) {
    if (this.processingEnv.getOptions().containsKey("debug"))
      this.processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, msg); 
  }
  
  protected void error(String msg, Element element, AnnotationMirror annotation) {
    this.processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, msg, element, annotation);
  }
  
  protected void fatalError(Exception e) {
    StringWriter writer = new StringWriter();
    e.printStackTrace(new PrintWriter(writer));
    fatalError(writer.toString());
  }
  
  protected void fatalError(String msg) {
    this.processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "FATAL ERROR: " + msg);
  }
}