Skip to content

Commit

Permalink
Provided dependencies from imported BOM are not correctly calculated …
Browse files Browse the repository at this point in the history
…on hover #347

A fix for the case with the version defined with property variable in parent pom.xml and JUnit test case
  • Loading branch information
vrubezhny committed Feb 1, 2023
1 parent dd3fe65 commit a64c302
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,9 @@ private String getManagedVersionText(IHoverRequest request) {
for (DOMElement e : elements) {
Optional<String> version = DOMUtils.findChildElementText(e, VERSION_ELT);
if (version.isPresent()) {
String sourceModelId = parentMavenProject.getGroupId() + ':' + parentMavenProject.getArtifactId() + ':' + parentMavenProject.getVersion();
return createVersionMessage(request.canSupportMarkupKind(MarkupKind.MARKDOWN), version.get(), sourceModelId, parentPomFile.toURI().toString());
Dependency d = ParticipantUtils.getArtifactToSearch(parentMavenProject, e);
String sourceModelId = d.getGroupId() + ':' + d.getArtifactId() + ':' + d.getVersion();
return createVersionMessage(request.canSupportMarkupKind(MarkupKind.MARKDOWN), d.getVersion(), sourceModelId, parentPomFile.toURI().toString());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,8 @@ void testManagedVersionHoverInDependencyGrandchild() throws IOException, URISynt
@Timeout(90000)
void testManagedVersionHoverForBomProvidedDependency() throws IOException, URISyntaxException {
System.out.println(">>> testManagedVersionHoverForBomProvidedDependency");
DOMDocument document = createDOMDocument("/pom-bom-defined-dependency-version.xml", languageService);
Position position = new Position(25, 20);
DOMDocument document = createDOMDocument("/eclipse-bom-tester/pom.xml", languageService);
Position position = new Position(26, 30);

// Find Definition links
List<? extends LocationLink> definitions = languageService.findDefinition(document, position, ()->{});
Expand All @@ -147,7 +147,31 @@ void testManagedVersionHoverForBomProvidedDependency() throws IOException, URISy
System.out.println("<<< testManagedVersionHoverForBomProvidedDependency");
}

// Enable MARKDOWN format
@Test
@Timeout(90000)
void testManagedVersionHoverForBomProvidedDependencyWithProperty() throws IOException, URISyntaxException {
System.out.println(">>> testManagedVersionHoverForBomProvidedDependencyWithProperty");
DOMDocument document = createDOMDocument("/eclipse-bom-tester/pom.xml", languageService);
Position position = new Position(32, 30);

// Find Definition links
List<? extends LocationLink> definitions = languageService.findDefinition(document, position, ()->{});
definitions.stream().map(LocationLink::getTargetUri).forEach(u -> System.out.println("Definition Link: " + u));
assertTrue(definitions.stream().map(LocationLink::getTargetUri).anyMatch(uri -> uri.endsWith("commons-lang3-3.12.0.pom")));

// Find Hover with managed version
Hover hover = languageService.doHover(document, position, createSharedSettings());
final String value = hover.getContents().getRight().getValue();
System.out.println("Hover Text: [" + value + "]");
assertNotNull(value);
assertTrue(value.contains("The managed version is"));
assertTrue(value.contains("3.12.0"));
assertTrue(value.contains("The artifact is managed in"));
assertTrue(value.contains("eclipse-bom-tester/parent/pom.xml"));
System.out.println("<<< testManagedVersionHoverForBomProvidedDependencyWithProperty");
}

// Enable MARKDOWN format
private static SharedSettings createSharedSettings() {
HoverCapabilities hoverCapabilities = new HoverCapabilities();
hoverCapabilities.setContentFormat(Arrays.asList(MarkupKind.MARKDOWN));
Expand Down
42 changes: 42 additions & 0 deletions lemminx-maven/src/test/resources/eclipse-bom-tester/parent/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>org.eclipse.test</groupId>
<artifactId>bom-import-parent</artifactId>
<version>1.0.0</version>

<inceptionYear>2023</inceptionYear>

<packaging>pom</packaging>

<properties>
<payara-version>5.2022.3</payara-version>
<commons-lang3-version>3.12.0</commons-lang3-version>
</properties>

<dependencyManagement>
<dependencies>

<dependency>
<groupId>fish.payara.api</groupId>
<artifactId>payara-bom</artifactId>
<version>${payara-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3-version}</version>
</dependency>

</dependencies>
</dependencyManagement>

</project>
38 changes: 38 additions & 0 deletions lemminx-maven/src/test/resources/eclipse-bom-tester/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.eclipse.test</groupId>
<artifactId>bom-import-parent</artifactId>
<version>1.0.0</version>
<relativePath>parent/pom.xml</relativePath>
</parent>

<artifactId>bom-import-child</artifactId>

<inceptionYear>2023</inceptionYear>

<packaging>pom</packaging>


<dependencies>

<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>

</dependencies>

</project>

This file was deleted.

0 comments on commit a64c302

Please sign in to comment.