diff --git a/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/participants/hover/MavenHoverParticipant.java b/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/participants/hover/MavenHoverParticipant.java index 97da2263..5bd4079b 100644 --- a/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/participants/hover/MavenHoverParticipant.java +++ b/lemminx-maven/src/main/java/org/eclipse/lemminx/extensions/maven/participants/hover/MavenHoverParticipant.java @@ -143,6 +143,7 @@ yield hoverForProject(request, private static final String PomTextHover_managed_location = "The artifact is managed in {0}"; private static final String PomTextHover_managed_location_missing = "The managed definition location could not be determined, probably defined by \"import\" scoped dependencies."; private static final String PomTextHover_property_location = "The property is defined in {0}"; + private static final String PomTextHover_managed_scope = "The managed scope is: \"{0}\""; private static String getActualVersionText(boolean supportsMarkdown, MavenProject project) { if (project == null) { @@ -252,12 +253,9 @@ private static String createVersionMessage(boolean supportsMarkdown, String vers private static String createVersionMessage(boolean supportsMarkdown, String version, String sourceModelId, String uri) { UnaryOperator toBold = supportsMarkdown ? MarkdownUtils::toBold : UnaryOperator.identity(); - String message = null; - if (version != null) { - message = toBold.apply(MessageFormat.format(PomTextHover_managed_version, version)); - } else { - message = toBold.apply(PomTextHover_managed_version_missing); - } + String message = (version != null) + ? toBold.apply(MessageFormat.format(PomTextHover_managed_version, version)) + : toBold.apply(PomTextHover_managed_version_missing); if (sourceModelId != null) { message += ' ' + toBold.apply(MessageFormat.format(PomTextHover_managed_location, @@ -340,6 +338,11 @@ private Hover collectArtifactDescription(IHoverRequest request) { } } + // Add dependency scope info + if (dependency.getScope() != null) { + message += lineBreak + toBold.apply(MessageFormat.format(PomTextHover_managed_scope, dependency.getScope())); + } + if (message.length() > 2) { return new Hover(new MarkupContent(supportsMarkdown ? MarkupKind.MARKDOWN : MarkupKind.PLAINTEXT, message)); } diff --git a/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/hover/ManagedVersionHoverTest.java b/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/hover/ManagedVersionHoverTest.java index beef5613..55cfdd8a 100644 --- a/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/hover/ManagedVersionHoverTest.java +++ b/lemminx-maven/src/test/java/org/eclipse/lemminx/extensions/maven/participants/hover/ManagedVersionHoverTest.java @@ -63,6 +63,7 @@ void testManagedVersionHoverInDependencyChild() throws IOException, URISyntaxExc assertTrue(value.contains("The artifact is managed in")); assertTrue(value.contains("dependencyManagement:parent:0.0.1-SNAPSHOT")); assertTrue(value.contains("pom-dependencyManagement-parent.xml")); + assertTrue(value.contains("The managed scope is: \"compile\"")); } @Test @@ -75,6 +76,7 @@ void testManagedVersionHoverInDependencyParent() throws IOException, URISyntaxEx assertNotNull(value); assertFalse(value.contains("The managed version is")); assertFalse(value.contains("The artifact is managed in")); + assertFalse(value.contains("The managed scope is:")); } @Test @@ -90,6 +92,7 @@ void testManagedVersionHoverInPluginChild() throws IOException, URISyntaxExcepti assertTrue(value.contains("The artifact is managed in")); assertTrue(value.contains("pluginManagement:parent:0.0.1-SNAPSHOT")); assertTrue(value.contains("pom-pluginManagement-parent.xml")); + assertFalse(value.contains("The managed scope is:")); } @Test @@ -102,6 +105,7 @@ void testManagedVersionHoverInPluginParent() throws IOException, URISyntaxExcept assertNotNull(value); assertFalse(value.contains("The managed version is")); assertFalse(value.contains("The artifact is managed in")); + assertFalse(value.contains("The managed scope is:")); } @Test @@ -117,6 +121,7 @@ void testManagedVersionHoverInDependencyGrandchild() throws IOException, URISynt assertTrue(value.contains("The artifact is managed in")); assertTrue(value.contains("com.zollum.demo:demo:0.0.1-SNAPSHOT")); assertTrue(value.contains("hierarchy2/pom.xml")); + assertTrue(value.contains("The managed scope is: \"compile\"")); } @Test @@ -145,7 +150,9 @@ void testManagedVersionHoverForBomProvidedDependency() throws IOException, URISy // Compare the links from definition and hover assertTrue(definitions.stream().map(LocationLink::getTargetUri) .anyMatch(uri -> value.replace('\\', '/').contains(uri.substring("file:/".length())))); - System.out.println("<<< testManagedVersionHoverForBomProvidedDependency"); + + assertTrue(value.contains("The managed scope is: \"provided\"")); + System.out.println("<<< testManagedVersionHoverForBomProvidedDependency"); } @Test @@ -170,6 +177,7 @@ void testManagedVersionHoverForBomProvidedDependencyWithProperty() throws IOExce assertTrue(value.contains("The artifact is managed in")); assertTrue(value.contains("org.eclipse.test:bom-import-parent:1.0.0")); assertTrue(value.contains("eclipse-bom-tester/parent/pom.xml")); + assertTrue(value.contains("The managed scope is: \"compile\"")); System.out.println("<<< testManagedVersionHoverForBomProvidedDependencyWithProperty"); }