Bump odlparent to 3.0.0-SNAPSHOT and fix breakages
[yangtools.git] / common / checkstyle-logging / src / main / java / org / opendaylight / yangtools / checkstyle / LogMessageConcatenationCheck.java
index d725c451c7fbefd6629e8d862c9104ac090525d2..a077ed6f8342c79397217a0c974b3aa95a913b01 100644 (file)
@@ -8,26 +8,42 @@
 
 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;
 
-public class LogMessageConcatenationCheck extends Check {
+public class LogMessageConcatenationCheck extends AbstractCheck {
 
     private static final String LOG_MESSAGE = "Log message contains string concatenation.";
+    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(CheckLoggingUtil.isLogMethod(methodName)) {
-            final String logMessage = aAST.findFirstToken(TokenTypes.ELIST).getFirstChild().getFirstChild().getText();
-            if(logMessage.contains("+")) {
-                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 (CheckLoggingUtil.isLogMethod(methodName)) {
+            DetailAST plus = ast.findFirstToken(TokenTypes.ELIST).getFirstChild().findFirstToken(TokenTypes.PLUS);
+            if (plus != null) {
+                while (plus.getChildCount(TokenTypes.PLUS) != 0) {
+                    plus = plus.findFirstToken(TokenTypes.PLUS);
+                }
+                if (plus.getChildCount(TokenTypes.STRING_LITERAL) != 2) {
+                    log(ast.getLineNo(), LOG_MESSAGE);
+                }
             }
         }
     }