5be0e18f467b25ecc09a667b8538a5b8a1d72967
[yangtools.git] / common / checkstyle-logging / src / main / java / org / opendaylight / yangtools / checkstyle / LoggerFactoryClassParameterCheck.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.yangtools.checkstyle;
10
11 import com.puppycrawl.tools.checkstyle.api.Check;
12 import com.puppycrawl.tools.checkstyle.api.DetailAST;
13 import com.puppycrawl.tools.checkstyle.api.TokenTypes;
14
15 public class LoggerFactoryClassParameterCheck extends Check {
16
17     private static final String LOG_MESSAGE = "LoggerFactory.getLogger Class argument is incorrect.";
18     private static final String METHOD_NAME = "LoggerFactory.getLogger";
19
20     @Override
21     public int[] getDefaultTokens() {
22         return new int[] { TokenTypes.METHOD_CALL };
23     }
24
25     @Override
26     public void visitToken(DetailAST ast) {
27         final String methodName = CheckLoggingUtil.getMethodName(ast);
28         if (methodName.equals(METHOD_NAME)) {
29             final String className = CheckLoggingUtil.getClassName(ast);
30             try {
31                 final String token = ast.findFirstToken(TokenTypes.ELIST).getFirstChild().getFirstChild()
32                     .getFirstChild().getText();
33                 if (!token.equals(className)) {
34                     log(ast.getLineNo(), LOG_MESSAGE);
35                 }
36             } catch (NullPointerException e) {
37                 log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s",
38                     className));
39             }
40         }
41     }
42 }