1515 */
1616package org .openrewrite .java .migrate .guava ;
1717
18- import java .time .Duration ;
1918import org .jspecify .annotations .Nullable ;
20- import org .openrewrite .ExecutionContext ;
21- import org .openrewrite .Option ;
22- import org .openrewrite .Preconditions ;
23- import org .openrewrite .Recipe ;
24- import org .openrewrite .Tree ;
25- import org .openrewrite .TreeVisitor ;
19+ import org .openrewrite .*;
2620import org .openrewrite .internal .ListUtils ;
2721import org .openrewrite .java .JavaTemplate ;
2822import org .openrewrite .java .JavaVisitor ;
3125import org .openrewrite .java .search .UsesType ;
3226import org .openrewrite .java .tree .*;
3327import org .openrewrite .marker .Markers ;
28+
29+ import java .time .Duration ;
3430import java .util .ArrayList ;
31+ import java .util .List ;
3532
3633import static java .util .Collections .emptyList ;
37- import java .util .List ;
3834
3935abstract class AbstractNoGuavaImmutableOf extends Recipe {
4036
4137 private final String guavaType ;
4238 private final String javaType ;
4339
4440 @ Option (displayName = "Whether to convert return type (the default value is false)." ,
45- description = "converting the return type from Guava Type to Java Type " +
46- "The default value is false." ,
47- example = "true" ,
48- required = false )
41+ description = "converting the return type from Guava Type to Java Type " +
42+ "The default value is false." ,
43+ example = "true" ,
44+ required = false )
4945 boolean isAbleToConvertReturnType ;
46+
5047 AbstractNoGuavaImmutableOf (String guavaType , String javaType ) {
5148 this .guavaType = guavaType ;
5249 this .javaType = javaType ;
5350 }
51+
5452 AbstractNoGuavaImmutableOf (String guavaType , String javaType , boolean isAbleToConvertReturnType ) {
5553 this .guavaType = guavaType ;
5654 this .javaType = javaType ;
@@ -175,13 +173,13 @@ private boolean isParentTypeDownCast(MethodCall immutableMethod) {
175173 @ Override
176174 public J .VariableDeclarations visitVariableDeclarations (J .VariableDeclarations multiVariable , ExecutionContext ctx ) {
177175 J .VariableDeclarations mv = (J .VariableDeclarations ) super .visitVariableDeclarations (multiVariable , ctx );
178- if (!isAbleToConvertReturnType ) {
176+ if (!isAbleToConvertReturnType ) {
179177 return mv ;
180178 }
181179 if (multiVariable != mv && TypeUtils .isOfClassType (mv .getType (), guavaType )) {
182180 JavaType newType = JavaType .buildType (javaType );
183181 mv = mv .withTypeExpression (mv .getTypeExpression () == null ?
184- null : createNewTypeExpression (mv .getTypeExpression (), newType ));
182+ null : createNewTypeExpression (mv .getTypeExpression (), newType ));
185183
186184 mv = mv .withVariables (ListUtils .map (mv .getVariables (), variable -> {
187185 JavaType .FullyQualified varType = TypeUtils .asFullyQualified (variable .getType ());
@@ -200,25 +198,25 @@ private TypeTree createNewTypeExpression(TypeTree typeTree, JavaType newType) {
200198 J .ParameterizedType parameterizedType = (J .ParameterizedType ) typeTree ;
201199 List <JRightPadded <Expression >> jRightPaddedList = new ArrayList <>();
202200 parameterizedType .getTypeParameters ().forEach (
203- expression -> {
204- if (expression instanceof J .ParameterizedType && TypeUtils .isOfClassType (expression .getType (), guavaType )) {
205- jRightPaddedList .add (JRightPadded .build (((J .ParameterizedType ) createNewTypeExpression ((TypeTree ) expression , newType ))));
206- } else {
207- jRightPaddedList .add (JRightPadded .build (expression ));
208- }
209- });
201+ expression -> {
202+ if (expression instanceof J .ParameterizedType && TypeUtils .isOfClassType (expression .getType (), guavaType )) {
203+ jRightPaddedList .add (JRightPadded .build (((J .ParameterizedType ) createNewTypeExpression ((TypeTree ) expression , newType ))));
204+ } else {
205+ jRightPaddedList .add (JRightPadded .build (expression ));
206+ }
207+ });
210208 NameTree clazz = new J .Identifier (
211- Tree .randomId (), Space .EMPTY , Markers .EMPTY , emptyList (), getShortType (javaType ), null , null );
209+ Tree .randomId (), Space .EMPTY , Markers .EMPTY , emptyList (), getShortType (javaType ), null , null );
212210 return parameterizedType .withClazz (clazz ).withType (newType ).getPadding ().withTypeParameters (JContainer .build (jRightPaddedList ));
213211 }
214212 return new J .Identifier (
215- typeTree .getId (),
216- typeTree .getPrefix (),
217- Markers .EMPTY ,
218- emptyList (),
219- getShortType (javaType ),
220- newType ,
221- null
213+ typeTree .getId (),
214+ typeTree .getPrefix (),
215+ Markers .EMPTY ,
216+ emptyList (),
217+ getShortType (javaType ),
218+ newType ,
219+ null
222220 );
223221 }
224222
0 commit comments