Bump odlparent to 3.0.0-SNAPSHOT and fix breakages
[yangtools.git] / common / checkstyle-logging / src / main / java / org / opendaylight / yangtools / checkstyle / LoggerFactoryClassParameterCheck.java
index 5be0e18f467b25ecc09a667b8538a5b8a1d72967..21d4abacbafbeecc6e760a48169c41dd7932eb46 100644 (file)
@@ -8,35 +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 = "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 ast) {
+    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);
-            try {
-                final String token = ast.findFirstToken(TokenTypes.ELIST).getFirstChild().getFirstChild()
-                    .getFirstChild().getText();
-                if (!token.equals(className)) {
+            final Optional<String> optLoggerArgument = getFirstArgument(ast);
+            if (optLoggerArgument.isPresent()) {
+                if (!optLoggerArgument.get().equals(className)) {
                     log(ast.getLineNo(), LOG_MESSAGE);
                 }
-            } catch (NullPointerException e) {
-                log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s",
-                    className));
+            } else {
+                log(ast.getLineNo(),
+                        String.format("Invalid parameter in \"getLogger\" method call in class: %s", className));
             }
         }
     }
-}
\ No newline at end of file
+
+    protected Optional<String> 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();
+    }
+
+}