Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lemminx-maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<lemminx.maven.indexDirectory>${project.build.directory}/test-index</lemminx.maven.indexDirectory>
<maven.repo.local>${settings.localRepository}</maven.repo.local>
<junit-jupiter.version>6.0.3</junit-jupiter.version>
<lemminx.version>0.31.0</lemminx.version>
<lemminx.version>0.31.3-SNAPSHOT</lemminx.version>
<maven.version>3.9.14</maven.version>
<maven-resolver.version>1.9.25</maven-resolver.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2023 Red Hat Inc. and others.
* Copyright (c) 2023, 2026 Red Hat Inc. and others.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
Expand Down Expand Up @@ -37,6 +37,7 @@
import org.eclipse.lemminx.commons.BadLocationException;
import org.eclipse.lemminx.commons.CodeActionFactory;
import org.eclipse.lemminx.commons.TextDocument;
import org.eclipse.lemminx.commons.TextEditUtils;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.dom.DOMElement;
import org.eclipse.lemminx.dom.DOMNode;
Expand All @@ -52,6 +53,7 @@
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.ResourceOperation;
import org.eclipse.lsp4j.SnippetTextEdit;
import org.eclipse.lsp4j.TextDocumentEdit;
import org.eclipse.lsp4j.TextEdit;
import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
Expand Down Expand Up @@ -407,9 +409,10 @@ private static boolean isInWorkspacet(Set<URI> wsRoots, URI uri) {
}

private static TextDocumentEdit createProjectTextDocumentEdit(TextDocument textDocument, List<TextEdit> projectTextEdits) {
VersionedTextDocumentIdentifier projectVersionedTextDocumentIdentifier =
VersionedTextDocumentIdentifier projectVersionedTextDocumentIdentifier =
new VersionedTextDocumentIdentifier(textDocument.getUri(), textDocument.getVersion());
return new TextDocumentEdit(projectVersionedTextDocumentIdentifier, projectTextEdits);
List<Either<TextEdit, SnippetTextEdit>> edits = TextEditUtils.toEitherTextEdits(projectTextEdits);
return new TextDocumentEdit(projectVersionedTextDocumentIdentifier, edits);
}

private static CodeAction createReplaceCodeActione(String title, List<TextDocumentEdit> replace, Diagnostic diagnostic) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2023 Red Hat Inc. and others.
* Copyright (c) 2023, 2026 Red Hat Inc. and others.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
Expand All @@ -25,6 +25,7 @@
import org.apache.maven.project.MavenProject;
import org.eclipse.lemminx.commons.BadLocationException;
import org.eclipse.lemminx.commons.TextDocument;
import org.eclipse.lemminx.commons.TextEditUtils;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.dom.DOMElement;
import org.eclipse.lemminx.dom.DOMNode;
Expand All @@ -40,6 +41,7 @@
import org.eclipse.lemminx.services.extensions.rename.IRenameResponse;
import org.eclipse.lsp4j.PrepareRenameResult;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.SnippetTextEdit;
import org.eclipse.lsp4j.TextDocumentEdit;
import org.eclipse.lsp4j.TextEdit;
import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
Expand Down Expand Up @@ -172,7 +174,8 @@ public void doRename(IRenameRequest request, IRenameResponse renameResponse, Can
collectPropertyUseTextEdits(projectDocumentt.getDocumentElement(), oldPropertyName, newPropertyName, projectTextEdits, cancelChecker);
VersionedTextDocumentIdentifier projectVersionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
projectDocumentt.getTextDocument().getUri(), projectDocumentt.getTextDocument().getVersion());
renameResponse.addTextDocumentEdit(new TextDocumentEdit(projectVersionedTextDocumentIdentifier, projectTextEdits));
List<Either<TextEdit, SnippetTextEdit>> edits = TextEditUtils.toEitherTextEdits(projectTextEdits);
renameResponse.addTextDocumentEdit(new TextDocumentEdit(projectVersionedTextDocumentIdentifier, edits));
});
} catch (MavenInitializationException | MavenModelOutOfDatedException e) {
// - Maven is initializing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;

import org.eclipse.lemminx.commons.DiagnosticUtils;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings;
import org.eclipse.lemminx.extensions.maven.MavenLanguageService;
Expand All @@ -34,6 +35,7 @@
import org.eclipse.lsp4j.DiagnosticSeverity;
import org.eclipse.lsp4j.HoverCapabilities;
import org.eclipse.lsp4j.LocationLink;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.MarkupKind;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
Expand Down Expand Up @@ -243,15 +245,17 @@ public void testPluginArtifactDefinition() throws IOException, InterruptedExcept
@Timeout(30000)
public void testPluginConfigurationDiagnostics() throws IOException, InterruptedException, ExecutionException, URISyntaxException {
DOMDocument document = createDOMDocument("/pom-plugin-configuration-diagnostic.xml", languageService);
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {}).stream().map(Diagnostic::getMessage)
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {
}).stream().map(diag -> DiagnosticUtils.getDiagnosticMessage(diag))
.anyMatch(message -> message.contains("Invalid plugin configuration")));
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {}).size() == 2);
}

