|
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