From c67f0d63e0ae3899add9fb49e06a95b43a8abc5a Mon Sep 17 00:00:00 2001 From: Victor Rubezhny Date: Fri, 21 Jul 2023 18:04:30 +0200 Subject: [PATCH] Don't report "Non-parseable POM" error #446 Fixes: #446 --- .../lemminx/extensions/maven/MavenProjectCache.java | 5 ++++- .../extensions/maven/participants/SimpleModelTest.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/MavenProjectCache.java b/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/MavenProjectCache.java index 043b3104..e10cd361 100644 --- a/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/MavenProjectCache.java +++ b/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/MavenProjectCache.java @@ -36,6 +36,7 @@ import org.apache.maven.model.building.ModelProblem; import org.apache.maven.model.building.ModelProblem.Severity; import org.apache.maven.model.building.ModelProblem.Version; +import org.apache.maven.model.io.ModelParseException; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import org.apache.maven.project.DefaultProjectBuilder; import org.apache.maven.project.DefaultProjectBuildingRequest; @@ -174,7 +175,9 @@ private void parseAndCache(URI uri, int version, FileModelSource source) { if (e.getCause() instanceof ModelBuildingException modelBuildingException) { // Try to manually build a minimal project from the document to collect lower-level // errors and to have something usable in cache for most basic operations - problems.addAll(modelBuildingException.getProblems()); + modelBuildingException.getProblems().stream() + .filter(p -> !(p.getException() instanceof ModelParseException)) + .forEach(problems::add); try (InputStream documentStream = source.getInputStream()) { Model model = mavenReader.read(documentStream); project = new MavenProject(model); diff --git a/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/SimpleModelTest.java b/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/SimpleModelTest.java index cb1799f0..bcd3335a 100644 --- a/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/SimpleModelTest.java +++ b/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/SimpleModelTest.java @@ -122,6 +122,15 @@ public void testLocalParentGAVCompletion() // * if relativePath is not set, complete with remote repo artifacts with "pom" packaging } + @Test + public void testDoNotReportNonParseablePomError() + throws IOException, InterruptedException, ExecutionException, URISyntaxException { + TextDocument textDocument = new TextDocument(" < ", "file:///pom.xml"); + DOMDocument document = DOMParser.getInstance().parse(textDocument, languageService.getResolverExtensionManager()); + List diagnostics = languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {}); + assertFalse(diagnostics.stream().anyMatch(diag -> diag.getMessage().contains("Non-parseable POM"))); + } + @Test public void testMissingArtifactIdError() throws IOException, InterruptedException, ExecutionException, URISyntaxException {