|
24 | 24 | import static software.amazon.awssdk.codegen.poet.client.ClientClassUtils.addS3ArnableFieldCode;
|
25 | 25 | import static software.amazon.awssdk.codegen.poet.client.ClientClassUtils.applySignerOverrideMethod;
|
26 | 26 | import static software.amazon.awssdk.codegen.poet.client.ClientClassUtils.transformServiceId;
|
| 27 | +import static software.amazon.awssdk.codegen.poet.client.ClientClassUtils.updateSdkClientConfigurationMethod; |
27 | 28 |
|
28 | 29 | import com.squareup.javapoet.ClassName;
|
29 | 30 | import com.squareup.javapoet.CodeBlock;
|
30 | 31 | import com.squareup.javapoet.FieldSpec;
|
31 | 32 | import com.squareup.javapoet.MethodSpec;
|
32 | 33 | import com.squareup.javapoet.ParameterizedTypeName;
|
33 |
| -import com.squareup.javapoet.TypeName; |
34 | 34 | import com.squareup.javapoet.TypeSpec;
|
35 | 35 | import com.squareup.javapoet.WildcardTypeName;
|
36 | 36 | import java.net.URI;
|
37 | 37 | import java.util.ArrayList;
|
38 | 38 | import java.util.Collections;
|
39 | 39 | import java.util.List;
|
40 | 40 | import java.util.Map;
|
41 |
| -import java.util.Objects; |
42 | 41 | import java.util.Optional;
|
43 | 42 | import java.util.concurrent.CompletableFuture;
|
44 | 43 | import java.util.stream.Collectors;
|
|
53 | 52 | import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
|
54 | 53 | import software.amazon.awssdk.codegen.model.intermediate.OperationModel;
|
55 | 54 | import software.amazon.awssdk.codegen.model.intermediate.Protocol;
|
56 |
| -import software.amazon.awssdk.codegen.model.service.ClientContextParam; |
57 | 55 | import software.amazon.awssdk.codegen.model.service.PreClientExecutionRequestCustomizer;
|
58 | 56 | import software.amazon.awssdk.codegen.poet.PoetExtension;
|
59 | 57 | import software.amazon.awssdk.codegen.poet.PoetUtils;
|
|
64 | 62 | import software.amazon.awssdk.codegen.poet.client.specs.QueryProtocolSpec;
|
65 | 63 | import software.amazon.awssdk.codegen.poet.client.specs.XmlProtocolSpec;
|
66 | 64 | import software.amazon.awssdk.codegen.poet.model.ServiceClientConfigurationUtils;
|
67 |
| -import software.amazon.awssdk.codegen.poet.rules.EndpointRulesSpecUtils; |
68 | 65 | import software.amazon.awssdk.core.RequestOverrideConfiguration;
|
69 |
| -import software.amazon.awssdk.core.SdkPlugin; |
70 |
| -import software.amazon.awssdk.core.SdkRequest; |
71 | 66 | import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
|
72 | 67 | import software.amazon.awssdk.core.client.config.SdkClientOption;
|
73 | 68 | import software.amazon.awssdk.core.client.handler.SyncClientHandler;
|
|
78 | 73 | import software.amazon.awssdk.metrics.MetricCollector;
|
79 | 74 | import software.amazon.awssdk.metrics.MetricPublisher;
|
80 | 75 | import software.amazon.awssdk.metrics.NoOpMetricCollector;
|
81 |
| -import software.amazon.awssdk.utils.AttributeMap; |
82 | 76 | import software.amazon.awssdk.utils.CollectionUtils;
|
83 | 77 | import software.amazon.awssdk.utils.CompletableFutureUtils;
|
84 | 78 | import software.amazon.awssdk.utils.Logger;
|
85 |
| -import software.amazon.awssdk.utils.Validate; |
86 | 79 |
|
87 | 80 | public class SyncClientClass extends SyncClientInterface {
|
88 | 81 |
|
@@ -152,7 +145,8 @@ protected void addAdditionalMethods(TypeSpec.Builder type) {
|
152 | 145 |
|
153 | 146 | protocolSpec.createErrorResponseHandler().ifPresent(type::addMethod);
|
154 | 147 | type.addMethod(ClientClassUtils.updateRetryStrategyClientConfigurationMethod());
|
155 |
| - type.addMethod(updateSdkClientConfigurationMethod(configurationUtils.serviceClientConfigurationBuilderClassName())); |
| 148 | + type.addMethod(updateSdkClientConfigurationMethod(configurationUtils.serviceClientConfigurationBuilderClassName(), |
| 149 | + model)); |
156 | 150 | type.addMethod(protocolSpec.initProtocolFactory(model));
|
157 | 151 | }
|
158 | 152 |
|
@@ -462,55 +456,4 @@ protected MethodSpec.Builder waiterOperationBody(MethodSpec.Builder builder) {
|
462 | 456 | .addStatement("return $T.builder().client(this).build()",
|
463 | 457 | poetExtensions.getSyncWaiterInterface());
|
464 | 458 | }
|
465 |
| - |
466 |
| - protected MethodSpec updateSdkClientConfigurationMethod( |
467 |
| - TypeName serviceClientConfigurationBuilderClassName) { |
468 |
| - MethodSpec.Builder builder = MethodSpec.methodBuilder("updateSdkClientConfiguration") |
469 |
| - .addModifiers(PRIVATE) |
470 |
| - .addParameter(SdkRequest.class, "request") |
471 |
| - .addParameter(SdkClientConfiguration.class, "clientConfiguration") |
472 |
| - .returns(SdkClientConfiguration.class); |
473 |
| - |
474 |
| - builder.addStatement("$T plugins = request.overrideConfiguration()\n" |
475 |
| - + ".map(c -> c.plugins()).orElse(Collections.emptyList())", |
476 |
| - ParameterizedTypeName.get(List.class, SdkPlugin.class)) |
477 |
| - .addStatement("$T configuration = clientConfiguration.toBuilder()", SdkClientConfiguration.Builder.class); |
478 |
| - |
479 |
| - builder.beginControlFlow("if (plugins.isEmpty())") |
480 |
| - .addStatement("return configuration.build()") |
481 |
| - .endControlFlow() |
482 |
| - .addStatement("$1T serviceConfigBuilder = new $1T(configuration)", serviceClientConfigurationBuilderClassName) |
483 |
| - .beginControlFlow("for ($T plugin : plugins)", SdkPlugin.class) |
484 |
| - .addStatement("plugin.configureClient(serviceConfigBuilder)") |
485 |
| - .endControlFlow(); |
486 |
| - EndpointRulesSpecUtils endpointRulesSpecUtils = new EndpointRulesSpecUtils(this.model); |
487 |
| - |
488 |
| - if (model.getCustomizationConfig() == null || |
489 |
| - CollectionUtils.isNullOrEmpty(model.getCustomizationConfig().getCustomClientContextParams())) { |
490 |
| - builder.addStatement("updateRetryStrategyClientConfiguration(configuration)"); |
491 |
| - builder.addStatement("return configuration.build()"); |
492 |
| - return builder.build(); |
493 |
| - } |
494 |
| - |
495 |
| - Map<String, ClientContextParam> customClientConfigParams = model.getCustomizationConfig().getCustomClientContextParams(); |
496 |
| - |
497 |
| - builder.addCode("$1T newContextParams = configuration.option($2T.CLIENT_CONTEXT_PARAMS);\n" |
498 |
| - + "$1T originalContextParams = clientConfiguration.option($2T.CLIENT_CONTEXT_PARAMS);", |
499 |
| - AttributeMap.class, SdkClientOption.class); |
500 |
| - |
501 |
| - builder.addCode("newContextParams = (newContextParams != null) ? newContextParams : $1T.empty();\n" |
502 |
| - + "originalContextParams = originalContextParams != null ? originalContextParams : $1T.empty();", |
503 |
| - AttributeMap.class); |
504 |
| - |
505 |
| - customClientConfigParams.forEach((n, m) -> { |
506 |
| - String keyName = model.getNamingStrategy().getEnumValueName(n); |
507 |
| - builder.addStatement("$1T.validState($2T.equals(originalContextParams.get($3T.$4N), newContextParams.get($3T.$4N))," |
508 |
| - + " $5S)", |
509 |
| - Validate.class, Objects.class, endpointRulesSpecUtils.clientContextParamsName(), keyName, |
510 |
| - keyName + " cannot be modified by request level plugins"); |
511 |
| - }); |
512 |
| - builder.addStatement("updateRetryStrategyClientConfiguration(configuration)"); |
513 |
| - builder.addStatement("return configuration.build()"); |
514 |
| - return builder.build(); |
515 |
| - } |
516 | 459 | }
|
0 commit comments