Skip to content

Commit 852189b

Browse files
committed
FindTypes: Refactor typeMatches()
Inline `isAssignableFrom()` until available in all environments.
1 parent ffe5ca3 commit 852189b

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

rewrite-java/src/main/java/org/openrewrite/java/search/FindTypes.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
import lombok.EqualsAndHashCode;
1919
import lombok.Value;
20-
import org.jspecify.annotations.NonNull;
2120
import org.jspecify.annotations.Nullable;
2221
import org.openrewrite.*;
22+
import org.openrewrite.internal.ToBeRemoved;
2323
import org.openrewrite.java.JavaIsoVisitor;
24-
import org.openrewrite.java.TypeNameMatcher;
2524
import org.openrewrite.java.JavaVisitor;
2625
import org.openrewrite.java.TypeMatcher;
26+
import org.openrewrite.java.TypeNameMatcher;
2727
import org.openrewrite.java.table.TypeUses;
2828
import org.openrewrite.java.tree.*;
2929
import org.openrewrite.marker.SearchResult;
@@ -145,19 +145,35 @@ private static boolean typeMatches(boolean checkAssignability, TypeNameMatcher m
145145
return false;
146146
}
147147
if (checkAssignability) {
148-
return test.isAssignableFrom(matcher);
148+
return isAssignableFrom(matcher, test);
149149
} else {
150150
return matcher.matches(test.getFullyQualifiedName());
151151
}
152152
}
153153

154+
@ToBeRemoved(after = "2025-10-15")
155+
private static boolean isAssignableFrom(TypeNameMatcher matcher, JavaType.FullyQualified test) {
156+
if (matcher.matches(test.getFullyQualifiedName())) {
157+
return true;
158+
}
159+
if (test.getSupertype() != null && isAssignableFrom(matcher, test.getSupertype())) {
160+
return true;
161+
}
162+
for (JavaType.FullyQualified anInterface : test.getInterfaces()) {
163+
if (isAssignableFrom(matcher, anInterface)) {
164+
return true;
165+
}
166+
}
167+
return false;
168+
}
169+
154170
@Value
155171
@EqualsAndHashCode(callSuper = false)
156172
private static class ReferenceVisitor extends TreeVisitor<Tree, ExecutionContext> {
157173
Set<Tree> matches;
158174

159175
@Override
160-
public Tree postVisit(@NonNull Tree tree, ExecutionContext ctx) {
176+
public Tree postVisit(Tree tree, ExecutionContext ctx) {
161177
return matches.contains(tree) ? SearchResult.found(tree) : tree;
162178
}
163179
}

0 commit comments

Comments
 (0)