package net.karneim.pojobuilder.testenv;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import org.junit.runner.RunWith;
public class ProcessingInterceptor extends AbstractProcessor {
private ProcessorListener listener;
private ProcessingEnvironment processingEnv;
public ProcessingInterceptor() {}
public void setListener(ProcessorListener aListener) {
this.listener = aListener;
}
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
this.processingEnv = processingEnv;
super.init(processingEnv);
}
public ProcessingEnvironment getProcessingEnv() {
return processingEnv;
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (roundEnv.processingOver()) {
return false;
}
if (listener != null) {
listener.onInvoke(getProcessingEnv(), roundEnv);
}
return true;
}
@Override
public Set<String> getSupportedAnnotationTypes() {
return new HashSet<String>(Arrays.asList(RunWith.class.getCanonicalName()));
}
@Override
public SourceVersion getSupportedSourceVersion() {
return SourceVersion.latest();
}
}