Skip to content

Commit 6f06259

Browse files
committed
GH-1431: fix broken hierarchical vs non-hierarchical symbol generation for concourse yaml
1 parent ef83670 commit 6f06259

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

headless-services/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/reconcile/TypeBasedYamlHierarchicalSymbolHandler.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.slf4j.Logger;
2323
import org.slf4j.LoggerFactory;
2424
import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbolHandler;
25+
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
2526
import org.springframework.ide.vscode.commons.util.Assert;
2627
import org.springframework.ide.vscode.commons.util.text.DocumentRegion;
2728
import org.springframework.ide.vscode.commons.util.text.IDocument;
@@ -140,20 +141,27 @@ public void addChild(DocumentSymbol sym) {
140141

141142
private Stack<Item> stack = new Stack<>();
142143
private ImmutableList.Builder<DocumentSymbol> rootSymbols;
144+
private SimpleLanguageServer server;
143145

144-
public TypeBasedYamlHierarchicalSymbolHandler(TypeBasedYamlSymbolHandler baseHandler,
145-
List<HierarchicalDefType> hierarchicalDefinitionTypes) {
146-
this.baseHandler = baseHandler;
147-
Builder<YType, HierarchicalDefType> builder = ImmutableMap.builder();
148-
for (HierarchicalDefType hdt : hierarchicalDefinitionTypes) {
149-
builder.put(hdt.defType, hdt);
150-
}
151-
this.hierarchicalDefinitionTypes = builder.build();
146+
public TypeBasedYamlHierarchicalSymbolHandler(TypeBasedYamlSymbolHandler baseHandler, List<HierarchicalDefType> hierarchicalDefinitionTypes, SimpleLanguageServer server) {
147+
this.baseHandler = baseHandler;
148+
Builder<YType, HierarchicalDefType> builder = ImmutableMap.builder();
149+
for (HierarchicalDefType hdt : hierarchicalDefinitionTypes) {
150+
builder.put(hdt.defType, hdt);
151+
}
152+
this.hierarchicalDefinitionTypes = builder.build();
153+
this.server = server;
152154
}
153155

154156
@Override
155157
public List<? extends DocumentSymbol> handle(DocumentSymbolParams params) {
156-
return outlineByUri.get(params.getTextDocument().getUri());
158+
if (server.hasHierarchicalDocumentSymbolSupport()) {
159+
return outlineByUri.get(params.getTextDocument().getUri());
160+
}
161+
else {
162+
return this.baseHandler.handle(params);
163+
}
164+
157165
}
158166

159167
@Override

headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/ConcourseLanguageServerBootApp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ public static void main(String[] args) throws Exception {
4848
return new ASTTypeCache();
4949
}
5050

51-
@Bean DocumentSymbolHandler documentSymbolHandler(SimpleTextDocumentService documents, ASTTypeCache astTypeCache, PipelineYmlSchema schema) {
51+
@Bean DocumentSymbolHandler documentSymbolHandler(SimpleTextDocumentService documents, ASTTypeCache astTypeCache, PipelineYmlSchema schema, SimpleLanguageServer server) {
5252
TypeBasedYamlSymbolHandler baseHandler = new TypeBasedYamlSymbolHandler(documents, astTypeCache, schema.getDefinitionTypes());
53-
return new TypeBasedYamlHierarchicalSymbolHandler(baseHandler, schema.getHierarchicalDefinitionTypes());
53+
return new TypeBasedYamlHierarchicalSymbolHandler(baseHandler, schema.getHierarchicalDefinitionTypes(), server);
5454
}
5555

5656
@Bean PipelineYmlSchema pipelineYmlSchema(ConcourseModel models, GithubInfoProvider github) {

headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2016, 2024 Pivotal, Inc.
2+
* Copyright (c) 2016, 2025 Pivotal, Inc.
33
* All rights reserved. This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v1.0
55
* which accompanies this distribution, and is available at
@@ -5023,13 +5023,13 @@ void gotoSymbolInPipeline() throws Exception {
50235023
);
50245024

50255025
editor.assertDocumentSymbols(
5026-
"some-resource-type|ResourceType",
5027-
"foo-resource|Resource",
5028-
"bar-resource|Resource",
5029-
"do-some-stuff|Job",
5030-
"do-more-stuff|Job",
5031-
"group-one|Group",
5032-
"group-two|Group"
5026+
"some-resource-type",
5027+
"foo-resource",
5028+
"bar-resource",
5029+
"do-some-stuff",
5030+
"do-more-stuff",
5031+
"group-one",
5032+
"group-two"
50335033
);
50345034
}
50355035

0 commit comments

Comments
 (0)