Avoid catch (NullPointerException e), take II 96/40996/3
authorMichael Vorburger <vorburger@redhat.com>
Tue, 28 Jun 2016 23:45:26 +0000 (01:45 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 29 Jun 2016 11:13:58 +0000 (11:13 +0000)
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 <vorburger@redhat.com>
common/checkstyle-logging/src/main/java/org/opendaylight/yangtools/checkstyle/LoggerFactoryClassParameterCheck.java

index b3812f8ae01709818c6b2a848928045ff19ea220..08a4275892443401058b45e30f5553b5b2148a61 100644 (file)
@@ -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<String> 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<String> 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));
-    }
 }