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 annotations, RoundEnvironment roundEnv) { try { return processImpl(annotations, roundEnv); } catch (Exception e) { fatalError(e); return false; } } protected abstract boolean processImpl(Set 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); } }