Bootify: remove deprecated CompletionEngine ...

from CompositeLanguageServerComponents
This commit is contained in:
Kris De Volder
2020-10-03 18:04:00 -07:00
parent 3be81b848f
commit d1d31e2a7c
3 changed files with 6 additions and 39 deletions

View File

@@ -41,7 +41,6 @@ public class CompositeLanguageServerComponents implements LanguageServerComponen
public static class Builder {
private Map<LanguageId, LanguageServerComponents> componentsByLanguageId = new HashMap<>();
private List<ICompletionEngine> 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<ICompletionEngine> completionEngines) {
Assert.isNull("completionEngines should only be set once", this.completionEngines);
this.completionEngines = completionEngines;
}
}
private final Map<LanguageId, LanguageServerComponents> 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<LanguageId, LanguageServerComponents> 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<ICompletionEngine> getCompletionEngine() {
return Optional.ofNullable(completionEngine);
}
@Override
public HoverHandler getHoverProvider() {
return hoverHandler;

View File

@@ -23,14 +23,5 @@ public interface LanguageServerComponents {
Set<LanguageId> getInterestingLanguages();
default Optional<IReconcileEngine> 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<ICompletionEngine> getCompletionEngine() { return Optional.empty(); }
HoverHandler getHoverProvider();
}

View File

@@ -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);