Bootify: remove deprecated CompletionEngine ...
from CompositeLanguageServerComponents
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user