@Test
public void testPluginGoalDiagnostics() throws IOException, InterruptedException, ExecutionException, URISyntaxException {
DOMDocument document = createDOMDocument("/pom-plugin-goal-diagnostic.xml", languageService);
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {}).stream().map(Diagnostic::getMessage)
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {
}).stream().map(diag -> DiagnosticUtils.getDiagnosticMessage(diag))
.anyMatch(message -> message.contains("Invalid goal for this plugin")));
assertTrue(languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {}).size() == 2);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;

import org.eclipse.lemminx.commons.DiagnosticUtils;
import org.eclipse.lemminx.commons.TextDocument;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.dom.DOMNode;
Expand All @@ -48,17 +49,17 @@
import org.eclipse.lsp4j.CompletionList;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DiagnosticSeverity;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams;
import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.InitializeParams;
import org.eclipse.lsp4j.LocationLink;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.TextEdit;
import org.eclipse.lsp4j.WorkspaceFolder;
import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -147,7 +148,7 @@ public void testDoNotReportNonParseablePomError()
languageService.didOpen(document);

List<Diagnostic> diagnostics = languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnostics.stream().anyMatch(diag -> diag.getMessage().contains("Non-parseable POM")));
assertFalse(diagnostics.stream().anyMatch(diag -> DiagnosticUtils.getDiagnosticMessage(diag).contains("Non-parseable POM")));
}

@Test
Expand All @@ -158,7 +159,7 @@ public void testMissingArtifactIdError()

List<Diagnostic>diagnostics = languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {});
System.out.println(diagnostics);
assertTrue(diagnostics.stream().map(Diagnostic::getMessage)
assertTrue(diagnostics.stream().map(DiagnosticUtils::getDiagnosticMessage)
.anyMatch(message -> message.contains("artifactId")));
// simulate an edit
TextDocument textDocument = document.getTextDocument();
Expand All @@ -177,7 +178,7 @@ public void testSystemPathDiagnosticBug()
languageService.didOpen(document);

List<Diagnostic> diagnostics = languageService.doDiagnostics(document, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnostics.stream().anyMatch(diag -> diag.getMessage().contains("${env")));
assertFalse(diagnostics.stream().anyMatch(diag -> DiagnosticUtils.getDiagnosticMessage(diag).contains("${env")));
}

@Test
Expand Down Expand Up @@ -367,7 +368,10 @@ public void testModules() throws IOException, URISyntaxException {
List<Diagnostic> diagnosticsA = languageService.doDiagnostics(
documentA, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnosticsA.stream()
.anyMatch(diag -> (diag.getMessage().contains("ModuleA") || diag.getMessage().contains("ModuleB"))));
.anyMatch(diag -> {
String msg = DiagnosticUtils.getDiagnosticMessage(diag);
return msg.contains("ModuleA") || msg.contains("ModuleB");
}));

DOMDocument documentB = createDOMDocument("/modules/dependent/module-b-pom.xml", languageService);
languageService.didOpen(documentB);
Expand Down Expand Up @@ -403,14 +407,14 @@ public void testModulesCompletionInDependency() throws IOException, URISyntaxExc

List<Diagnostic> diagnosticsA = languageService.doDiagnostics(
documentA, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnosticsA.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA") || diag.getMessage().contains("ModuleB"))));
assertFalse(diagnosticsA.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleA") || DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleB"))));

DOMDocument documentB = createDOMDocument("/modules/dependent/module-b-pom.xml", languageService);
languageService.didOpen(documentB);

List<Diagnostic> diagnosticsB = languageService.doDiagnostics(
documentB, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnosticsB.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA") || diag.getMessage().contains("ModuleB"))));
assertFalse(diagnosticsB.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleA") || DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleB"))));

// The items collected from Workspace as well as from Maven Search API cannot be
// immediately obtained due to the "lazy: loading, so, we need to wait until all
Expand Down Expand Up @@ -476,14 +480,14 @@ public void testModulesCompletionInParent() throws IOException, URISyntaxExcepti

List<Diagnostic> diagnosticsA = languageService.doDiagnostics(
documentA, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnosticsA.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA") || diag.getMessage().contains("ModuleB"))));
assertFalse(diagnosticsA.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleA") || DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleB"))));

DOMDocument documentC = createDOMDocument("/modules/dependent/module-c-pom.xml", languageService);
languageService.didOpen(documentC);

