diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java index 20f7daa20..439592941 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java @@ -548,7 +548,7 @@ public class SpringSymbolIndex implements InitializingBean { try { URI uri = URI.create(docURI); CompletableFuture projectInitialized = futureProjectFinder.findFuture(uri).thenCompose(project -> projectInitializedFuture(project)); - projectInitialized.get(60, TimeUnit.SECONDS); + projectInitialized.get(15, TimeUnit.SECONDS); List docSymbols = this.symbolsByDoc.get(docURI); if (docSymbols != null) { synchronized (docSymbols) { diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java index d55a05f1f..aa3b62bf1 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java @@ -177,7 +177,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent // - documents.onDocumentSymbol(new BootJavaDocumentSymbolHandler(indexer)); + documents.onDocumentSymbol(new BootJavaDocumentSymbolHandler(this, indexer)); workspaceService.onWorkspaceSymbol(new BootJavaWorkspaceSymbolHandler(indexer, new LiveAppURLSymbolProvider(liveDataProvider))); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaDocumentSymbolHandler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaDocumentSymbolHandler.java index 16c9f861b..6bd1bf90b 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaDocumentSymbolHandler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/BootJavaDocumentSymbolHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2022 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,12 +10,16 @@ *******************************************************************************/ package org.springframework.ide.vscode.boot.java.handlers; +import java.util.Collections; import java.util.List; import org.eclipse.lsp4j.DocumentSymbolParams; import org.eclipse.lsp4j.SymbolInformation; import org.springframework.ide.vscode.boot.app.SpringSymbolIndex; +import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents; import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbolHandler; +import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService; +import org.springframework.ide.vscode.commons.util.text.TextDocument; /** * @author Martin Lippert @@ -23,14 +27,23 @@ import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbol public class BootJavaDocumentSymbolHandler implements DocumentSymbolHandler { private SpringSymbolIndex indexer; + private BootJavaLanguageServerComponents server; - public BootJavaDocumentSymbolHandler(SpringSymbolIndex indexer) { + public BootJavaDocumentSymbolHandler(BootJavaLanguageServerComponents server, SpringSymbolIndex indexer) { + this.server = server; this.indexer = indexer; } @Override public List handle(DocumentSymbolParams params) { - return indexer.getSymbols(params.getTextDocument().getUri()); + SimpleTextDocumentService documents = server.getTextDocumentService(); + TextDocument doc = documents.getLatestSnapshot(params.getTextDocument().getUri()); + + if (server.getInterestingLanguages().contains(doc.getLanguageId())) { + return indexer.getSymbols(params.getTextDocument().getUri()); + } + + return Collections.emptyList(); } }