From b6d5e89e7075231fe1620e8eefcc9a6b5f6ad42f Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Thu, 18 Jan 2024 14:55:33 +0100 Subject: [PATCH] GH-1163: fixed problem with content-assist not showing up for fully qualified beans root element --- .../boot/xml/SpringXMLCompletionEngine.java | 4 ++-- .../boot/xml/test/XMLContentAssistTest.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLCompletionEngine.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLCompletionEngine.java index 461b1489d..9290963f1 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLCompletionEngine.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLCompletionEngine.java @@ -184,7 +184,7 @@ public class SpringXMLCompletionEngine implements ICompletionEngine, LanguageSpe case AttributeName: if (scanner.getTokenOffset() <= offset && offset < scanner.getTokenEnd()) { if (node.getParentNode() != null && node.getParentNode() instanceof DOMDocument - && namespace.equals("http://www.springframework.org/schema/beans") && node.getNodeName().equals("beans")) { + && namespace.equals("http://www.springframework.org/schema/beans") && node.getLocalName().equals("beans")) { return NamespaceCompletionProvider.createNamespaceCompletionProposals(doc, offset, token, node); } } @@ -192,7 +192,7 @@ public class SpringXMLCompletionEngine implements ICompletionEngine, LanguageSpe case Whitespace: if (scanner.getTokenOffset() <= offset && offset < scanner.getTokenEnd()) { if (node.getParentNode() != null && node.getParentNode() instanceof DOMDocument - && namespace.equals("http://www.springframework.org/schema/beans") && node.getNodeName().equals("beans")) { + && namespace.equals("http://www.springframework.org/schema/beans") && node.getLocalName().equals("beans")) { return NamespaceCompletionProvider.createNamespaceCompletionProposals(doc, offset, token, node); } } diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/xml/test/XMLContentAssistTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/xml/test/XMLContentAssistTest.java index 9347031c1..8b3c51b6f 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/xml/test/XMLContentAssistTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/xml/test/XMLContentAssistTest.java @@ -324,7 +324,29 @@ public class XMLContentAssistTest { editorContent); } + @Test + void testAddNamespaceCompletionWhenBeansElementFullyQualified() throws Exception { + Editor editor = new Editor(harness, """ + + + xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd + http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> + + + + + """, + LanguageId.XML); + + List completions = editor.getCompletions(); + assertEquals(ALL_NAMESPACE_COMPLETIONS, completions.size()); + } @Test void testNoNamespaceCompletionOutsideOfMainElement1() throws Exception {