package com.airbnb.epoxy;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.processing.Messager;
import javax.tools.Diagnostic;
import static com.airbnb.epoxy.Utils.buildEpoxyException;
class ErrorLogger {
private final List<Exception> loggedExceptions = new ArrayList<>();
void writeExceptions(Messager messager) {
for (Exception loggedException : loggedExceptions) {
messager.printMessage(Diagnostic.Kind.ERROR, loggedException.toString());
}
}
/**
* Errors are logged and saved until after classes are generating. Otherwise if we throw
* immediately the models are not generated which leads to lots of other compiler errors which
* mask the actual issues.
*/
void logError(Exception e) {
loggedExceptions.add(e);
}
void logError(Exception e, String message) {
if (!(e instanceof EpoxyProcessorException)) {
e = new EpoxyProcessorException(e, message + " : " + e);
}
loggedExceptions.add(e);
}
void logError(String msg, Object... args) {
logError(buildEpoxyException(msg, args));
}
void logErrors(List<Exception> exceptions) {
for (Exception exception : exceptions) {
logError(exception);
}
}
}