private CodeBlock setClientParams()

in codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointRulesClientTestSpec.java [544:628]


    private CodeBlock setClientParams(String builderName, Map<String, TreeNode> params) {
        CodeBlock.Builder b = CodeBlock.builder();

        if (hasS3ConfigParams(params)) {
            CodeBlock.Builder config = CodeBlock.builder();

            config.add("$T.builder()", configClass());

            params.forEach((n, v) -> {

                if (!endpointRulesSpecUtils.isDeclaredParam(n)) {
                    return;
                }

                CodeBlock valueLiteral = endpointRulesSpecUtils.treeNodeToLiteral(v);
                switch (n) {
                    case "UseDualStack":
                        config.add(".dualstackEnabled($L)", valueLiteral);
                        break;
                    case "Accelerate":
                        config.add(".accelerateModeEnabled($L)", valueLiteral);
                        break;
                    case "ForcePathStyle":
                        config.add(".pathStyleAccessEnabled($L)", valueLiteral);
                        break;
                    case "UseArnRegion":
                        config.add(".useArnRegionEnabled($L)", valueLiteral);
                        break;
                    case "DisableMultiRegionAccessPoints":
                        config.add(".multiRegionEnabled(!$L)", valueLiteral);
                        break;
                    default:
                        break;
                }
            });

            config.add(".build()");

            b.addStatement("$N.serviceConfiguration($L)", builderName, config.build());
        }

        params.forEach((n, v) -> {
            if (!isClientParam(n)) {
                return;
            }

            ParameterModel paramModel = param(n);
            CodeBlock valueLiteral = endpointRulesSpecUtils.treeNodeToLiteral(v);

            if (paramModel.getBuiltInEnum() != null) {
                switch (paramModel.getBuiltInEnum()) {
                    case AWS_REGION:
                        b.addStatement("$N.region($T.of($L))", builderName, Region.class, valueLiteral);
                        break;
                    case AWS_USE_DUAL_STACK:
                        // If this is S3, it will be set in S3Configuration instead
                        if (!hasS3ConfigParams(params)) {
                            b.addStatement("$N.dualstackEnabled($L)", builderName, valueLiteral);
                        }
                        break;
                    case AWS_USE_FIPS:
                        b.addStatement("$N.fipsEnabled($L)", builderName, valueLiteral);
                        break;
                    case SDK_ENDPOINT:
                        b.addStatement("$N.endpointOverride($T.create($L))", builderName, URI.class, valueLiteral);
                        break;
                    case AWS_S3_USE_GLOBAL_ENDPOINT:
                        b.addStatement("$T.setProperty($L, $L ? \"global\" : \"regional\")", System.class,
                                       s3RegionalEndpointSystemPropertyCode(), valueLiteral);
                        break;
                    case AWS_AUTH_ACCOUNT_ID_ENDPOINT_MODE:
                        b.addStatement("$N.accountIdEndpointMode($T.fromValue($L))", builderName, AccountIdEndpointMode.class,
                                       valueLiteral);
                        break;
                    default:
                        break;
                }
            } else {
                String setterName = endpointRulesSpecUtils.clientContextParamMethodName(n);
                b.addStatement("$N.$N($L)", builderName, setterName, valueLiteral);
            }

        });
        return b.build();
    }