in v2-migration/src/main/java/software/amazon/awssdk/v2migration/NewClassToBuilder.java [99:176]
public J visitNewClass(J.NewClass previousNewClass, ExecutionContext executionContext) {
J.NewClass newClass = super.visitNewClass(previousNewClass, executionContext).cast();
if (!(newClass.getType() instanceof JavaType.FullyQualified)) {
return newClass;
}
JavaType.FullyQualified classType = (JavaType.FullyQualified) newClass.getType();
if (!isEligibleToConvertToBuilder(classType) ||
!newClass.getConstructorType().getParameterNames().isEmpty()) {
return newClass;
}
JavaType.FullyQualified builderType = SdkTypeUtils.v2Builder(classType);
J.Identifier modelId = new J.Identifier(
Tree.randomId(),
Space.EMPTY,
Markers.EMPTY,
Collections.emptyList(),
classType.getClassName(),
classType,
null
);
JavaType.Method methodType = new JavaType.Method(
null,
0L,
classType,
"builder",
builderType,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList()
);
J.Identifier builderMethod = IdentifierUtils.makeId("builder", methodType);
J.MethodInvocation builderInvoke = new J.MethodInvocation(
Tree.randomId(),
Space.EMPTY,
Markers.EMPTY,
JRightPadded.build(modelId),
null,
builderMethod,
JContainer.empty(),
methodType
);
JavaType.Method buildMethodType = new JavaType.Method(
null,
0L,
builderType,
"build",
classType,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList()
);
J.Identifier buildName = IdentifierUtils.makeId("build", buildMethodType);
J.MethodInvocation buildInvoke = new J.MethodInvocation(
Tree.randomId(),
newClass.getPrefix(),
Markers.EMPTY,
new JRightPadded(builderInvoke, Space.format("\n"), Markers.EMPTY),
null,
buildName,
JContainer.empty(),
buildMethodType
);
return maybeAutoFormat(previousNewClass, buildInvoke, executionContext);
}