From 4cb796c81cf87531bd6f41cd13df69281d465e54 Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Tue, 2 Oct 2018 10:36:06 +0200 Subject: [PATCH] avoid NPE when method binding cannot be resolved --- .../requestmapping/WebfluxPathFinder.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/WebfluxPathFinder.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/WebfluxPathFinder.java index d9c6bc3d1..c2461a6d4 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/WebfluxPathFinder.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/WebfluxPathFinder.java @@ -26,30 +26,32 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument; * @author Martin Lippert */ public class WebfluxPathFinder extends ASTVisitor { - + private List path; private ASTNode root; private TextDocument doc; - + public WebfluxPathFinder(ASTNode root, TextDocument doc) { this.root = root; this.doc = doc; this.path = new ArrayList<>(); } - + public List getPath() { return path; } - + @Override public boolean visit(MethodInvocation node) { boolean visitChildren = true; if (node != this.root) { IMethodBinding methodBinding = node.resolveMethodBinding(); - + try { - if (WebfluxUtils.REQUEST_PREDICATES_TYPE.equals(methodBinding.getDeclaringClass().getBinaryName())) { + if (methodBinding != null && methodBinding.getDeclaringClass() != null + && WebfluxUtils.REQUEST_PREDICATES_TYPE.equals(methodBinding.getDeclaringClass().getBinaryName())) { + String name = methodBinding.getName(); if (name != null && WebfluxUtils.REQUEST_PREDICATE_ALL_PATH_METHODS.contains(name)) { StringLiteral stringLiteral = WebfluxUtils.extractStringLiteralArgument(node); @@ -63,11 +65,11 @@ public class WebfluxPathFinder extends ASTVisitor { catch (BadLocationException e) { // ignore } - + if (WebfluxUtils.isRouteMethodInvocation(methodBinding)) { - visitChildren = false; + visitChildren = false; } - + } return visitChildren; }