diff --git a/.run/InlineMethodCallsRecipeGenerator.run.xml b/.run/InlineMethodCallsRecipeGenerator.run.xml new file mode 100644 index 0000000000..f8c37a2f2e --- /dev/null +++ b/.run/InlineMethodCallsRecipeGenerator.run.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/rewrite/classpath.tsv.gz b/src/main/resources/META-INF/rewrite/classpath.tsv.gz index 2be2154424..c2ae3bf6f1 100644 Binary files a/src/main/resources/META-INF/rewrite/classpath.tsv.gz and b/src/main/resources/META-INF/rewrite/classpath.tsv.gz differ diff --git a/src/main/resources/META-INF/rewrite/inline-guava-methods.yml b/src/main/resources/META-INF/rewrite/inline-guava-methods.yml new file mode 100644 index 0000000000..b1fe810b57 --- /dev/null +++ b/src/main/resources/META-INF/rewrite/inline-guava-methods.yml @@ -0,0 +1,310 @@ +# Copyright 2025 the original author or authors. +#

+# Licensed under the Moderne Source Available License (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +#

+# https://docs.moderne.io/licensing/moderne-source-available-license +#

+# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Generated InlineMe recipes from TypeTable +# + +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods +displayName: Inline methods annotated with `@InlineMe` +description: >- + Automatically generated recipes to inline method calls based on `@InlineMe` annotations + discovered in the type table. +recipeList: + + # From com.google.guava:guava:33.4.8-jre + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Booleans compare(boolean, boolean)' + replacement: 'Boolean.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Longs compare(long, long)' + replacement: 'Long.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Ints compare(int, int)' + replacement: 'Integer.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.graph.ImmutableValueGraph copyOf(com.google.common.graph.ImmutableValueGraph)' + replacement: 'checkNotNull(graph)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Doubles compare(double, double)' + replacement: 'Double.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Streams stream(java.util.Collection)' + replacement: 'collection.stream()' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Streams stream(java.util.Optional)' + replacement: 'optional.stream()' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Streams stream(java.util.OptionalInt)' + replacement: 'optional.stream()' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Streams stream(java.util.OptionalLong)' + replacement: 'optional.stream()' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Streams stream(java.util.OptionalDouble)' + replacement: 'optional.stream()' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Range apply(java.lang.Comparable)' + replacement: 'this.contains(input)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Range test(java.lang.Comparable)' + replacement: 'this.contains(input)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.FluentIterable from(com.google.common.collect.FluentIterable)' + replacement: 'checkNotNull(iterable)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.ImmutableList asList()' + replacement: 'this' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Chars compare(char, char)' + replacement: 'Character.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.TreeBasedTable rowComparator()' + replacement: 'requireNonNull(this.rowKeySet().comparator())' + staticImports: + - 'java.util.Objects.requireNonNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Multisets unmodifiableMultiset(com.google.common.collect.ImmutableMultiset)' + replacement: 'checkNotNull(multiset)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Iterators unmodifiableIterator(com.google.common.collect.UnmodifiableIterator)' + replacement: 'checkNotNull(iterator)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Iterators peekingIterator(com.google.common.collect.PeekingIterator)' + replacement: 'checkNotNull(iterator)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Ordering from(com.google.common.collect.Ordering)' + replacement: 'checkNotNull(ordering)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Ordering binarySearch(java.util.List, java.lang.Object)' + replacement: 'Collections.binarySearch(sortedList, key, this)' + imports: + - 'java.util.Collections' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Multimaps unmodifiableMultimap(com.google.common.collect.ImmutableMultimap)' + replacement: 'checkNotNull(delegate)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Multimaps unmodifiableSetMultimap(com.google.common.collect.ImmutableSetMultimap)' + replacement: 'checkNotNull(delegate)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Multimaps unmodifiableListMultimap(com.google.common.collect.ImmutableListMultimap)' + replacement: 'checkNotNull(delegate)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.base.Equivalence test(java.lang.Object, java.lang.Object)' + replacement: 'this.equivalent(t, u)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Sets newSetFromMap(java.util.Map)' + replacement: 'Collections.newSetFromMap(map)' + imports: + - 'java.util.Collections' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.base.Strings repeat(java.lang.String, int)' + replacement: 'string.repeat(count)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.hash.BloomFilter apply(java.lang.Object)' + replacement: 'this.mightContain(input)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.hash.BloomFilter test(java.lang.Object)' + replacement: 'this.mightContain(input)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.base.CharMatcher apply(java.lang.Character)' + replacement: 'this.matches(character)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.base.CharMatcher test(java.lang.Character)' + replacement: 'this.matches(character)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.ComparisonChain compare(java.lang.Boolean, java.lang.Boolean)' + replacement: 'this.compareFalseFirst(left, right)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files toString(java.io.File, java.nio.charset.Charset)' + replacement: 'Files.asCharSource(file, charset).read()' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files write(java.lang.CharSequence, java.io.File, java.nio.charset.Charset)' + replacement: 'Files.asCharSink(to, charset).write(from)' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files copy(java.io.File, java.nio.charset.Charset, java.lang.Appendable)' + replacement: 'Files.asCharSource(from, charset).copyTo(to)' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files append(java.lang.CharSequence, java.io.File, java.nio.charset.Charset)' + replacement: 'Files.asCharSink(to, charset, FileWriteMode.APPEND).write(from)' + imports: + - 'com.google.common.io.FileWriteMode' + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files readFirstLine(java.io.File, java.nio.charset.Charset)' + replacement: 'Files.asCharSource(file, charset).readFirstLine()' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files readLines(java.io.File, java.nio.charset.Charset, com.google.common.io.LineProcessor)' + replacement: 'Files.asCharSource(file, charset).readLines(callback)' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files readBytes(java.io.File, com.google.common.io.ByteProcessor)' + replacement: 'Files.asByteSource(file).read(processor)' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.io.Files hash(java.io.File, com.google.common.hash.HashFunction)' + replacement: 'Files.asByteSource(file).hash(hashFunction)' + imports: + - 'com.google.common.io.Files' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.util.concurrent.FluentFuture from(com.google.common.util.concurrent.FluentFuture)' + replacement: 'checkNotNull(future)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.base.Converter apply(java.lang.Object)' + replacement: 'this.convert(a)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Shorts compare(short, short)' + replacement: 'Short.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.graph.ImmutableGraph copyOf(com.google.common.graph.ImmutableGraph)' + replacement: 'checkNotNull(graph)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.primitives.Floats compare(float, float)' + replacement: 'Float.compare(a, b)' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.collect.Iterables unmodifiableIterable(com.google.common.collect.ImmutableCollection)' + replacement: 'checkNotNull(iterable)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' + - org.openrewrite.java.InlineMethodCalls: + methodPattern: 'com.google.common.graph.ImmutableNetwork copyOf(com.google.common.graph.ImmutableNetwork)' + replacement: 'checkNotNull(network)' + staticImports: + - 'com.google.common.base.Preconditions.checkNotNull' + classpathFromResources: + - 'guava-33.4.8-jre' diff --git a/src/main/resources/META-INF/rewrite/no-guava.yml b/src/main/resources/META-INF/rewrite/no-guava.yml index adbfd4680c..5ae1768008 100644 --- a/src/main/resources/META-INF/rewrite/no-guava.yml +++ b/src/main/resources/META-INF/rewrite/no-guava.yml @@ -109,20 +109,6 @@ recipeList: - org.openrewrite.java.migrate.guava.NoMapsAndSetsWithExpectedSize - org.openrewrite.java.migrate.guava.PreferMathClamp ---- -type: specs.openrewrite.org/v1beta/recipe -name: org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods -displayName: Inline Guava method calls -description: >- - Inline Guava method calls that are annotated with `@InlineMe` to their replacement method. -tags: - - guava -preconditions: - - org.openrewrite.analysis.search.FindMethods: - methodPattern: com.google.common..* *(..) -recipeList: - - org.openrewrite.java.InlineMethodCalls - --- type: specs.openrewrite.org/v1beta/recipe name: org.openrewrite.java.migrate.guava.PreferJavaNioCharsetStandardCharsets diff --git a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaInlineMeMethodsTest.java b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaInlineMeMethodsTest.java index d91488b760..fd74232aae 100644 --- a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaInlineMeMethodsTest.java +++ b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaInlineMeMethodsTest.java @@ -26,8 +26,7 @@ class NoGuavaInlineMeMethodsTest implements RewriteTest { @Override public void defaults(RecipeSpec spec) { - spec.recipeFromResource( - "/META-INF/rewrite/no-guava.yml", + spec.recipeFromResources( "org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods"); } diff --git a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaJava21Test.java b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaJava21Test.java index 49692c1684..a87b2af68f 100644 --- a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaJava21Test.java +++ b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaJava21Test.java @@ -28,7 +28,7 @@ class NoGuavaJava21Test implements RewriteTest { @Override public void defaults(RecipeSpec spec) { spec - .recipeFromResource("/META-INF/rewrite/no-guava.yml", "org.openrewrite.java.migrate.guava.NoGuava") + .recipeFromResources("org.openrewrite.java.migrate.guava.NoGuava") .parser(JavaParser.fromJavaVersion().classpathFromResources(new InMemoryExecutionContext(), "guava")); } diff --git a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaTest.java b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaTest.java index f8e155c8bf..bd8f22d0f3 100644 --- a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaTest.java +++ b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaTest.java @@ -30,7 +30,7 @@ class NoGuavaTest implements RewriteTest { @Override public void defaults(RecipeSpec spec) { spec - .recipeFromResource("/META-INF/rewrite/no-guava.yml", "org.openrewrite.java.migrate.guava.NoGuava") + .recipeFromResources("org.openrewrite.java.migrate.guava.NoGuava") .parser(JavaParser.fromJavaVersion().classpathFromResources(new InMemoryExecutionContext(), "guava")); }