Bosh LS no more subclass of SimpleLanguageServer

This commit is contained in:
Kris De Volder
2018-10-09 16:33:58 -07:00
parent 5ecf55af5f
commit 77edc22c3e
12 changed files with 177 additions and 77 deletions

View File

@@ -37,15 +37,8 @@
</dependency>
<!-- Test harness -->
<dependency>
<groupId>org.springframework.ide.vscode</groupId>
<artifactId>language-server-test-harness</artifactId>
<version>${dependencies.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>${mockito-version}</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@@ -20,6 +20,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.TextDocumentPositionParams;
import org.springframework.ide.vscode.commons.languageserver.definition.SimpleDefinitionFinder;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.util.BadLocationException;
import org.springframework.ide.vscode.commons.util.Log;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
@@ -35,7 +36,7 @@ import com.google.common.collect.ImmutableList.Builder;
import reactor.core.publisher.Flux;
public class BoshDefintionFinder extends SimpleDefinitionFinder<BoshLanguageServer> {
public class BoshDefintionFinder extends SimpleDefinitionFinder<SimpleLanguageServer> {
//TODO: lots of common code between BoshDefintionFinder and ConcourseDefinitionFinder.
// should be possible to pull up into a common super class.
@@ -51,7 +52,7 @@ public class BoshDefintionFinder extends SimpleDefinitionFinder<BoshLanguageServ
List<Location> handle(Node refNode, TextDocument doc, YamlFileAST ast);
}
public BoshDefintionFinder(BoshLanguageServer server, BoshSchemas schema, YamlAstCache asts, ASTTypeCache astTypes) {
public BoshDefintionFinder(SimpleLanguageServer server, BoshSchemas schema, YamlAstCache asts, ASTTypeCache astTypes) {
super(server);
this.schema = schema;
this.asts = asts;

View File

@@ -12,6 +12,7 @@ package org.springframework.ide.vscode.bosh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.annotation.Bean;
import org.springframework.ide.vscode.bosh.models.BoshCommandCloudConfigProvider;
import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider;
@@ -32,13 +33,19 @@ public class BoshLanguageServerBootApp {
return SERVER_NAME;
}
@Bean BoshLanguageServer languageServer(BoshCliConfig cliConfig) {
return new BoshLanguageServer(
cliConfig,
new BoshCommandCloudConfigProvider(cliConfig),
new BoshCommandStemcellsProvider(cliConfig),
new BoshCommandReleasesProvider(cliConfig)
);
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
@Bean BoshCommandCloudConfigProvider cloudConfg(BoshCliConfig cliConfig) {
return new BoshCommandCloudConfigProvider(cliConfig);
}
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
@Bean BoshCommandStemcellsProvider stemcels(BoshCliConfig cliConfig) {
return new BoshCommandStemcellsProvider(cliConfig);
}
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
@Bean BoshCommandReleasesProvider releases(BoshCliConfig cliConfig) {
return new BoshCommandReleasesProvider(cliConfig);
}
}

View File

@@ -16,6 +16,7 @@ import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
import org.springframework.ide.vscode.commons.languageserver.config.LanguageServerInitializer;
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
@@ -36,21 +37,38 @@ import org.springframework.ide.vscode.commons.yaml.reconcile.TypeBasedYamlSymbol
import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaBasedReconcileEngine;
import org.springframework.ide.vscode.commons.yaml.snippet.SchemaBasedSnippetGenerator;
import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureProvider;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
public class BoshLanguageServer extends SimpleLanguageServer {
@Component
public class BoshLanguageServerInitializer implements LanguageServerInitializer {
private final VscodeCompletionEngineAdapter completionEngine;
private BoshCliConfig cliConfig;
private DynamicModelProvider<CloudConfigModel> cloudConfigProvider;
private DynamicModelProvider<StemcellsModel> stemcellsProvider;
private DynamicModelProvider<ReleasesModel> releasesProvider;
private SimpleLanguageServer server;
private BoshSchemas schema;
private VscodeCompletionEngineAdapter completionEngine;
public BoshLanguageServer(BoshCliConfig cliConfig,
public BoshLanguageServerInitializer(BoshCliConfig cliConfig,
DynamicModelProvider<CloudConfigModel> cloudConfigProvider,
DynamicModelProvider<StemcellsModel> stemcellsProvider,
DynamicModelProvider<ReleasesModel> releasesProvider
) {
super("vscode-bosh");
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider);
SimpleTextDocumentService documents = getTextDocumentService();
this.cliConfig = cliConfig;
this.cloudConfigProvider= cloudConfigProvider;
this.stemcellsProvider = stemcellsProvider;
this.releasesProvider = releasesProvider;
}
@Override
public void initialize(SimpleLanguageServer server) throws Exception {
Assert.isNull(this.server, "This initializer should only be used once");
this.server = server;
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider);
SimpleTextDocumentService documents = server.getTextDocumentService();
schema = new BoshSchemas(models);
YamlAstCache asts = models.asts;
ASTTypeCache astTypeCache = models.astTypes;
@@ -59,10 +77,10 @@ public class BoshLanguageServer extends SimpleLanguageServer {
YamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
enableSnippets(true);
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, YamlCompletionEngineOptions.DEFAULT);
completionEngine = createCompletionEngineAdapter(this, yamlCompletionEngine);
completionEngine = server.createCompletionEngineAdapter(server, yamlCompletionEngine);
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(asts.getAstProvider(true), structureProvider, contextProvider);
VscodeHoverEngineAdapter hoverEngine = new VscodeHoverEngineAdapter(this, infoProvider);
YamlQuickfixes quickfixes = new YamlQuickfixes(getQuickfixRegistry(), getTextDocumentService(), structureProvider);
VscodeHoverEngineAdapter hoverEngine = new VscodeHoverEngineAdapter(server, infoProvider);
YamlQuickfixes quickfixes = new YamlQuickfixes(server.getQuickfixRegistry(), server.getTextDocumentService(), structureProvider);
YamlSchemaBasedReconcileEngine engine = new YamlSchemaBasedReconcileEngine(asts.getAstProvider(false), schema, quickfixes);
engine.setTypeCollector(astTypeCache);
documents.onDocumentSymbol(new TypeBasedYamlSymbolHandler(documents, astTypeCache, schema.getDefinitionTypes()));
@@ -73,27 +91,27 @@ public class BoshLanguageServer extends SimpleLanguageServer {
documents.onCompletion(completionEngine::getCompletions);
documents.onCompletionResolve(completionEngine::resolveCompletion);
documents.onHover(hoverEngine);
documents.onDefinition(new BoshDefintionFinder(this, schema, asts, astTypeCache));
documents.onDefinition(new BoshDefintionFinder(server, schema, asts, astTypeCache));
SimpleWorkspaceService workspace = getWorkspaceService();
SimpleWorkspaceService workspace = server.getWorkspaceService();
workspace.onDidChangeConfiguraton((Settings settings) -> {
cliConfig.handleConfigurationChange(settings);
});
}
private void validateOnDocumentChange(IReconcileEngine engine, TextDocument doc) {
validateWith(doc.getId(), engine);
server.validateWith(doc.getId(), engine);
}
public void enableSnippets(boolean enable) {
if (enable) {
schema.f.setSnippetProvider(new SchemaBasedSnippetGenerator(schema.getTypeUtil(), this::createSnippetBuilder));
schema.f.setSnippetProvider(new SchemaBasedSnippetGenerator(schema.getTypeUtil(), server::createSnippetBuilder));
} else {
schema.f.setSnippetProvider(null);
}
}
public BoshLanguageServer setMaxCompletions(int maxCompletions) {
public BoshLanguageServerInitializer setMaxCompletions(int maxCompletions) {
completionEngine.setMaxCompletions(maxCompletions);
return this;
}

View File

@@ -0,0 +1,2 @@
languageserver:
extension-id: vscode-bosh

View File

@@ -11,7 +11,7 @@
package org.springframework.ide.vscode.bosh;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.ide.vscode.languageserver.testharness.Editor.DEDENTED_COMPLETION;
@@ -29,6 +29,10 @@ import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DiagnosticSeverity;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.ide.vscode.bosh.bootiful.BoshLanguageServerTest;
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider;
import org.springframework.ide.vscode.bosh.models.BoshCommandStemcellsProvider;
@@ -37,35 +41,32 @@ import org.springframework.ide.vscode.bosh.models.ReleaseData;
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
import org.springframework.ide.vscode.bosh.models.StemcellData;
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.util.ExternalCommand;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaProblems;
import org.springframework.ide.vscode.languageserver.testharness.CodeAction;
import org.springframework.ide.vscode.languageserver.testharness.Editor;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
import org.springframework.test.context.junit4.SpringRunner;
import com.google.common.collect.ImmutableMultiset;
import com.google.common.collect.ImmutableSet;
@RunWith(SpringRunner.class)
@BoshLanguageServerTest
public class BoshEditorTest {
LanguageServerHarness<BoshLanguageServer> harness;
@Autowired LanguageServerHarness<SimpleLanguageServer> harness;
private BoshCliConfig cliConfig = new BoshCliConfig();
private MockCloudConfigProvider cloudConfigProvider = new MockCloudConfigProvider(cliConfig);
private DynamicModelProvider<StemcellsModel> stemcellsProvider = mock(DynamicModelProvider.class);
private DynamicModelProvider<ReleasesModel> releasesProvider = mock(DynamicModelProvider.class);
@Autowired BoshLanguageServerInitializer serverInitializer;
@Autowired BoshCliConfig cliConfig;
@Autowired MockCloudConfigProvider cloudConfigProvider;
@MockBean DynamicModelProvider<StemcellsModel> stemcellsProvider;
@MockBean DynamicModelProvider<ReleasesModel> releasesProvider;
@Before public void setup() throws Exception {
harness = new LanguageServerHarness<BoshLanguageServer>(() -> {
return new BoshLanguageServer(cliConfig, cloudConfigProvider,
(dc) -> stemcellsProvider.getModel(dc),
(dc) -> releasesProvider.getModel(dc)
)
.setMaxCompletions(100);
},
LanguageId.BOSH_DEPLOYMENT
);
harness.intialize(null);
System.setProperty("lsp.yaml.completions.errors.disable", "false");
}
@@ -277,7 +278,7 @@ public class BoshEditorTest {
}
@Test public void releasesBlockCompletions() throws Exception {
harness.getServerWrapper().enableSnippets(false);
serverInitializer.enableSnippets(false);
Editor editor = harness.newEditor(
"releases:\n" +
"- <*>"
@@ -360,7 +361,7 @@ public class BoshEditorTest {
}
@Test public void instanceGroupsCompletions() throws Exception {
harness.getServerWrapper().enableSnippets(false);
serverInitializer.enableSnippets(false);
Editor editor = harness.newEditor(
"instance_groups:\n" +
"- <*>"
@@ -544,7 +545,7 @@ public class BoshEditorTest {
}
@Test public void updateBlockCompletions() throws Exception {
harness.getServerWrapper().enableSnippets(false);
serverInitializer.enableSnippets(false);
Editor editor = harness.newEditor(
"update:\n" +
" <*>"
@@ -584,7 +585,7 @@ public class BoshEditorTest {
}
@Test public void variablesBlockCompletions() throws Exception {
harness.getServerWrapper().enableSnippets(false);
serverInitializer.enableSnippets(false);
Editor editor = harness.newEditor(
"variables:\n" +
"- <*>"
@@ -991,7 +992,6 @@ public class BoshEditorTest {
@Test public void contentAssistStemcellNameNoDirector() throws Exception {
Editor editor;
stemcellsProvider = mock(DynamicModelProvider.class);
when(stemcellsProvider.getModel(any())).thenThrow(new IOException("Couldn't connect to bosh"));
editor = harness.newEditor(
"stemcells:\n" +
@@ -1008,7 +1008,6 @@ public class BoshEditorTest {
@SuppressWarnings("unchecked")
@Test public void contentAssistStemcellVersionNoDirector() throws Exception {
Editor editor;
stemcellsProvider = mock(DynamicModelProvider.class);
when(stemcellsProvider.getModel(any())).thenThrow(new IOException("Couldn't connect to bosh"));
editor = harness.newEditor(
"stemcells:\n" +
@@ -1023,7 +1022,7 @@ public class BoshEditorTest {
@Test public void contentAssistStemcellVersionFromDirector() throws Exception {
Editor editor;
stemcellsProvider = provideStemcellsFrom(
provideStemcellsFrom(
new StemcellData("ubuntu-agent", "123.4", "ubuntu"),
new StemcellData("ubuntu-agent", "222.2", "ubuntu"),
new StemcellData("centos-agent", "222.2", "centos"),
@@ -1121,7 +1120,7 @@ public class BoshEditorTest {
@Test public void reconcileStemcellVersionFromDirector() throws Exception {
Editor editor;
stemcellsProvider = provideStemcellsFrom(
provideStemcellsFrom(
new StemcellData("ubuntu-agent", "123.4", "ubuntu"),
new StemcellData("ubuntu-agent", "222.2", "ubuntu"),
new StemcellData("centos-agent", "222.2", "centos"),
@@ -1150,8 +1149,8 @@ public class BoshEditorTest {
);
}
private DynamicModelProvider<StemcellsModel> provideStemcellsFrom(StemcellData... stemcellData) {
return new BoshCommandStemcellsProvider(cliConfig) {
private void provideStemcellsFrom(StemcellData... stemcellData) throws Exception {
BoshCommandStemcellsProvider stemcells = new BoshCommandStemcellsProvider(cliConfig) {
@Override
protected String executeCommand(ExternalCommand command) throws Exception {
String rows = gson.toJson(stemcellData);
@@ -1164,10 +1163,13 @@ public class BoshEditorTest {
"}";
}
};
when(stemcellsProvider.getModel(any())).then(inv -> {
return stemcells.getModel(null);
});
}
@Test public void contentAssistReleaseNameDef() throws Exception {
releasesProvider = provideReleasesFrom(
provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
@@ -1185,7 +1187,7 @@ public class BoshEditorTest {
}
@Test public void reconcileReleaseNameDef() throws Exception {
releasesProvider = provideReleasesFrom(
provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
@@ -1205,7 +1207,7 @@ public class BoshEditorTest {
}
@Test public void contentAssistReleaseVersion() throws Exception {
releasesProvider = provideReleasesFrom(
provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
@@ -1264,7 +1266,7 @@ public class BoshEditorTest {
@Test public void reconcileReleaseVersion() throws Exception {
Editor editor;
releasesProvider = provideReleasesFrom(
provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
@@ -1319,8 +1321,8 @@ public class BoshEditorTest {
}
private DynamicModelProvider<ReleasesModel> provideReleasesFrom(ReleaseData... stemcellData) {
return new BoshCommandReleasesProvider(cliConfig) {
private void provideReleasesFrom(ReleaseData... stemcellData) throws Exception {
BoshCommandReleasesProvider releases = new BoshCommandReleasesProvider(cliConfig) {
@Override
protected String executeCommand(ExternalCommand command) throws Exception {
String rows = gson.toJson(stemcellData);
@@ -1333,6 +1335,9 @@ public class BoshEditorTest {
"}";
}
};
when(releasesProvider.getModel(any())).then(in -> {
return releases.getModel(null);
});
}
@Test public void contentAssistVMtype() throws Exception {

View File

@@ -20,24 +20,36 @@ import java.nio.file.Paths;
import org.eclipse.lsp4j.InitializeResult;
import org.eclipse.lsp4j.TextDocumentSyncKind;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.ide.vscode.bosh.bootiful.BoshLanguageServerTest;
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
import org.springframework.ide.vscode.bosh.models.CloudConfigModel;
import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
import org.springframework.test.context.junit4.SpringRunner;
@SuppressWarnings("unchecked")
public class BoshLanguageServerTest {
@RunWith(SpringRunner.class)
@BoshLanguageServerTest
public class BoshLanguageServerInitializerTest {
public static File getTestResource(String name) throws URISyntaxException {
return Paths.get(BoshLanguageServerTest.class.getResource(name).toURI()).toFile();
return Paths.get(BoshLanguageServerInitializerTest.class.getResource(name).toURI()).toFile();
}
private BoshCliConfig cliConfig = new BoshCliConfig();
@MockBean DynamicModelProvider<CloudConfigModel> cloudConfigProvider;
@MockBean DynamicModelProvider<StemcellsModel> stemcellsProvider;
@MockBean DynamicModelProvider<ReleasesModel> releasesProvider;
@Autowired
LanguageServerHarness<SimpleLanguageServer> harness;
@Test
public void createAndInitializeServerWithWorkspace() throws Exception {
LanguageServerHarness harness = new LanguageServerHarness(() ->
new BoshLanguageServer(cliConfig, new MockCloudConfigProvider(cliConfig), mock(DynamicModelProvider.class), mock(DynamicModelProvider.class))
);
File workspaceRoot = getTestResource("/workspace/");
assertExpectedInitResult(harness.intialize(workspaceRoot));
}
@@ -45,9 +57,6 @@ public class BoshLanguageServerTest {
@Test
public void createAndInitializeServerWithoutWorkspace() throws Exception {
File workspaceRoot = null;
LanguageServerHarness harness = new LanguageServerHarness(() ->
new BoshLanguageServer(cliConfig, new MockCloudConfigProvider(cliConfig), mock(DynamicModelProvider.class), mock(DynamicModelProvider.class))
);
assertExpectedInitResult(harness.intialize(workspaceRoot));
}

View File

@@ -0,0 +1,33 @@
/*******************************************************************************
* Copyright (c) 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.bosh.bootiful;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.ide.vscode.bosh.BoshLanguageServerBootApp;
import org.springframework.ide.vscode.languageserver.starter.LanguageServerAutoConf;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
@Retention(RetentionPolicy.RUNTIME)
@OverrideAutoConfiguration(enabled=false)
@ImportAutoConfiguration(classes=LanguageServerAutoConf.class)
@SpringBootTest(classes={
BoshLanguageServerBootApp.class,
BoshLanguageServerTestConfiguration.class
})
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD)
public @interface BoshLanguageServerTest {
}

View File

@@ -0,0 +1,35 @@
/*******************************************************************************
* Copyright (c) 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.bosh.bootiful;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ide.vscode.bosh.BoshCliConfig;
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
@Configuration
public class BoshLanguageServerTestConfiguration {
@Bean MockCloudConfigProvider cloudConfig(BoshCliConfig cliConfig) {
return new MockCloudConfigProvider(cliConfig);
}
@Bean public LanguageServerHarness<SimpleLanguageServer> harness(SimpleLanguageServer server) throws Exception {
LanguageServerHarness<SimpleLanguageServer> harness = new LanguageServerHarness<>(
()-> server,
LanguageId.BOSH_DEPLOYMENT
);
return harness;
}
}

View File

@@ -0,0 +1 @@
spring.main.banner-mode=off

View File

@@ -12,8 +12,6 @@
<relativePath>../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.ide.vscode</groupId>

View File

@@ -10,8 +10,6 @@
*******************************************************************************/
package org.springframework.ide.vscode.commons.languageserver.composable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;