From: Michael Vorburger Date: Tue, 28 Jun 2016 23:45:26 +0000 (+0200) Subject: Avoid catch (NullPointerException e), take II X-Git-Tag: release/boron~83 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=da9774c3d8bad5d5c20465fcb99cea55edd70ea9;p=yangtools.git Avoid catch (NullPointerException e), take II Sorry for redoing this, but the first version last night wasn't my finest code; multi return is bad style (and rejected by Checkstyle checks in sevntu.checkstyle core). Change-Id: Icdd72c99b54e23f8434577e61a6852aeca92d331 Signed-off-by: Michael Vorburger --- 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 b3812f8ae0..08a4275892 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 @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.checkstyle; +import com.google.common.base.Optional; import com.puppycrawl.tools.checkstyle.api.AbstractCheck; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; @@ -27,34 +28,33 @@ public class LoggerFactoryClassParameterCheck extends AbstractCheck { final String methodName = CheckLoggingUtil.getMethodName(ast); if (methodName.equals(METHOD_NAME)) { final String className = CheckLoggingUtil.getClassName(ast); - DetailAST findFirstToken = ast.findFirstToken(TokenTypes.ELIST); - if (findFirstToken == null) { - logError(ast, className); - return; + final Optional optLoggerArgument = getFirstArgument(ast); + if (optLoggerArgument.isPresent()) { + if (!optLoggerArgument.get().equals(className)) { + log(ast.getLineNo(), LOG_MESSAGE); + } + } else { + log(ast.getLineNo(), + String.format("Invalid parameter in \"getLogger\" method call in class: %s", className)); } + } + } + + protected Optional getFirstArgument(DetailAST ast) { + final DetailAST findFirstToken = ast.findFirstToken(TokenTypes.ELIST); + if (findFirstToken != null) { 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); + if (childToken != null) { + childToken = childToken.getFirstChild(); + if (childToken != null) { + childToken = childToken.getFirstChild(); + if (childToken != null) { + return Optional.of(childToken.getText()); + } + } } } + return Optional.absent(); } - protected void logError(DetailAST ast, String className) { - log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s", className)); - } }