Fix compilation problem in bosh language server

This commit is contained in:
Kris De Volder
2019-02-12 14:34:51 -08:00
parent bc86170ae0
commit c3d5c19f0c
7 changed files with 71 additions and 9 deletions

View File

@@ -34,5 +34,22 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@@ -18,6 +18,7 @@ import org.springframework.ide.vscode.bosh.models.BoshCommandCloudConfigProvider
import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider;
import org.springframework.ide.vscode.bosh.models.BoshCommandStemcellsProvider;
import org.springframework.ide.vscode.commons.util.LogRedirect;
import org.springframework.ide.vscode.commons.yaml.reconcile.ASTTypeCache;
@SpringBootApplication
public class BoshLanguageServerBootApp {
@@ -29,6 +30,10 @@ public class BoshLanguageServerBootApp {
SpringApplication.run(BoshLanguageServerBootApp.class, args);
}
@Bean public ASTTypeCache astTypeCache() {
return new ASTTypeCache();
}
@Bean public String serverName() {
return SERVER_NAME;
}

View File

@@ -12,6 +12,7 @@ package org.springframework.ide.vscode.bosh;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.ide.vscode.bosh.models.BoshModels;
import org.springframework.ide.vscode.bosh.models.CloudConfigModel;
import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
@@ -49,6 +50,8 @@ public class BoshLanguageServerInitializer implements InitializingBean {
private DynamicModelProvider<ReleasesModel> releasesProvider;
@Autowired private SimpleLanguageServer server;
@Autowired private ApplicationContext appContext;
@Autowired private ASTTypeCache astTypeCache;
private BoshSchemas schema;
private VscodeCompletionEngineAdapter completionEngine;
@@ -66,11 +69,10 @@ public class BoshLanguageServerInitializer implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider);
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider, astTypeCache);
SimpleTextDocumentService documents = server.getTextDocumentService();
schema = new BoshSchemas(models);
YamlAstCache asts = models.asts;
ASTTypeCache astTypeCache = models.astTypes;
YamlStructureProvider structureProvider = YamlStructureProvider.DEFAULT;
YamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
@@ -80,8 +82,7 @@ public class BoshLanguageServerInitializer implements InitializingBean {
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(asts.getAstProvider(true), structureProvider, contextProvider);
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);
YamlSchemaBasedReconcileEngine engine = new YamlSchemaBasedReconcileEngine(asts.getAstProvider(false), schema, quickfixes, appContext);
documents.onDocumentSymbol(new TypeBasedYamlSymbolHandler(documents, astTypeCache, schema.getDefinitionTypes()));
documents.onDidChangeContent(params -> {

View File

@@ -18,17 +18,20 @@ import org.springframework.ide.vscode.commons.yaml.schema.DynamicSchemaContext;
public class BoshModels {
public final YamlAstCache asts = new YamlAstCache();
public final ASTTypeCache astTypes = new ASTTypeCache();
public final ASTTypeCache astTypes;
public final DynamicModelProvider<CloudConfigModel> cloudConfigProvider;
public final DynamicModelProvider<StemcellsModel> stemcellsProvider;
public final DynamicModelProvider<ReleasesModel> releasesProvider;
public BoshModels(DynamicModelProvider<CloudConfigModel> cloudConfigProvider,
DynamicModelProvider<StemcellsModel> stemcellsProvider,
DynamicModelProvider<ReleasesModel> releasesProvider) {
DynamicModelProvider<ReleasesModel> releasesProvider,
ASTTypeCache astTypes
) {
this.cloudConfigProvider = cloudConfigProvider;
this.stemcellsProvider = stemcellsProvider;
this.releasesProvider = releasesProvider;
this.astTypes = astTypes;
}
public String getTypeTag(DynamicSchemaContext dc) {

View File

@@ -15,6 +15,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.springframework.ide.vscode.bosh.models.BoshModels;
import org.springframework.ide.vscode.commons.languageserver.util.SnippetBuilder;
import org.springframework.ide.vscode.commons.yaml.reconcile.ASTTypeCache;
import org.springframework.ide.vscode.commons.yaml.schema.DynamicSchemaContext;
import org.springframework.ide.vscode.commons.yaml.schema.YType;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeUtil;
@@ -22,7 +23,7 @@ import org.springframework.ide.vscode.commons.yaml.snippet.SchemaBasedSnippetGen
public class SchemaBasedSnippetGeneratorTest {
private BoshDeploymentManifestSchema schema = new BoshSchemas(new BoshModels((dc) -> null, (dc) -> null, (dc) -> null)).getDeploymentSchema();
private BoshDeploymentManifestSchema schema = new BoshSchemas(new BoshModels((dc) -> null, (dc) -> null, (dc) -> null, new ASTTypeCache())).getDeploymentSchema();
private YTypeUtil typeUtil = schema.getTypeUtil();
private SchemaBasedSnippetGenerator generator = new SchemaBasedSnippetGenerator(typeUtil, SnippetBuilder::new);

View File

@@ -226,6 +226,12 @@ public class LanguageServerHarness {
}
}
public void ensureInitialized() throws Exception {
if (initResult==null) {
intialize(null);
}
}
public InitializeResult intialize(File workspaceRoot) throws Exception {
int parentPid = random.nextInt(40000)+1000;
InitializeParams initParams = new InitializeParams();
@@ -552,7 +558,6 @@ public class LanguageServerHarness {
}
public Hover getHover(TextDocumentInfo document, Position cursor) throws Exception {
TextDocumentPositionParams params = new TextDocumentPositionParams();
params.setPosition(cursor);
params.setTextDocument(document.getId());
@@ -587,16 +592,19 @@ public class LanguageServerHarness {
* Create editor with 'default' language id.
*/
public Editor newEditor(String contents) throws Exception {
ensureInitialized();
return newEditor(getDefaultLanguageId(), contents);
}
public synchronized Editor newEditorWithExt(LanguageId languageId, String extension, String contents) throws Exception {
ensureInitialized();
Editor editor = new Editor(this, contents, languageId, extension);
activeEditors.add(editor);
return editor;
}
public synchronized Editor newEditor(LanguageId languageId, String contents) throws Exception {
ensureInitialized();
Editor editor = new Editor(this, contents, languageId);
activeEditors.add(editor);
return editor;
@@ -604,6 +612,7 @@ public class LanguageServerHarness {
public synchronized Editor newEditor(LanguageId languageId, String contents, String resourceUri) throws Exception {
ensureInitialized();
TextDocumentInfo doc = docFromResource(contents, resourceUri, languageId);
Editor editor = new Editor(this, doc, contents, languageId);
activeEditors.add(editor);

View File

@@ -66,7 +66,6 @@ public class ConcourseEditorTest {
@Before public void setup() throws Exception {
serverInitializer.setMaxCompletions(100);
harness.intialize(null);
}
@Test public void addSingleRequiredPropertiesQuickfix() throws Exception {
@@ -3695,6 +3694,33 @@ public class ConcourseEditorTest {
);
}
@Test public void hiearhicalDocumentSymbolsInPipeline() throws Exception {
Editor editor = harness.newEditor(
"resource_types:\n" +
"- name: some-resource-type\n" +
"resources:\n" +
"- name: foo-resource\n" +
"- name: bar-resource\n" +
"jobs:\n" +
"- name: do-some-stuff\n" +
"- name: do-more-stuff\n" +
"groups:\n" +
"- name: group-one\n" +
"- name: group-two\n"
);
editor.assertDocumentSymbols(
"some-resource-type|ResourceType",
"foo-resource|Resource",
"bar-resource|Resource",
"do-some-stuff|Job",
"do-more-stuff|Job",
"group-one|Group",
"group-two|Group"
);
}
@Test public void reconcilerRaceCondition() throws Exception {
SynchronizationPoint reconcilerThreadStart = harness.reconcilerThreadStart();
Editor editor = harness.newEditor("garbage");