Remove ComposableLanguageServer class

This commit is contained in:
Kris De Volder
2018-10-16 14:38:32 -07:00
parent 2fd8d05fd0
commit 3857c507e0
3 changed files with 30 additions and 80 deletions

View File

@@ -1,66 +0,0 @@
/*******************************************************************************
* Copyright (c) 2016, 2018 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.vscode.commons.languageserver.composable;
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.hover.VscodeHoverEngineAdapter;
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter.HoverType;
import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServerWrapper;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
* Facilitates composition of language servers from composable {@link LanguageServerComponents}.
*
* @author Kris De Volder
*/
public class ComposableLanguageServer<C extends LanguageServerComponents> {
private final SimpleLanguageServer server;
private C components;
private VscodeCompletionEngineAdapter completionEngineAdapter;
private HoverHandler hoverHandler;
public ComposableLanguageServer(SimpleLanguageServer server, C _components) {
this.server = server;
this.components = _components;
SimpleTextDocumentService documents = server.getTextDocumentService();
components.getReconcileEngine().ifPresent(reconcileEngine -> {
documents.onDidChangeContent(params -> {
TextDocument doc = params.getDocument();
server.validateWith(doc.getId(), reconcileEngine);
});
});
ICompletionEngine completionEngine = components.getCompletionEngine();
if (completionEngine!=null) {
completionEngineAdapter = server.createCompletionEngineAdapter(server, completionEngine);
completionEngineAdapter.setMaxCompletions(100);
documents.onCompletion(completionEngineAdapter::getCompletions);
documents.onCompletionResolve(completionEngineAdapter::resolveCompletion);
}
this.hoverHandler = components.getHoverProvider();
documents.onHover(hoverHandler);
}
public void setMaxCompletionsNumber(int number) {
if (completionEngineAdapter!=null) {
completionEngineAdapter.setMaxCompletions(number);
}
}
}

View File

@@ -16,11 +16,13 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents;
import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerComponents;
import org.springframework.ide.vscode.commons.languageserver.composable.ComposableLanguageServer;
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;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
@@ -29,12 +31,10 @@ import org.springframework.util.Assert;
public class BootLanguageServerInitializer implements InitializingBean {
@Autowired SimpleLanguageServer server;
@Autowired BootLanguageServerParams params;
private CompositeLanguageServerComponents components;
private ComposableLanguageServer<CompositeLanguageServerComponents> composableLs;
private VscodeCompletionEngineAdapter completionEngineAdapter;
private static final Logger log = LoggerFactory.getLogger(BootLanguageServerInitializer.class);
@@ -58,7 +58,26 @@ public class BootLanguageServerInitializer implements InitializingBean {
builder.add(new BootJavaLanguageServerComponents(server, (ignore) -> params));
components = builder.build(server);
params.projectObserver.addListener(reconcileOpenDocuments(server, components));
this.composableLs = new ComposableLanguageServer<>(server, components);
SimpleTextDocumentService documents = server.getTextDocumentService();
components.getReconcileEngine().ifPresent(reconcileEngine -> {
documents.onDidChangeContent(params -> {
TextDocument doc = params.getDocument();
server.validateWith(doc.getId(), reconcileEngine);
});
});
ICompletionEngine completionEngine = components.getCompletionEngine();
if (completionEngine!=null) {
completionEngineAdapter = server.createCompletionEngineAdapter(server, completionEngine);
completionEngineAdapter.setMaxCompletions(100);
documents.onCompletion(completionEngineAdapter::getCompletions);
documents.onCompletionResolve(completionEngineAdapter::resolveCompletion);
}
HoverHandler hoverHandler = components.getHoverProvider();
documents.onHover(hoverHandler);
}
public CompositeLanguageServerComponents getComponents() {
@@ -66,8 +85,10 @@ public class BootLanguageServerInitializer implements InitializingBean {
return components;
}
public void setMaxCompletions(int maxCompletions) {
composableLs.setMaxCompletionsNumber(maxCompletions);
public void setMaxCompletions(int number) {
if (completionEngineAdapter!=null) {
completionEngineAdapter.setMaxCompletions(number);
}
}
}

View File

@@ -10,7 +10,7 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.utils.test;
import static org.mockito.Matchers.anyObject;
import static org.mockito.ArgumentMatchers.anyObject;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -18,22 +18,18 @@ import static org.mockito.Mockito.verify;
import java.io.File;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Import;
import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest;
import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents;
import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider;
import org.springframework.ide.vscode.commons.languageserver.ProgressService;
import org.springframework.ide.vscode.commons.languageserver.composable.ComposableLanguageServer;
import org.springframework.ide.vscode.commons.maven.MavenCore;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
import org.springframework.test.context.junit4.SpringRunner;
@@ -41,7 +37,6 @@ import org.springframework.test.context.junit4.SpringRunner;
* Tests for Spring properties index in Boot Java server
*
* @author Alex Boyko
*
*/
@RunWith(SpringRunner.class)
@BootLanguageServerTest