X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fcheckstyle-logging%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fcheckstyle%2FLoggerFactoryClassParameterCheck.java;h=21d4abacbafbeecc6e760a48169c41dd7932eb46;hb=a93d098c5ea45c25d61db588c8082d1b8553628e;hp=95915250e46c90222dbc2f9c81497143ba53325b;hpb=60e6cd382641b756c70a4d6555a345a5f4726040;p=yangtools.git diff --git a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java index 95915250e4..21d4abacba 100644 --- a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java +++ b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java @@ -8,30 +8,64 @@ package org.opendaylight.yangtools.checkstyle; -import com.puppycrawl.tools.checkstyle.api.Check; +import com.puppycrawl.tools.checkstyle.api.AbstractCheck; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; +import java.util.Optional; -public class LoggerFactoryClassParameterCheck extends Check { +public class LoggerFactoryClassParameterCheck extends AbstractCheck { private static final String LOG_MESSAGE = "LoggerFactory.getLogger Class argument is incorrect."; - private static final String METHOD_NAME = "getLogger"; + private static final String METHOD_NAME = "LoggerFactory.getLogger"; + private static final int[] TOKENS = { TokenTypes.METHOD_CALL }; @Override public int[] getDefaultTokens() { - return new int[]{TokenTypes.METHOD_CALL}; + return TOKENS; } @Override - public void visitToken(DetailAST aAST) { - final String methodName = CheckLoggingUtil.getMethodName(aAST); - if(methodName.equals(METHOD_NAME)) { - final String className = CheckLoggingUtil.getClassName(aAST); - final String parameter = aAST.findFirstToken(TokenTypes.ELIST).getFirstChild().getFirstChild().getFirstChild().getText(); - if(!parameter.equals(className)) { - log(aAST.getLineNo(), LOG_MESSAGE); + public int[] getAcceptableTokens() { + return TOKENS; + } + + @Override + public int[] getRequiredTokens() { + return TOKENS; + } + + @Override + public void visitToken(final DetailAST ast) { + final String methodName = CheckLoggingUtil.getMethodName(ast); + if (methodName.equals(METHOD_NAME)) { + final String className = CheckLoggingUtil.getClassName(ast); + final Optional optLoggerArgument = getFirstArgument(ast); + if (optLoggerArgument.isPresent()) { + if (!optLoggerArgument.get().equals(className)) { + log(ast.getLineNo(), LOG_MESSAGE); + } + } else { + log(ast.getLineNo(), + String.format("Invalid parameter in \"getLogger\" method call in class: %s", className)); + } + } + } + + protected Optional getFirstArgument(final DetailAST ast) { + final DetailAST findFirstToken = ast.findFirstToken(TokenTypes.ELIST); + if (findFirstToken != null) { + DetailAST childToken = findFirstToken.getFirstChild(); + if (childToken != null) { + childToken = childToken.getFirstChild(); + if (childToken != null) { + childToken = childToken.getFirstChild(); + if (childToken != null) { + return Optional.of(childToken.getText()); + } + } } } + return Optional.empty(); } }