diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaRefaster.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaRefaster.java index 9f03d57065..37db830d96 100644 --- a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaRefaster.java +++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaRefaster.java @@ -30,6 +30,22 @@ public class NoGuavaRefaster { description = "Migrate from Guava `Preconditions.checkNotNull` to Java 8 `java.util.Objects.requireNonNull`." ) public static class PreconditionsCheckNotNullToObjectsRequireNonNull { + @BeforeTemplate + Object before(Object object) { + return com.google.common.base.Preconditions.checkNotNull(object); + } + + @AfterTemplate + Object after(Object object) { + return java.util.Objects.requireNonNull(object); + } + } + + @RecipeDescriptor( + name = "`Preconditions.checkNotNull` with message to `Objects.requireNonNull`", + description = "Migrate from Guava `Preconditions.checkNotNull` to Java 8 `java.util.Objects.requireNonNull`." + ) + public static class PreconditionsCheckNotNullWithMessageToObjectsRequireNonNull { @BeforeTemplate Object before(Object object, Object message) { return com.google.common.base.Preconditions.checkNotNull(object, message); @@ -47,6 +63,7 @@ Object after(Object object, Object message) { ) public static class StringValueOfString { @BeforeTemplate + @SuppressWarnings("UnnecessaryCallToStringValueOf") String before(String string) { return String.valueOf(string); } diff --git a/src/main/resources/META-INF/rewrite/no-guava.yml b/src/main/resources/META-INF/rewrite/no-guava.yml index f382c46952..6fdbaa1bbb 100644 --- a/src/main/resources/META-INF/rewrite/no-guava.yml +++ b/src/main/resources/META-INF/rewrite/no-guava.yml @@ -42,7 +42,6 @@ recipeList: - org.openrewrite.java.migrate.guava.PreferJavaUtilSupplier - org.openrewrite.java.migrate.guava.PreferJavaUtilObjectsEquals - org.openrewrite.java.migrate.guava.PreferJavaUtilObjectsHashCode - - org.openrewrite.java.migrate.guava.PreferJavaUtilObjectsRequireNonNull - org.openrewrite.java.migrate.guava.PreferJavaUtilCollectionsUnmodifiableNavigableMap - org.openrewrite.java.migrate.guava.PreferJavaUtilCollectionsSynchronizedNavigableMap - org.openrewrite.java.migrate.guava.PreferCharCompare @@ -215,21 +214,6 @@ recipeList: methodPattern: com.google.common.base.Objects hash(..) fullyQualifiedTargetTypeName: java.util.Objects ---- -type: specs.openrewrite.org/v1beta/recipe -name: org.openrewrite.java.migrate.guava.PreferJavaUtilObjectsRequireNonNull -displayName: Prefer `java.util.Objects#requireNonNull` -description: Prefer `java.util.Objects#requireNonNull` instead of using `com.google.common.base.Preconditions#checkNotNull`. -tags: - - guava -recipeList: - - org.openrewrite.java.ChangeMethodName: - methodPattern: com.google.common.base.Preconditions checkNotNull(Object) - newMethodName: requireNonNull - - org.openrewrite.java.ChangeMethodTargetToStatic: - methodPattern: com.google.common.base.Preconditions requireNonNull(Object) - fullyQualifiedTargetTypeName: java.util.Objects - --- type: specs.openrewrite.org/v1beta/recipe name: org.openrewrite.java.migrate.guava.PreferJavaUtilObjectsRequireNonNullElse diff --git a/src/test/java/org/openrewrite/java/migrate/guava/PreferJavaUtilObjectsTest.java b/src/test/java/org/openrewrite/java/migrate/guava/PreferJavaUtilObjectsTest.java index 2a340b6195..9684e11e83 100644 --- a/src/test/java/org/openrewrite/java/migrate/guava/PreferJavaUtilObjectsTest.java +++ b/src/test/java/org/openrewrite/java/migrate/guava/PreferJavaUtilObjectsTest.java @@ -26,7 +26,7 @@ class PreferJavaUtilObjectsTest implements RewriteTest { @Override public void defaults(RecipeSpec spec) { - spec.recipeFromResource("/META-INF/rewrite/no-guava.yml", "org.openrewrite.java.migrate.guava.NoGuava") + spec.recipe(new NoGuavaRefasterRecipes()) .parser(JavaParser.fromJavaVersion().classpath("rewrite-java", "guava")); } @@ -58,6 +58,33 @@ Object foo(Object obj) { ); } + @Test + void preconditionsCheckNotNullToObjectsRequireNonNullStringArgument() { + rewriteRun( + //language=java + java( + """ + import com.google.common.base.Preconditions; + + class A { + String foo(String str) { + return Preconditions.checkNotNull(str); + } + } + """, + """ + import java.util.Objects; + + class A { + String foo(String str) { + return Objects.requireNonNull(str); + } + } + """ + ) + ); + } + @Test void preconditionsCheckNotNullToObjectsRequireNonNullTwoArguments() { rewriteRun( @@ -127,11 +154,30 @@ Object foo(Object obj) { } """, """ - import static java.util.Objects.requireNonNull; + import java.util.Objects; + + class A { + Object foo(Object obj) { + return Objects.requireNonNull(obj); + } + } + """ + ) + ); + } + + @Test + void preconditionsCheckNotNullWithTemplateArgument() { + // There's no direct replacement for this three arg lenient format variant + rewriteRun( + //language=java + java( + """ + import com.google.common.base.Preconditions; class A { Object foo(Object obj) { - return requireNonNull(obj); + return Preconditions.checkNotNull(obj, "%s", "foo"); } } """