|
22 | 22 | import org.openrewrite.java.JavaTemplate; |
23 | 23 | import org.openrewrite.java.JavaVisitor; |
24 | 24 | import org.openrewrite.java.MethodMatcher; |
| 25 | +import org.openrewrite.java.ShortenFullyQualifiedTypeReferences; |
25 | 26 | import org.openrewrite.java.search.UsesMethod; |
26 | 27 | import org.openrewrite.java.tree.Expression; |
27 | 28 | import org.openrewrite.java.tree.J; |
28 | | -import org.openrewrite.java.tree.JavaType; |
29 | | -import org.openrewrite.java.tree.TypeUtils; |
30 | 29 |
|
31 | 30 | import java.util.List; |
32 | 31 | import java.util.Set; |
@@ -74,59 +73,25 @@ private J handlePredicatesMethod(J.MethodInvocation method, String operation) { |
74 | 73 | return method; |
75 | 74 | } |
76 | 75 |
|
77 | | - maybeRemoveImport("com.google.common.base.Predicate"); |
78 | 76 | maybeRemoveImport("com.google.common.base.Predicates"); |
79 | | - maybeAddImport("java.util.function.Predicate"); |
80 | 77 |
|
81 | 78 | // Build the chain: first.operation(second).operation(third)... |
82 | 79 | Expression result = arguments.get(0); |
83 | 80 |
|
84 | 81 | // If the first argument is a method reference, wrap it with a cast |
85 | 82 | if (result instanceof J.MemberReference && result.getType() != null) { |
86 | | - JavaType type = result.getType(); |
87 | | - String typeString = getTypeString(type); |
88 | | - if (typeString != null) { |
89 | | - result = JavaTemplate.builder("((" + typeString + ") #{any()})") |
90 | | - .build() |
91 | | - .apply(getCursor(), |
92 | | - method.getCoordinates().replace(), |
93 | | - result); |
94 | | - } |
| 83 | + String typeString = result.getType().toString().replace("com.google.common.base.", ""); |
| 84 | + result = JavaTemplate.apply("((" + typeString + ") #{any()})", getCursor(), method.getCoordinates().replace(), result); |
95 | 85 | } |
96 | | - |
97 | 86 | for (int i = 1; i < arguments.size(); i++) { |
98 | | - result = JavaTemplate.builder("#{any(java.util.function.Predicate)}." + operation + "(#{any(java.util.function.Predicate)})") |
99 | | - .build() |
100 | | - .apply(getCursor(), |
101 | | - method.getCoordinates().replace(), |
102 | | - result, |
103 | | - arguments.get(i)); |
| 87 | + result = JavaTemplate.apply("#{any(java.util.function.Predicate)}." + operation + "(#{any(java.util.function.Predicate)})", |
| 88 | + getCursor(), method.getCoordinates().replace(), result, arguments.get(i)); |
104 | 89 | } |
105 | 90 |
|
| 91 | + doAfterVisit(ShortenFullyQualifiedTypeReferences.modifyOnly(result)); |
106 | 92 | return result; |
107 | 93 | } |
108 | 94 |
|
109 | | - private String getTypeString(JavaType type) { |
110 | | - if (type instanceof JavaType.Parameterized) { |
111 | | - JavaType.Parameterized parameterized = (JavaType.Parameterized) type; |
112 | | - JavaType.FullyQualified fq = TypeUtils.asFullyQualified(parameterized.getType()); |
113 | | - if (fq != null && !parameterized.getTypeParameters().isEmpty()) { |
114 | | - StringBuilder sb = new StringBuilder(fq.getClassName()); |
115 | | - sb.append("<"); |
116 | | - for (int i = 0; i < parameterized.getTypeParameters().size(); i++) { |
117 | | - if (i > 0) sb.append(", "); |
118 | | - JavaType param = parameterized.getTypeParameters().get(i); |
119 | | - JavaType.FullyQualified paramFq = TypeUtils.asFullyQualified(param); |
120 | | - if (paramFq != null) { |
121 | | - sb.append(paramFq.getClassName()); |
122 | | - } |
123 | | - } |
124 | | - sb.append(">"); |
125 | | - return sb.toString(); |
126 | | - } |
127 | | - } |
128 | | - return null; |
129 | | - } |
130 | 95 | }); |
131 | 96 | } |
132 | 97 | } |
0 commit comments