com.airbnb.epoxy.processor.ImportScanner Maven / Gradle / Ivy
package com.airbnb.epoxy.processor;
import java.util.HashSet;
import java.util.Set;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.TypeParameterElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.ElementScanner7;
public class ImportScanner extends ElementScanner7 {
private Set types = new HashSet<>();
public Set getImportedTypes() {
return types;
}
@Override
public Void visitType(TypeElement e, Void p) {
for (TypeMirror interfaceType : e.getInterfaces()) {
types.add(interfaceType.toString());
}
TypeMirror superclass = e.getSuperclass();
SynchronizationKt.ensureLoaded(superclass);
types.add(superclass.toString());
return super.visitType(e, p);
}
@Override
public Void visitExecutable(ExecutableElement e, Void p) {
if (e.getReturnType().getKind() == TypeKind.DECLARED) {
types.add(e.getReturnType().toString());
}
return super.visitExecutable(e, p);
}
@Override
public Void visitTypeParameter(TypeParameterElement e, Void p) {
if (e.asType().getKind() == TypeKind.DECLARED) {
types.add(e.asType().toString());
}
return super.visitTypeParameter(e, p);
}
@Override
public Void visitVariable(VariableElement e, Void p) {
if (e.asType().getKind() == TypeKind.DECLARED) {
types.add(e.asType().toString());
}
return super.visitVariable(e, p);
}
}