Fix compilation problem in bosh language server
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user