package pl.touk.sputnik.processor.tslint; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import pl.touk.sputnik.processor.tools.externalprocess.ExternalProcessResultParser; import pl.touk.sputnik.processor.tslint.json.ListViolationsResponse; import pl.touk.sputnik.processor.tslint.json.TSLintFileInfo; import pl.touk.sputnik.review.Severity; import pl.touk.sputnik.review.Violation; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @Slf4j public class TSLintResultParser implements ExternalProcessResultParser { private final ObjectMapper objectMapper = new ObjectMapper(); @Override public List<Violation> parse(String jsonViolations) { if (StringUtils.isEmpty(jsonViolations)) { return Collections.emptyList(); } try { List<Violation> result = new ArrayList<>(); ListViolationsResponse violations = objectMapper .readValue(jsonViolations, ListViolationsResponse.class); log.debug(String.format("Converted from json format to %d violations.", violations.size())); for (TSLintFileInfo fileInfo : violations) { Violation violation = new Violation(fileInfo.getName(), fileInfo.getStartPosition().getLine(), fileInfo.getFailure(), Severity.ERROR); result.add(violation); } return result; } catch (IOException e) { throw new TSLintException("Error when converting from json format", e); } } }