diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/CompositeLanguageServerComponents.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/CompositeLanguageServerComponents.java index 154416868..8c4ba9666 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/CompositeLanguageServerComponents.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/CompositeLanguageServerComponents.java @@ -41,7 +41,6 @@ public class CompositeLanguageServerComponents implements LanguageServerComponen public static class Builder { private Map componentsByLanguageId = new HashMap<>(); - private List completionEngines; public void add(LanguageServerComponents components) { for (LanguageId language : components.getInterestingLanguages()) { @@ -54,33 +53,14 @@ public class CompositeLanguageServerComponents implements LanguageServerComponen public CompositeLanguageServerComponents build(SimpleLanguageServer server) { return new CompositeLanguageServerComponents(server, this); } - - public void completionEngines(List completionEngines) { - Assert.isNull("completionEngines should only be set once", this.completionEngines); - this.completionEngines = completionEngines; - } } private final Map componentsByLanguageId; - private final CompositeCompletionEngine completionEngine; private final IReconcileEngine reconcileEngine; private final HoverHandler hoverHandler; public CompositeLanguageServerComponents(SimpleLanguageServer server, Builder builder) { this.componentsByLanguageId = ImmutableMap.copyOf(builder.componentsByLanguageId); - //Create composite Completion engine - this.completionEngine = new CompositeCompletionEngine(); - for (Entry entry : componentsByLanguageId.entrySet()) { - ICompletionEngine engine = entry.getValue().getCompletionEngine().orElse(null); - if (engine!=null) { - completionEngine.add(entry.getKey(), engine); - } - } - if (builder.completionEngines!=null) { - for (ICompletionEngine engine : builder.completionEngines) { - this.completionEngine.add(engine); - } - } //Create composite Reconcile engine if (componentsByLanguageId.values().stream().map(LanguageServerComponents::getReconcileEngine).anyMatch(Optional::isPresent)) { this.reconcileEngine = new IReconcileEngine() { @@ -126,11 +106,6 @@ public class CompositeLanguageServerComponents implements LanguageServerComponen return componentsByLanguageId.keySet(); } - @Override - public Optional getCompletionEngine() { - return Optional.ofNullable(completionEngine); - } - @Override public HoverHandler getHoverProvider() { return hoverHandler; diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/LanguageServerComponents.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/LanguageServerComponents.java index 1c9c0d1a2..f45d1b21e 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/LanguageServerComponents.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/LanguageServerComponents.java @@ -23,14 +23,5 @@ public interface LanguageServerComponents { Set getInterestingLanguages(); default Optional getReconcileEngine() { return Optional.empty(); } - - /** - * Don't use language server components. Instead create a bean of type ICompletionEngine that implements - * {@link LanguageSpecific}. The bean will be automatically wired up to handle completion requests for - * documents of the language(s) it handles. - */ - @Deprecated - default Optional getCompletionEngine() { return Optional.empty(); } - HoverHandler getHoverProvider(); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java index 2e88c6f48..50bee10b4 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java @@ -27,6 +27,7 @@ import org.springframework.ide.vscode.boot.java.utils.SymbolCache; import org.springframework.ide.vscode.boot.metadata.ProjectBasedPropertyIndexProvider; import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerComponents; import org.springframework.ide.vscode.boot.xml.SpringXMLLanguageServerComponents; +import org.springframework.ide.vscode.commons.languageserver.completion.CompositeCompletionEngine; import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionEngine; import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter; import org.springframework.ide.vscode.commons.languageserver.composable.CompositeLanguageServerComponents; @@ -81,13 +82,12 @@ public class BootLanguageServerInitializer implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { - //TODO: ComposableLanguageServer object instance serves no purpose anymore. The constructor really just contains + //TODO: CompositeLanguageServerComponents object instance serves no purpose anymore. The constructor really just contains // some server intialization code. Migrate that code and get rid of the ComposableLanguageServer class CompositeLanguageServerComponents.Builder builder = new CompositeLanguageServerComponents.Builder(); builder.add(new BootPropertiesLanguageServerComponents(server, params, javaElementLocationProvider, parser, yamlStructureProvider, yamlAssistContextProvider, sourceLinks)); builder.add(new BootJavaLanguageServerComponents(server, params, sourceLinks, cuCache, adHocProperties, symbolCache, liveDataProvider, config, springIndexer)); builder.add(new SpringXMLLanguageServerComponents(server, springIndexer, params, config)); - builder.completionEngines(completionEngines); components = builder.build(server); params.projectObserver.addListener(reconcileOpenDocuments(server, components, params.projectFinder)); @@ -100,9 +100,10 @@ public class BootLanguageServerInitializer implements InitializingBean { }); }); - ICompletionEngine completionEngine = components.getCompletionEngine().orElse(null); - if (completionEngine!=null) { - completionEngineAdapter = server.createCompletionEngineAdapter(completionEngine); + if (!completionEngines.isEmpty()) { + CompositeCompletionEngine compositeCompletionEngine = new CompositeCompletionEngine(); + completionEngines.forEach(compositeCompletionEngine::add); + completionEngineAdapter = server.createCompletionEngineAdapter(compositeCompletionEngine); completionEngineAdapter.setMaxCompletions(100); documents.onCompletion(completionEngineAdapter::getCompletions); documents.onCompletionResolve(completionEngineAdapter::resolveCompletion);