From 7662a9c21527e6467f7f4d1aba20ad3077648c59 Mon Sep 17 00:00:00 2001 From: Jonathan Schneider Date: Thu, 1 Oct 2026 16:21:04 +0100 Subject: [PATCH] Show the GAV being searched for in DependencyInsight's instance name DependencyInsight has two required options, so Recipe.getInstanceName()'s single-required-option rule never fires and every run renders as the bare display name. Override getInstanceNameSuffix() to always carry the group and artifact patterns, plus the version when one is set. The suffix is empty when the patterns are null, which is the case when the descriptor of an unconfigured recipe is rendered in a catalog; an unguarded format string shows `null:null` there. --- .../java/dependencies/DependencyInsight.java | 13 ++++++++++++ .../dependencies/DependencyInsightTest.java | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/main/java/org/openrewrite/java/dependencies/DependencyInsight.java b/src/main/java/org/openrewrite/java/dependencies/DependencyInsight.java index 619c3f06..9ba35ae7 100644 --- a/src/main/java/org/openrewrite/java/dependencies/DependencyInsight.java +++ b/src/main/java/org/openrewrite/java/dependencies/DependencyInsight.java @@ -59,6 +59,19 @@ public class DependencyInsight extends Recipe { @Nullable String scope; + @Override + public String getInstanceNameSuffix() { + // Null when rendering the descriptor of an unconfigured recipe; a "null:null" suffix + // would then be shown wherever recipes are listed. + if (groupIdPattern == null || artifactIdPattern == null) { + return ""; + } + if (version == null) { + return String.format("`%s:%s`", groupIdPattern, artifactIdPattern); + } + return String.format("`%s:%s:%s`", groupIdPattern, artifactIdPattern, version); + } + @Override public TreeVisitor getVisitor() { return new TreeVisitor() { diff --git a/src/test/java/org/openrewrite/java/dependencies/DependencyInsightTest.java b/src/test/java/org/openrewrite/java/dependencies/DependencyInsightTest.java index 38a9a5fc..93510733 100644 --- a/src/test/java/org/openrewrite/java/dependencies/DependencyInsightTest.java +++ b/src/test/java/org/openrewrite/java/dependencies/DependencyInsightTest.java @@ -20,6 +20,7 @@ import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; +import static org.assertj.core.api.Assertions.assertThat; import static org.openrewrite.maven.Assertions.pomXml; class DependencyInsightTest implements RewriteTest { @@ -29,6 +30,26 @@ public void defaults(RecipeSpec spec) { spec.recipe(new DependencyInsight("org.springframework*", "*", null, null)); } + @Test + void instanceNameShowsWhatIsBeingSearchedFor() { + assertThat(new DependencyInsight("com.fasterxml.jackson*", "jackson-*", null, null).getInstanceName()) + .isEqualTo("Dependency insight for Gradle and Maven `com.fasterxml.jackson*:jackson-*`"); + } + + @Test + void instanceNameIncludesVersionWhenGiven() { + assertThat(new DependencyInsight("com.fasterxml.jackson*", "jackson-*", "2.x", null).getInstanceName()) + .isEqualTo("Dependency insight for Gradle and Maven `com.fasterxml.jackson*:jackson-*:2.x`"); + } + + @Test + void instanceNameOmitsTheSuffixWhenUnconfigured() { + // The descriptor of an unconfigured recipe is rendered wherever recipes are listed; + // it must not read "null:null". + assertThat(new DependencyInsight(null, null, null, null).getInstanceName()) + .isEqualTo("Dependency insight for Gradle and Maven"); + } + @DocumentExample @Test void maven() {