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 1dbb28cb4..be47fb217 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 @@ -646,22 +646,28 @@ public class SpringSymbolIndex implements InitializingBean, SpringIndex { synchronized(this) { try { List> futures = new ArrayList<>(); - Map> projectMapping = getDocsPerProjectFromPaths(deletedPathURIs); for (IJavaProject project : projectMapping.keySet()) { Set docURIs = projectMapping.get(project); - - DeleteItems deleteItems = new DeleteItems(project, (String[]) docURIs.toArray(new String[docURIs.size()]), this.indexers); - CompletableFuture future = CompletableFuture.runAsync(deleteItems, this.updateQueue); - - this.latestScheduledTaskByProject.put(project.getElementName(), future); - futures.add(future); + + if (docURIs != null && docURIs.size() > 0) { + DeleteItems deleteItems = new DeleteItems(project, (String[]) docURIs.toArray(new String[docURIs.size()]), this.indexers); + CompletableFuture future = CompletableFuture.runAsync(deleteItems, this.updateQueue); + + this.latestScheduledTaskByProject.put(project.getElementName(), future); + futures.add(future); + } } - CompletableFuture future = CompletableFuture.allOf((CompletableFuture[]) futures.toArray(new CompletableFuture[futures.size()])); - future = future.thenAccept(v -> server.getClient().indexUpdated()).thenAccept(v -> listeners.fire(v)); - return future; + if (futures.size() > 0) { + CompletableFuture future = CompletableFuture.allOf((CompletableFuture[]) futures.toArray(new CompletableFuture[futures.size()])); + future = future.thenAccept(v -> server.getClient().indexUpdated()).thenAccept(v -> listeners.fire(v)); + return future; + } + else { + return CompletableFuture.completedFuture(null); + } } catch (Exception e) { log.error("", e);