package net.cattaka.util.cathandsgendroid.apt;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import org.mvel2.optimizers.OptimizerFactory;
import net.cattaka.util.cathandsgendroid.annotation.AsyncInterface;
import net.cattaka.util.cathandsgendroid.annotation.DataModel;
/**
* Annotation processing logic.
*
* @author cattaka
*/
@SupportedSourceVersion(SourceVersion.RELEASE_7)
@SupportedAnnotationTypes("net.cattaka.util.cathandsgendroid.annotation.*")
public class CatHandsGendroidProcessor extends AbstractProcessor {
@Override
public synchronized void init(ProcessingEnvironment env) {
super.init(env);
}
@Override
public boolean process(Set<? extends TypeElement> elements, RoundEnvironment roundEnv) {
OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE);
DataModelProcessor processor = new DataModelProcessor(processingEnv);
for (Element element : roundEnv.getElementsAnnotatedWith(DataModel.class)) {
processor.process((TypeElement)element, roundEnv);
}
AsycInterfaceProcessor processor2 = new AsycInterfaceProcessor(processingEnv);
for (Element element : roundEnv.getElementsAnnotatedWith(AsyncInterface.class)) {
processor2.process((TypeElement)element, roundEnv);
}
return false;
}
}