/* * Copyright (c) 2016 Red Hat, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.checkstyle; 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 abstract class AbstractLogMessageCheck extends AbstractCheck { @Override public int[] getDefaultTokens() { return new int[]{TokenTypes.METHOD_CALL}; } @Override public void visitToken(DetailAST ast) { String methodName = CheckLoggingUtil.getMethodName(ast); if (CheckLoggingUtil.isLogMethod(methodName)) { Optional<String> optLogMessage = getLogMessage(ast); optLogMessage.ifPresent(logMessage -> visitLogMessage(ast, logMessage)); } } private Optional<String> getLogMessage(DetailAST ast) { ast = ast.findFirstToken(TokenTypes.ELIST); if (ast != null) { ast = ast.getFirstChild(); if (ast != null) { ast = ast.getFirstChild(); if (ast != null) { if (ast.getType() == TokenTypes.STRING_LITERAL) { return Optional.ofNullable(ast.getText()); } } } } return Optional.empty(); } protected abstract void visitLogMessage(DetailAST ast, String logMessage); }