diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/yaml/reconcile/ApplicationYamlASTReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/yaml/reconcile/ApplicationYamlASTReconciler.java index f00ab120a..40b407177 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/yaml/reconcile/ApplicationYamlASTReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/yaml/reconcile/ApplicationYamlASTReconciler.java @@ -58,6 +58,7 @@ import org.springframework.ide.vscode.commons.yaml.ast.NodeUtil; import org.springframework.ide.vscode.commons.yaml.ast.YamlFileAST; import org.springframework.ide.vscode.commons.yaml.path.YamlPath; import org.springframework.ide.vscode.commons.yaml.reconcile.YamlASTReconciler; +import org.springframework.ide.vscode.commons.yaml.util.YamlUtil; import org.yaml.snakeyaml.nodes.MappingNode; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.NodeId; @@ -95,7 +96,12 @@ public class ApplicationYamlASTReconciler implements YamlASTReconciler { List nodes = root.getNodes(); if (nodes!=null && !nodes.isEmpty()) { for (Node node : nodes) { - reconcile(root, node, nav); + if (!"".equals(NodeUtil.asScalar(node))) { + //^^^ ignore completely empty yaml (sub)documents. Checking them results in + //spurious errors/warnings. + //See https://github.com/spring-projects/sts4/issues/711 + reconcile(root, node, nav); + } } } } diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java index 321fe0dbb..6f2bd0f99 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java @@ -90,6 +90,27 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest { } //////////////////////////////////////////////////////////////////////////////////////// + + @Test public void test_GH_711_error_on_extra_empty_yaml_document() throws Exception { + //https://github.com/spring-projects/sts4/issues/711 + defaultTestData(); + Editor editor = newEditor( + "spring:\n" + + " application:\n" + + " name: demo\n" + + "---\n" + + "spring:\n" + + " profiles:\n" + + " active: dev\n" + + "services:\n" + + " common:\n" + + " url: https://getguid.azurewebsites.net\n" + + "---\n" + ); + editor.assertProblems( + "services|Unknown" + ); + } @Test public void test_GH_615_deprecated_spring_profiles() throws Exception { IJavaProject p = createPredefinedMavenProject("empty-boot-2.4.4-app");