-
Notifications
You must be signed in to change notification settings - Fork 101
Create recipe for @InlineMe
annotation replacements
#788
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@InlineMe
annotations@InlineMe
annotation replacements
Replicated with |
src/main/java/org/openrewrite/java/migrate/InlineMethodCalls.java
Outdated
Show resolved
Hide resolved
src/main/java/org/openrewrite/java/migrate/InlineMethodCalls.java
Outdated
Show resolved
Hide resolved
So as a proof of concept this now works; there's still possible improvements to be made:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! I am not sure if we can change the TypesInUse like that, but perhaps we also find a different solution. For now I think wrapping in a declarative recipe with a precondition is quite sufficient.
Confirmed by running at scale: These two methods are annotated with their replacements
Which we ran through the platform: https://app.moderne.io/results/v7n9xVESH diff --git a/library/src/com/google/common/geometry/S2ConvexHullQuery.java b/library/src/com/google/common/geometry/S2ConvexHullQuery.java
index d30e9b9..0683d66 100644
--- a/library/src/com/google/common/geometry/S2ConvexHullQuery.java
+++ b/library/src/com/google/common/geometry/S2ConvexHullQuery.java
@@ -268,7 +268,7 @@ org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods
// Construct a loop consisting of the two vertices and their midpoint. We use
// S2EdgeUtil.interpolate() to ensure that the midpoint is very close to the edge even when its
// endpoints are nearly antipodal.
- S2Loop loop = new S2Loop(ImmutableList.of(a, b, S2EdgeUtil.interpolate(0.5, a, b)));
+ S2Loop loop = new S2Loop(ImmutableList.of(a, b, S2EdgeUtil.interpolate(a, b, 0.5)));
// The resulting loop may be clockwise, so invert it if necessary.
loop.normalize();
return loop;
diff --git a/library/src/com/google/common/geometry/S2ContainsPointQuery.java b/library/src/com/google/common/geometry/S2ContainsPointQuery.java
index 1eff5c9..a99bfb6 100644
--- a/library/src/com/google/common/geometry/S2ContainsPointQuery.java
+++ b/library/src/com/google/common/geometry/S2ContainsPointQuery.java
@@ -314,7 +314,7 @@ org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods
for (int i = 0; i < numEdges; i++) {
int edgeId = clipped.edge(i);
shape.getEdge(edgeId, tmp);
- if (tmp.isEndpoint(p) && !visitor.test(shapeId, edgeId, tmp.a, tmp.b)) {
+ if (tmp.hasEndpoint(p) && !visitor.test(shapeId, edgeId, tmp.a, tmp.b)) {
return false;
}
}
diff --git a/library/src/com/google/common/geometry/S2EdgeTessellator.java b/library/src/com/google/common/geometry/S2EdgeTessellator.java
index 531b88d..d15cf22 100644
--- a/library/src/com/google/common/geometry/S2EdgeTessellator.java
+++ b/library/src/com/google/common/geometry/S2EdgeTessellator.java
@@ -280,8 +280,8 @@ org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods
double t1 = INTERPOLATION_FRACTION;
double t2 = 1 - INTERPOLATION_FRACTION;
- S2Point mid1 = S2EdgeUtil.interpolate(t1, a, b);
- S2Point mid2 = S2EdgeUtil.interpolate(t2, a, b);
+ S2Point mid1 = S2EdgeUtil.interpolate(a, b, t1);
+ S2Point mid2 = S2EdgeUtil.interpolate(a, b, t2);
S2Point projectedMid1 = projection.unproject(Projection.interpolate(t1, pa, pb));
S2Point projectedMid2 = projection.unproject(Projection.interpolate(t2, pa, pb));
S1ChordAngle mid1Angle = new S1ChordAngle(mid1, projectedMid1);
diff --git a/tests/tests/com/google/common/geometry/S2PolylineTest.java b/tests/tests/com/google/common/geometry/S2PolylineTest.java
index d45801b..8c5a3bc 100644
--- a/tests/tests/com/google/common/geometry/S2PolylineTest.java
+++ b/tests/tests/com/google/common/geometry/S2PolylineTest.java
@@ -565,14 +565,14 @@ org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods
@Test
public void testNumEdges() {
// Empty polyline has zero edges
- assertEquals(0, makePolyline("").numEdges());
+ assertEquals(0, makePolyline("").shape().numEdges());
// Single vertex polyline has one degenerate edge
- assertEquals(1, makePolyline("0:0").numEdges());
+ assertEquals(1, makePolyline("0:0").shape().numEdges());
// Multiple vertex polylines have non-zero edges
- assertEquals(1, makePolyline("0:0, 1:1").numEdges());
- assertEquals(2, makePolyline("0:0, 1:1, 2:2").numEdges());
+ assertEquals(1, makePolyline("0:0, 1:1").shape().numEdges());
+ assertEquals(2, makePolyline("0:0, 1:1, 2:2").shape().numEdges());
}
@Test |
@mike-solomon could make for a nice addition to the docs as something we now support for folks looking to migrate internal methods more easily: add that annotation to your deprecated method, then run the recipe that switches over any usage, and finally remove the deprecated method. |
Based on a suggestion from Tim: openrewrite/rewrite-migrate-java#788 (comment)
* Add a guide on migrating deprecated methods Based on a suggestion from Tim: openrewrite/rewrite-migrate-java#788 (comment) * Fix spelling warnings * Slight polish * Add markdown around annotation in title --------- Co-authored-by: Mike Solomon <mike-solomon@users.noreply.github.com> Co-authored-by: Tim te Beek <tim@moderne.io>
…15.0 to 3.16.0 [skip ci] [//]: # (dependabot-start)⚠️ \*\*Dependabot is rebasing this PR\*\*⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Bumps [org.openrewrite.recipe:rewrite-migrate-java](https://github.com/openrewrite/rewrite-migrate-java) from 3.15.0 to 3.16.0. Release notes *Sourced from [org.openrewrite.recipe:rewrite-migrate-java's releases](https://github.com/openrewrite/rewrite-migrate-java/releases).* > 3.16.0 > ------ > > What's Changed > -------------- > > * Fixed validation.xml in jakarta-ee-10.yml by [`@daniel-skovenborg`](https://github.com/daniel-skovenborg) in [openrewrite/rewrite-migrate-java#834](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/834) > * Adding `jakarta.servlet:jakarta.servlet-api` explicitly when the `javax.servlet:javax.servlet-api` it is trying to migrate from was only available transitively. by [`@steve-aom-elliott`](https://github.com/steve-aom-elliott) in [openrewrite/rewrite-migrate-java#835](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/835) > * Drop Joda-Time recipes extracted to rewrite-joda by [`@timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#836](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/836) > * Adopt `InlineMethodCalls` from `openrewrite/rewrite` by [`@timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#837](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/837) > * AddJaxbRuntime should use `overrideManagedDependency=true` by [`@timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#838](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/838) > > New Contributors > ---------------- > > * [`@daniel-skovenborg`](https://github.com/daniel-skovenborg) made their first contribution in [openrewrite/rewrite-migrate-java#834](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/834) > > **Full Changelog**: <openrewrite/rewrite-migrate-java@v3.15.1...v3.16.0> > > v3.15.1 > ------- > > What's Changed > -------------- > > * Update with rewrite 8.60.2 > * Improve Java 17 and Java 21 switch expression tests by [`@jevanlingen`](https://github.com/jevanlingen) in [openrewrite/rewrite-migrate-java#822](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/822) > * The JakartaEE9 upgrade process supplements the jakarta.activation upg… by [`@ChenyuWang98`](https://github.com/ChenyuWang98) in [openrewrite/rewrite-migrate-java#820](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/820) > * Move all switch expression recipes to Java 21 migration by [`@jevanlingen`](https://github.com/jevanlingen) in [openrewrite/rewrite-migrate-java#824](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/824) > * JakartaEE9 update restLet to 2.6.x by [`@ChenyuWang98`](https://github.com/ChenyuWang98) in [openrewrite/rewrite-migrate-java#827](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/827) > * Update jetty9 -> jetty12 as part of EE9 by [`@ChenyuWang98`](https://github.com/ChenyuWang98) in [openrewrite/rewrite-migrate-java#826](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/826) > * Migrate to `commons-fileupload2-jakarta` by [`@ChenyuWang98`](https://github.com/ChenyuWang98) in [openrewrite/rewrite-migrate-java#819](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/819) > * Update jakarta-ee-9.yml add javax.servlet.jsp update by [`@ChenyuWang98`](https://github.com/ChenyuWang98) in [openrewrite/rewrite-migrate-java#829](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/829) > * Create recipe for `@InlineMe` annotation replacements by [`@timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#788](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/788) > * Use classpath from resource for Refaster by [`@jevanlingen`](https://github.com/jevanlingen) in [openrewrite/rewrite-migrate-java#830](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/830) > * Fix recipe reference to `AccessController` migration for Java 25 by [`@MBoegers`](https://github.com/MBoegers) in [openrewrite/rewrite-migrate-java#832](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/832) > * Update build Java 25 by [`@MBoegers`](https://github.com/MBoegers) in [openrewrite/rewrite-migrate-java#833](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/833) > > New Contributors > ---------------- > > * [`@ChenyuWang98`](https://github.com/ChenyuWang98) made their first contribution in [openrewrite/rewrite-migrate-java#820](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/820) > > **Full Changelog**: <openrewrite/rewrite-migrate-java@v3.15.0...v3.15.1> Commits * [`caec49a`](openrewrite/rewrite-migrate-java@caec49a) AddJaxbRuntime should use `overrideManagedDependency=true` ([#838](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/838)) * [`c831007`](openrewrite/rewrite-migrate-java@c831007) Update documentation examples * [`05fa3e0`](openrewrite/rewrite-migrate-java@05fa3e0) Adopt `InlineMethodCalls` from `openrewrite/rewrite` ([#837](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/837)) * [`35ba076`](openrewrite/rewrite-migrate-java@35ba076) Drop Joda-Time recipes extracted to rewrite-joda ([#836](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/836)) * [`7d30127`](openrewrite/rewrite-migrate-java@7d30127) Adding `jakarta.servlet:jakarta.servlet-api` explicitly when the `javax.servl... * [`cea52ed`](openrewrite/rewrite-migrate-java@cea52ed) [Auto] SDKMAN! Java candidates as of 2025-08-25T1017 * [`eb159a4`](openrewrite/rewrite-migrate-java@eb159a4) Fixed validation.xml in jakarta-ee-10.yml ([#834](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/834)) * [`0563040`](openrewrite/rewrite-migrate-java@0563040) update builds to Java 25 ([#833](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/833)) * [`0d9d736`](openrewrite/rewrite-migrate-java@0d9d736) Fix recipe reference to `AccessController` migration for Java 25 ([#832](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/832)) * [`8a16285`](openrewrite/rewrite-migrate-java@8a16285) Support `@InlineMe` annotations from any package * Additional commits viewable in [compare view](openrewrite/rewrite-migrate-java@v3.15.0...v3.16.0) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Any additional context
@InlineMe
) rewrite#5400