From 9285869ac3b372747a4e36c2783af2da59651254 Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Wed, 29 Jun 2016 01:45:26 +0200 Subject: [PATCH] Avoid catch (NullPointerException e), do explicit if == null This will be required to migrate this code upstream, see https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/457, so might as well already do this better here, for now. Change-Id: Ic5e90867353b5239a0d6a768e889b75190d33305 Signed-off-by: Michael Vorburger --- .../checkstyle/CheckLoggingUtil.java | 6 +-- .../LoggerFactoryClassParameterCheck.java | 38 ++++++++++++++----- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/CheckLoggingUtil.java b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/CheckLoggingUtil.java index 1c5a6e970c..e8f86bffb8 100644 --- a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/CheckLoggingUtil.java +++ b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/CheckLoggingUtil.java @@ -8,15 +8,13 @@ package org.opendaylight.yangtools.checkstyle; -import java.util.List; - -import org.slf4j.Logger; - import com.google.common.collect.Lists; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.FullIdent; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.utils.CheckUtils; +import java.util.List; +import org.slf4j.Logger; public final class CheckLoggingUtil { diff --git a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java index 1dc307d76e..b3812f8ae0 100644 --- a/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java +++ b/common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java @@ -27,16 +27,34 @@ public class LoggerFactoryClassParameterCheck extends AbstractCheck { 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)) { - log(ast.getLineNo(), LOG_MESSAGE); - } - } catch (NullPointerException e) { - log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s", - className)); + DetailAST findFirstToken = ast.findFirstToken(TokenTypes.ELIST); + if (findFirstToken == null) { + logError(ast, className); + return; + } + DetailAST childToken = findFirstToken.getFirstChild(); + if (childToken == null) { + logError(ast, className); + return; + } + childToken = childToken.getFirstChild(); + if (childToken == null) { + logError(ast, className); + return; + } + childToken = childToken.getFirstChild(); + if (childToken == null) { + logError(ast, className); + return; + } + final String token = childToken.getText(); + if (!token.equals(className)) { + log(ast.getLineNo(), LOG_MESSAGE); } } } -} \ No newline at end of file + + protected void logError(DetailAST ast, String className) { + log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s", className)); + } +} -- 2.36.6