public J visitNewClass()

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);
        }