package cn.axzo.workflow.generate;

import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
import java.lang.annotation.Annotation;

public interface CodeGenProcessor {
    /**
     * 需要解析的类上的注解
     *
     * @return
     */
    Class<? extends Annotation> getAnnotation();

    /**
     * 获取生成的包名
     *
     * @param typeElement
     * @return
     */
    String generatePackage(TypeElement typeElement);

    /**
     * 代码生成逻辑.
     *
     * @param typeElement
     * @param roundEnvironment
     * @throws Exception
     */
    GenCodeInfo generate(TypeElement typeElement, RoundEnvironment roundEnvironment) throws Exception;
}
