Bump odlparent to 3.0.0-SNAPSHOT and fix breakages
[yangtools.git] / common / checkstyle-logging / src / main / java / org / opendaylight / yangtools / checkstyle / AbstractLogMessageCheck.java
1 /*
2  * Copyright (c) 2016 Red Hat, 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 package org.opendaylight.yangtools.checkstyle;
9
10 import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
11 import com.puppycrawl.tools.checkstyle.api.DetailAST;
12 import com.puppycrawl.tools.checkstyle.api.TokenTypes;
13 import java.util.Optional;
14
15 public abstract class AbstractLogMessageCheck extends AbstractCheck {
16     private static final int[] TOKENS = { TokenTypes.METHOD_CALL };
17
18     @Override
19     public int[] getDefaultTokens() {
20         return TOKENS;
21     }
22
23     @Override
24     public int[] getAcceptableTokens() {
25         return TOKENS;
26     }
27
28     @Override
29     public int[] getRequiredTokens() {
30         return TOKENS;
31     }
32
33     @Override
34     public void visitToken(final DetailAST ast) {
35         String methodName = CheckLoggingUtil.getMethodName(ast);
36         if (CheckLoggingUtil.isLogMethod(methodName)) {
37             Optional<String> optLogMessage = getLogMessage(ast);
38             optLogMessage.ifPresent(logMessage -> visitLogMessage(ast, logMessage));
39         }
40     }
41
42     private static Optional<String> getLogMessage(DetailAST ast) {
43         ast = ast.findFirstToken(TokenTypes.ELIST);
44         if (ast != null) {
45             ast = ast.getFirstChild();
46             if (ast != null) {
47                 ast = ast.getFirstChild();
48                 if (ast != null) {
49                     if (ast.getType() == TokenTypes.STRING_LITERAL) {
50                         return Optional.ofNullable(ast.getText());
51                     }
52                 }
53             }
54         }
55         return Optional.empty();
56     }
57
58     protected abstract void visitLogMessage(DetailAST ast, String logMessage);
59 }