diff --git a/headless-services/bosh-language-server/pom.xml b/headless-services/bosh-language-server/pom.xml
index ee0b9621e..69e7c7608 100644
--- a/headless-services/bosh-language-server/pom.xml
+++ b/headless-services/bosh-language-server/pom.xml
@@ -37,15 +37,8 @@
- org.springframework.ide.vscode
- language-server-test-harness
- ${dependencies.version}
- test
-
-
- org.mockito
- mockito-all
- ${mockito-version}
+ org.springframework.boot
+ spring-boot-starter-test
test
diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDefintionFinder.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDefintionFinder.java
index 6e091ada7..457de4bfa 100644
--- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDefintionFinder.java
+++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDefintionFinder.java
@@ -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 {
+public class BoshDefintionFinder extends SimpleDefinitionFinder {
//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 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;
diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerBootApp.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerBootApp.java
index 7b1d88f47..61ca414ef 100644
--- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerBootApp.java
+++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerBootApp.java
@@ -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);
}
}
diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServer.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializer.java
similarity index 73%
rename from headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServer.java
rename to headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializer.java
index ce7c71263..de7ac8843 100644
--- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServer.java
+++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializer.java
@@ -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 cloudConfigProvider;
+ private DynamicModelProvider stemcellsProvider;
+ private DynamicModelProvider releasesProvider;
+
+ private SimpleLanguageServer server;
private BoshSchemas schema;
+ private VscodeCompletionEngineAdapter completionEngine;
- public BoshLanguageServer(BoshCliConfig cliConfig,
+ public BoshLanguageServerInitializer(BoshCliConfig cliConfig,
DynamicModelProvider cloudConfigProvider,
DynamicModelProvider stemcellsProvider,
DynamicModelProvider 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;
}
diff --git a/headless-services/bosh-language-server/src/main/resources/application.yml b/headless-services/bosh-language-server/src/main/resources/application.yml
new file mode 100644
index 000000000..7cdfa7e8d
--- /dev/null
+++ b/headless-services/bosh-language-server/src/main/resources/application.yml
@@ -0,0 +1,2 @@
+languageserver:
+ extension-id: vscode-bosh
\ No newline at end of file
diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java
index b8f83c528..3363f62a6 100644
--- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java
+++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java
@@ -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 harness;
+ @Autowired LanguageServerHarness harness;
- private BoshCliConfig cliConfig = new BoshCliConfig();
- private MockCloudConfigProvider cloudConfigProvider = new MockCloudConfigProvider(cliConfig);
- private DynamicModelProvider stemcellsProvider = mock(DynamicModelProvider.class);
- private DynamicModelProvider releasesProvider = mock(DynamicModelProvider.class);
+ @Autowired BoshLanguageServerInitializer serverInitializer;
+ @Autowired BoshCliConfig cliConfig;
+ @Autowired MockCloudConfigProvider cloudConfigProvider;
+
+ @MockBean DynamicModelProvider stemcellsProvider;
+ @MockBean DynamicModelProvider releasesProvider;
@Before public void setup() throws Exception {
- harness = new LanguageServerHarness(() -> {
- 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 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 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 {
diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializerTest.java
similarity index 66%
rename from headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerTest.java
rename to headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializerTest.java
index e5870fe86..57110a7a5 100644
--- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerTest.java
+++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshLanguageServerInitializerTest.java
@@ -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 cloudConfigProvider;
+ @MockBean DynamicModelProvider stemcellsProvider;
+ @MockBean DynamicModelProvider releasesProvider;
+
+ @Autowired
+ LanguageServerHarness 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));
}
diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTest.java
new file mode 100644
index 000000000..49d87d8f3
--- /dev/null
+++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTest.java
@@ -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 {
+}
diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTestConfiguration.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTestConfiguration.java
new file mode 100644
index 000000000..c06b18303
--- /dev/null
+++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/bootiful/BoshLanguageServerTestConfiguration.java
@@ -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 harness(SimpleLanguageServer server) throws Exception {
+ LanguageServerHarness harness = new LanguageServerHarness<>(
+ ()-> server,
+ LanguageId.BOSH_DEPLOYMENT
+ );
+ return harness;
+ }
+}
\ No newline at end of file
diff --git a/headless-services/bosh-language-server/src/test/resources/application.properties b/headless-services/bosh-language-server/src/test/resources/application.properties
new file mode 100644
index 000000000..b6b497cfb
--- /dev/null
+++ b/headless-services/bosh-language-server/src/test/resources/application.properties
@@ -0,0 +1 @@
+spring.main.banner-mode=off
\ No newline at end of file
diff --git a/headless-services/commons/commons-java/pom.xml b/headless-services/commons/commons-java/pom.xml
index b4dee535b..c0b40604a 100644
--- a/headless-services/commons/commons-java/pom.xml
+++ b/headless-services/commons/commons-java/pom.xml
@@ -12,8 +12,6 @@
../pom.xml
-
-
org.springframework.ide.vscode
diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java
index d4a340129..480c29e1b 100644
--- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java
+++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java
@@ -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;