List<Diagnostic> diagnosticsC = languageService.doDiagnostics(
documentC, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnosticsC.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA") || diag.getMessage().contains("ModuleB"))));
assertFalse(diagnosticsC.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleA") || DiagnosticUtils.getDiagnosticMessage(diag).contains("ModuleB"))));

// in <parent />
// for group ID
Expand Down Expand Up @@ -741,7 +745,7 @@ public void testSystemPath() throws Exception {
// 'dependencies.dependency.systemPath' for a:a:jar must specify an absolute
// path but is ${basedir}
assertTrue(
diagnostics.stream().anyMatch(diag -> (diag.getMessage().contains("dependencies.dependency.systemPath")
diagnostics.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag).contains("dependencies.dependency.systemPath")
&& r(14, 17, 14, 27).equals(diag.getRange()))));
languageService.dispose();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import org.eclipse.lemminx.XMLAssert.SettingsSaveContext;
import org.eclipse.lemminx.commons.BadLocationException;
import org.eclipse.lemminx.commons.DiagnosticUtils;
import org.eclipse.lemminx.commons.TextDocument;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.dom.DOMParser;
Expand All @@ -46,8 +47,10 @@
import org.eclipse.lsp4j.Command;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DiagnosticRelatedInformation;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

Expand Down Expand Up @@ -263,7 +266,7 @@ private void testCodeAction(DOMDocument xmlDocument, boolean ignoreNoGrammar, Di
public static void assertDiagnostics(List<Diagnostic> actual, List<Diagnostic> expected, boolean filter) {
List<Diagnostic> received = actual;
final boolean filterMessage;
if (expected != null && !expected.isEmpty() && !StringUtils.isEmpty(expected.get(0).getMessage())) {
if (expected != null && !expected.isEmpty() && !StringUtils.isEmpty(DiagnosticUtils.getDiagnosticMessage(expected.get(0)))) {
filterMessage = true;
} else {
filterMessage = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import static org.eclipse.lemminx.extensions.maven.DOMConstants.PROPERTIES_ELT;
import static org.eclipse.lemminx.extensions.maven.utils.MavenLemminxTestsUtils.createDOMDocument;
import static org.eclipse.lemminx.utils.TextEditUtils.creatTextDocumentEdit;
import static org.eclipse.lemminx.utils.DOMTextEditUtils.creatTextDocumentEdit;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import java.util.concurrent.ExecutionException;

import org.apache.maven.project.MavenProject;
import org.eclipse.lemminx.commons.DiagnosticUtils;
import org.eclipse.lemminx.commons.TextDocument;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings;
Expand All @@ -36,8 +37,10 @@
import org.eclipse.lemminx.services.extensions.IWorkspaceServiceParticipant;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.WorkspaceFolder;
import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down Expand Up @@ -135,7 +138,7 @@ public void testAddFolders_didChangeWorkspaceFolders() throws Exception {
languageService.didOpen(doc);

List<Diagnostic> diagnostics = languageService.doDiagnostics(doc, new XMLValidationSettings(), Map.of(), () -> {});
assertFalse(diagnostics.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA"))));
assertFalse(diagnostics.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag)).contains("ModuleA")));
}

// @Test
Expand Down Expand Up @@ -168,7 +171,7 @@ public void testRemoveFolders_didChangeWorkspaceFolders() throws Exception {
languageService.didOpen(doc);

List<Diagnostic> diagnostics = languageService.doDiagnostics(doc, new XMLValidationSettings(), Map.of(), () -> {});
assertTrue(diagnostics.stream().anyMatch(diag -> (diag.getMessage().contains("ModuleA"))));
assertTrue(diagnostics.stream().anyMatch(diag -> (DiagnosticUtils.getDiagnosticMessage(diag)).contains("ModuleA")));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import org.eclipse.lemminx.XMLAssert.SettingsSaveContext;
import org.eclipse.lemminx.commons.BadLocationException;
import org.eclipse.lemminx.commons.DiagnosticUtils;
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings;
import org.eclipse.lemminx.services.XMLLanguageService;
Expand Down Expand Up @@ -46,7 +47,7 @@ public static void testCodeAction( SharedSettings sharedSettings, XMLLanguageSer
public static void assertDiagnostics(List<Diagnostic> actual, List<Diagnostic> expected, boolean filter) {
List<Diagnostic> received = actual;
final boolean filterMessage;
if (expected != null && !expected.isEmpty() && !StringUtils.isEmpty(expected.get(0).getMessage())) {
if (expected != null && !expected.isEmpty() && !StringUtils.isEmpty(DiagnosticUtils.getDiagnosticMessage(expected.get(0)))) {
filterMessage = true;
} else {
filterMessage = false;
Expand Down
Loading