Attempt to fix XML beans index on file change

This commit is contained in:
BoykoAlex
2019-09-15 21:35:38 -04:00
parent 63a5a7ecbb
commit 5c35358451

View File

@@ -201,14 +201,13 @@ public class SpringSymbolIndex implements InitializingBean {
}
public CompletableFuture<Void> configureIndexer(SymbolIndexConfig config) {
return CompletableFuture.runAsync(() -> {
synchronized (SpringSymbolIndex.this) {
if (config.isScanXml() && !(Arrays.asList(this.indexers).contains(springIndexerXML))) {
this.indexers = new SpringIndexer[] {springIndexerJava, springIndexerXML};
List<CompletableFuture<?>> futuresList = new ArrayList<>();
synchronized (this) {
if (config.isScanXml() && !(Arrays.asList(this.indexers).contains(springIndexerXML))) {
this.indexers = new SpringIndexer[] {springIndexerJava, springIndexerXML};
futuresList.add(server.getAsync().execute(() -> {
springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs());
List<String> globPattern = Arrays.asList(springIndexerXML.getFileWatchPatterns());
watchXMLDeleteRegistration = getWorkspaceService().getFileObserver().onFileDeleted(globPattern, (file) -> {
deleteDocument(new TextDocumentIdentifier(file).getUri());
});
@@ -218,25 +217,27 @@ public class SpringSymbolIndex implements InitializingBean {
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};
}));
}
else if (!config.isScanXml() && Arrays.asList(this.indexers).contains(springIndexerXML)) {
this.indexers = new SpringIndexer[] {springIndexerJava};
futuresList.add(server.getAsync().execute(() -> {
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()) {
futuresList.add(CompletableFuture.runAsync(() -> springIndexerXML.setScanFolderGlobs(config.getXmlScanFoldersGlobs())));
}
});
futuresList.add(server.getAsync().execute(() -> springIndexerJava.setScanTestJavaSources(config.isScanTestJavaSources())));
}
return CompletableFuture.allOf(futuresList.toArray(new CompletableFuture<?>[futuresList.size()]));
}
public void shutdown() {