package autodagger.compiler;
import com.google.common.collect.ImmutableList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.lang.model.element.Element;
import javax.lang.model.type.TypeMirror;
import processorworkflow.AbstractState;
/**
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
public class State extends AbstractState {
private final Map<Element, AdditionExtractor> injectorExtractors = new HashMap<>();
private final Map<Element, AdditionExtractor> exposeExtractors = new HashMap<>();
private final Map<TypeMirror, List<TypeMirror>> subcomponentsModules = new HashMap<>();
public void addInjectorExtractor(AdditionExtractor extractor) {
if (injectorExtractors.containsKey(extractor.getElement())) {
return;
}
injectorExtractors.put(extractor.getElement(), extractor);
}
public void addExposeExtractor(AdditionExtractor extractor) {
if (exposeExtractors.containsKey(extractor.getElement())) {
return;
}
exposeExtractors.put(extractor.getElement(), extractor);
}
public void addSubcomponentModule(TypeMirror typeMirror, List<TypeMirror> modules) {
subcomponentsModules.put(typeMirror, modules);
}
public ImmutableList<AdditionExtractor> getInjectorExtractors() {
return ImmutableList.copyOf(injectorExtractors.values());
}
public ImmutableList<AdditionExtractor> getExposeExtractors() {
return ImmutableList.copyOf(exposeExtractors.values());
}
public ImmutableList<TypeMirror> getSubcomponentModules(TypeMirror typeMirror) {
if (!subcomponentsModules.containsKey(typeMirror)) {
return null;
}
return ImmutableList.copyOf(subcomponentsModules.get(typeMirror));
}
}