package org.eclim.checkstyle;
import com.puppycrawl.tools.checkstyle.api.Check;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import com.puppycrawl.tools.checkstyle.api.Utils;
/**
* Check the location of the 'throws' clause.
*/
public class ThrowsClauseCheck
extends Check
{
@Override
public int[] getDefaultTokens()
{
return new int[] {
TokenTypes.LITERAL_THROWS,
};
}
@Override
public int[] getRequiredTokens()
{
return getDefaultTokens();
}
@Override
public void visitToken(DetailAST aAST)
{
switch (aAST.getType()) {
case TokenTypes.LITERAL_THROWS:
visitLiteralThrows(aAST);
break;
default:
throw new IllegalStateException(aAST.toString());
}
}
private void visitLiteralThrows(DetailAST aAST)
{
final String throwsLine = getLines()[aAST.getLineNo() - 1];
if (!Utils.whitespaceBefore(aAST.getColumnNo(), throwsLine)) {
log(aAST.getLineNo(), aAST.getColumnNo(), "line.new", "throws");
}
}
@Override
protected String getMessageBundle()
{
return "com.puppycrawl.tools.checkstyle.checks.blocks.messages";
}
}