All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.grouter.compiler.processor.InterceptorProcessor Maven / Gradle / Ivy

package com.grouter.compiler.processor;

import com.alibaba.fastjson.JSON;
import com.grouter.RouterInterceptor;
import com.grouter.compiler.InterceptorModel;
import com.grouter.compiler.TypeUtils;
import com.squareup.javapoet.ClassName;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.Element;

public class InterceptorProcessor {
    private RouterProcessor routerProcessor;

    public InterceptorProcessor(RouterProcessor routerProcessor) {
        this.routerProcessor = routerProcessor;
    }
    public List  process(RoundEnvironment roundEnv) {
        Set elements = roundEnv.getElementsAnnotatedWith(RouterInterceptor.class);
        List interceptorModels = new ArrayList<>();
        for (Element element : elements) {
            RouterInterceptor routerInterceptor = element.getAnnotation(RouterInterceptor.class);
            ClassName className = (ClassName) ClassName.get(element.asType());
            InterceptorModel interceptorModel = new InterceptorModel();
            interceptorModel.priority = routerInterceptor.priority();
            interceptorModel.type = TypeUtils.reflectionName(className);
            interceptorModels.add(interceptorModel);
        }
        Collections.sort(interceptorModels);
//        File dir = new File(routerProcessor.GROUTER_SOURCE_PATH);
//        try {
//            dir = new File(dir, "com/grouter");
//            File file = new File(dir, "RouterInterceptor-" + routerProcessor.MODULE_NAME + ".json");
//            FileWriter fileWriter = new FileWriter(file);
//            fileWriter.write(JSON.toJSONString(interceptorModels, true));
//            fileWriter.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
        return interceptorModels;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy