From 63a5a7ecbb5687eb64300651a5a9b489faefacb3 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Fri, 13 Sep 2019 14:33:54 -0400 Subject: [PATCH] Update XML indexer config in single future --- .../vscode/boot/app/SpringSymbolIndex.java | 70 +++++++++---------- .../test-projects/test-xml-hyperlinks/pom.xml | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) 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 b976fd504..3478682bc 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 @@ -201,42 +201,42 @@ public class SpringSymbolIndex implements InitializingBean { } public CompletableFuture configureIndexer(SymbolIndexConfig config) { - List> futuresList = new ArrayList<>(); - synchronized (this) { - if (config.isScanXml() && !(Arrays.asList(this.indexers).contains(springIndexerXML))) { - this.indexers = new SpringIndexer[] {springIndexerJava, springIndexerXML}; - futuresList.add(CompletableFuture.runAsync(() -> springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs()))); - - List globPattern = Arrays.asList(springIndexerXML.getFileWatchPatterns()); - - watchXMLDeleteRegistration = getWorkspaceService().getFileObserver().onFileDeleted(globPattern, (file) -> { - deleteDocument(new TextDocumentIdentifier(file).getUri()); - }); - watchXMLCreatedRegistration = getWorkspaceService().getFileObserver().onFileCreated(globPattern, (file) -> { - createDocument(new TextDocumentIdentifier(file).getUri()); - }); - watchXMLChangedRegistration = getWorkspaceService().getFileObserver().onFileChanged(globPattern, (file) -> { - updateDocument(new TextDocumentIdentifier(file).getUri(), null, "xml changed"); - }); - + return CompletableFuture.runAsync(() -> { + synchronized (SpringSymbolIndex.this) { + if (config.isScanXml() && !(Arrays.asList(this.indexers).contains(springIndexerXML))) { + this.indexers = new SpringIndexer[] {springIndexerJava, springIndexerXML}; + springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs()); + + List globPattern = Arrays.asList(springIndexerXML.getFileWatchPatterns()); + + watchXMLDeleteRegistration = getWorkspaceService().getFileObserver().onFileDeleted(globPattern, (file) -> { + deleteDocument(new TextDocumentIdentifier(file).getUri()); + }); + watchXMLCreatedRegistration = getWorkspaceService().getFileObserver().onFileCreated(globPattern, (file) -> { + createDocument(new TextDocumentIdentifier(file).getUri()); + }); + watchXMLChangedRegistration = getWorkspaceService().getFileObserver().onFileChanged(globPattern, (file) -> { + updateDocument(new TextDocumentIdentifier(file).getUri(), null, "xml changed"); + }); + + } + else if (!config.isScanXml() && Arrays.asList(this.indexers).contains(springIndexerXML)) { + this.indexers = new SpringIndexer[] {springIndexerJava}; + springIndexerXML.setScanFolderGlobs(new String[0]); + + getWorkspaceService().getFileObserver().unsubscribe(watchXMLChangedRegistration); + getWorkspaceService().getFileObserver().unsubscribe(watchXMLCreatedRegistration); + getWorkspaceService().getFileObserver().unsubscribe(watchXMLDeleteRegistration); + + watchXMLChangedRegistration = null; + watchXMLCreatedRegistration = null; + watchXMLDeleteRegistration = null; + } else if (config.isScanXml()) { + springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs()); + } + springIndexerJava.setScanTestJavaSources(config.isScanTestJavaSources()); } - else if (!config.isScanXml() && Arrays.asList(this.indexers).contains(springIndexerXML)) { - this.indexers = new SpringIndexer[] {springIndexerJava}; - futuresList.add(CompletableFuture.runAsync(() -> springIndexerXML.setScanFolderGlobs(new String[0]))); - - getWorkspaceService().getFileObserver().unsubscribe(watchXMLChangedRegistration); - getWorkspaceService().getFileObserver().unsubscribe(watchXMLCreatedRegistration); - getWorkspaceService().getFileObserver().unsubscribe(watchXMLDeleteRegistration); - - watchXMLChangedRegistration = null; - watchXMLCreatedRegistration = null; - watchXMLDeleteRegistration = null; - } else if (config.isScanXml()) { - futuresList.add(CompletableFuture.runAsync(() -> springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs()))); - } - futuresList.add(CompletableFuture.runAsync(() -> springIndexerJava.setScanTestJavaSources(config.isScanTestJavaSources()))); - } - return CompletableFuture.allOf(futuresList.toArray(new CompletableFuture[futuresList.size()])); + }); } public void shutdown() { diff --git a/headless-services/spring-boot-language-server/src/test/resources/test-projects/test-xml-hyperlinks/pom.xml b/headless-services/spring-boot-language-server/src/test/resources/test-projects/test-xml-hyperlinks/pom.xml index 28fcfd3e1..f7e29f8a5 100644 --- a/headless-services/spring-boot-language-server/src/test/resources/test-projects/test-xml-hyperlinks/pom.xml +++ b/headless-services/spring-boot-language-server/src/test/resources/test-projects/test-xml-hyperlinks/pom.xml @@ -8,7 +8,7 @@ war 1.0.0-BUILD-SNAPSHOT - 1.6 + 1.7 3.1.1.RELEASE 1.6.10 1.6.6