openrewrite / rewrite-templating

Automated templating using code snippets.
Apache License 2.0
16 stars 7 forks source link

Match method overrides in precondition #100

Closed timtebeek closed 1 month ago

timtebeek commented 2 months ago

What's changed?

Instead of new UsesMethod<>("java.lang.String join(..)") Generate new UsesMethod<>("java.lang.String join(..)", true)

What's your motivation?

We want to also match methods overrridden in sub classes where possible.

Anything in particular you'd like reviewers to focus on?

Not sure if this might negatively affect some existing recipes that have come to expect stricter matching. Figured open this PR to get the discussion around that going.

Also not yet sure if the before.matcher(getCursor())).find() would even match.

Anyone you would like to review specifically?

@knutwannheden

Have you considered any alternatives or workarounds?

We could add explicit recipes for overridden methods, but that quickly explodes the number of recipes.

We could also offer a way to tag before templates where overridden methods should also be matched.

Any additional context

Came up while discussing recipes for Apache POI, where Cell might have multiple extending classes.