diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLLanguageServerComponents.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLLanguageServerComponents.java index e56168e6b..4f566cfdb 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLLanguageServerComponents.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLLanguageServerComponents.java @@ -49,7 +49,7 @@ public class SpringXMLLanguageServerComponents implements LanguageServerComponen server.doOnInitialized(this::initialized); server.onShutdown(this::shutdown); - this.reconcileEngine = new SpringXMLReconcileEngine(projectFinder); + this.reconcileEngine = new SpringXMLReconcileEngine(projectFinder, config); config.addListener(ignore -> { reconcileEngine.setSpelExpressionSyntaxValidationEnabled(config.isSpelExpressionValidationEnabled() && config.isSpringXMLSupportEnabled()); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLReconcileEngine.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLReconcileEngine.java index 0c782ace0..6592b2487 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLReconcileEngine.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/xml/SpringXMLReconcileEngine.java @@ -12,17 +12,17 @@ package org.springframework.ide.vscode.boot.xml; import static org.springframework.ide.vscode.boot.xml.XmlConfigConstants.BEANS_NAMESPACE; import static org.springframework.ide.vscode.boot.xml.XmlConfigConstants.BEAN_ELEMENT; -import static org.springframework.ide.vscode.boot.xml.XmlConfigConstants.VALUE_ATTRIBUTE; import static org.springframework.ide.vscode.boot.xml.XmlConfigConstants.PROPERTY_ELEMENT; +import static org.springframework.ide.vscode.boot.xml.XmlConfigConstants.VALUE_ATTRIBUTE; import java.net.URI; +import java.nio.file.Paths; import org.eclipse.lemminx.dom.DOMDocument; import org.eclipse.lemminx.dom.DOMNode; import org.eclipse.lemminx.dom.DOMParser; import org.eclipse.lsp4j.TextDocumentIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.springframework.ide.vscode.boot.app.BootJavaConfig; import org.springframework.ide.vscode.boot.java.handlers.SpelExpressionReconciler; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; @@ -35,14 +35,14 @@ import org.springframework.ide.vscode.commons.util.text.IDocument; */ public class SpringXMLReconcileEngine implements IReconcileEngine { - private static final Logger log = LoggerFactory.getLogger(SpringXMLReconcileEngine.class); - private final JavaProjectFinder projectFinder; private final SpelExpressionReconciler spelExpressionReconciler; private final XMLElementReconciler[] reconcilers; + private final BootJavaConfig config; - public SpringXMLReconcileEngine(JavaProjectFinder projectFinder) { + public SpringXMLReconcileEngine(JavaProjectFinder projectFinder, BootJavaConfig config) { this.projectFinder = projectFinder; + this.config = config; this.spelExpressionReconciler = new SpelExpressionReconciler(); @@ -61,7 +61,10 @@ public class SpringXMLReconcileEngine implements IReconcileEngine { public void reconcile(final IDocument doc, final IProblemCollector problemCollector) { IJavaProject project = projectFinder.find(new TextDocumentIdentifier(doc.getUri())).orElse(null); URI uri = URI.create(doc.getUri()); - + if (!config.isSpringXMLSupportEnabled() || "pom.xml".equals(Paths.get(uri).getFileName().toString())) { + return; + } + if (project != null) { try { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/XMLSpelExpressionValidationTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/XMLSpelExpressionValidationTest.java index 4850d3250..da9b7da6c 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/XMLSpelExpressionValidationTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/XMLSpelExpressionValidationTest.java @@ -34,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; +import org.springframework.ide.vscode.boot.app.BootJavaConfig; import org.springframework.ide.vscode.boot.app.BootLanguageServerBootApp; import org.springframework.ide.vscode.boot.bootiful.XmlBeansTestConf; import org.springframework.ide.vscode.boot.xml.SpringXMLReconcileEngine; @@ -69,6 +70,7 @@ public class XMLSpelExpressionValidationTest { @Autowired private BootLanguageServerHarness harness; @Autowired private SimpleLanguageServer server; @Autowired private JavaProjectFinder projectFinder; + @Autowired private BootJavaConfig config; private ProjectsHarness projects = ProjectsHarness.INSTANCE; private MavenJavaProject project; @@ -99,7 +101,7 @@ public class XMLSpelExpressionValidationTest { docUri = directory.toPath().resolve("src/main/webapp/WEB-INF/spring/root-context.xml").toUri().toString(); problemCollector = new TestProblemCollector(); - reconcileEngine = new SpringXMLReconcileEngine(projectFinder); + reconcileEngine = new SpringXMLReconcileEngine(projectFinder, config); } @After