package hudson.plugins.warnings.parser;
import hudson.plugins.analysis.util.model.Priority;
import java.util.regex.Matcher;
import org.apache.commons.lang.StringUtils;
/**
* A parser for the ant javac compiler warnings.
*
* @author Ulli Hafner
*/
public class AntEclipseParser extends RegexpDocumentParser {
/** Warning type of this parser. */
static final String WARNING_TYPE = "Eclipse Java Compiler";
/** Pattern of javac compiler warnings. */
private static final String ANT_ECLIPSE_WARNING_PATTERN = "(WARNING|ERROR)\\s*in\\s*(.*)\\(at line\\s*(\\d+)\\).*(?:\\r?\\n.*){2}\\r?\\n(?:\\s*\\[.*\\]\\s*)?(.*)";
/**
* Creates a new instance of <code>AntJavacParser</code>.
*/
public AntEclipseParser() {
super(ANT_ECLIPSE_WARNING_PATTERN, true, WARNING_TYPE);
}
/**
* Creates a new annotation for the specified pattern.
*
* @param matcher the regular expression matcher
* @return a new annotation for the specified pattern
*/
@Override
protected Warning createWarning(final Matcher matcher) {
String type = StringUtils.capitalize(matcher.group(1));
Priority priority;
if ("warning".equalsIgnoreCase(type)) {
priority = Priority.NORMAL;
}
else {
priority = Priority.HIGH;
}
return new Warning(matcher.group(2), getLineNumber(matcher.group(3)), WARNING_TYPE, StringUtils.EMPTY, matcher.group(4), priority);
}
}