diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/.classpath b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/.classpath index eca7bdba8..43b986286 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/.classpath +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/.classpath @@ -3,5 +3,5 @@ - + diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaHoverProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaHoverProvider.java index 3d19288d1..c720759ba 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaHoverProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaHoverProvider.java @@ -14,6 +14,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -83,51 +84,52 @@ public class BootJavaHoverProvider implements HoverHandler { public Range[] getLiveHoverHints(final TextDocument document, final SpringBootApp[] runningBootApps) { List result = new ArrayList<>(); - try { - IJavaProject project = getProject(document); - CompilationUnit cu = parse(document, project); - cu.accept(new ASTVisitor() { - @Override - public boolean visit(SingleMemberAnnotation node) { - try { - extractLiveHints(node, document, runningBootApps, result); - } - catch (Exception e) { - Log.log(e); + getProject(document).ifPresent(project -> { + try { + CompilationUnit cu = parse(document, project); + + cu.accept(new ASTVisitor() { + @Override + public boolean visit(SingleMemberAnnotation node) { + try { + extractLiveHints(node, document, runningBootApps, result); + } + catch (Exception e) { + Log.log(e); + } + + return super.visit(node); } - return super.visit(node); - } + @Override + public boolean visit(NormalAnnotation node) { + try { + extractLiveHints(node, document, runningBootApps, result); + } + catch (Exception e) { + Log.log(e); + } - @Override - public boolean visit(NormalAnnotation node) { - try { - extractLiveHints(node, document, runningBootApps, result); - } - catch (Exception e) { - Log.log(e); + return super.visit(node); } - return super.visit(node); - } + @Override + public boolean visit(MarkerAnnotation node) { + try { + extractLiveHints(node, document, runningBootApps, result); + } + catch (Exception e) { + Log.log(e); + } - @Override - public boolean visit(MarkerAnnotation node) { - try { - extractLiveHints(node, document, runningBootApps, result); + return super.visit(node); } - catch (Exception e) { - Log.log(e); - } - - return super.visit(node); - } - }); - } - catch (Exception e) { - Log.log(e); - } + }); + } catch (Exception e) { + Log.log(e); + } + }); return result.toArray(new Range[result.size()]); } @@ -149,16 +151,14 @@ public class BootJavaHoverProvider implements HoverHandler { } private CompletableFuture provideHover(TextDocument document, int offset) throws Exception { - IJavaProject project = getProject(document); - CompilationUnit cu = parse(document, project); - - ASTNode node = NodeFinder.perform(cu, offset, 0); - - if (node != null) { - System.out.println("AST node found: " + node.getClass().getName()); - return provideHoverForAnnotation(node, offset, document, project); + IJavaProject project = getProject(document).orElse(null); + if (project!=null) { + CompilationUnit cu = parse(document, project); + ASTNode node = NodeFinder.perform(cu, offset, 0); + if (node != null) { + return provideHoverForAnnotation(node, offset, document, project); + } } - return null; } @@ -211,8 +211,8 @@ public class BootJavaHoverProvider implements HoverHandler { return null; } - private IJavaProject getProject(IDocument doc) throws Exception { - return this.projectFinder.find(new TextDocumentIdentifier(doc.getUri())).get(); + private Optional getProject(IDocument doc) { + return this.projectFinder.find(new TextDocumentIdentifier(doc.getUri())); } private String[] getClasspathEntries(IJavaProject project) throws Exception {