diff --git a/.changes/2.29.5.json b/.changes/2.29.5.json new file mode 100644 index 000000000000..6d61f3552c5a --- /dev/null +++ b/.changes/2.29.5.json @@ -0,0 +1,60 @@ +{ + "version": "2.29.5", + "date": "2024-10-31", + "entries": [ + { + "type": "bugfix", + "category": "AWS SDK for Java v2", + "contributor": "", + "description": "Fix an issue where the SDK does not properly unmarshall an evenstream exception to the expected exception type." + }, + { + "type": "feature", + "category": "AWS Batch", + "contributor": "", + "description": "Add `podNamespace` to `EksAttemptDetail` and `containerID` to `EksAttemptContainerDetail`." + }, + { + "type": "feature", + "category": "AWS Glue", + "contributor": "", + "description": "Add schedule support for AWS Glue column statistics" + }, + { + "type": "feature", + "category": "Amazon Prometheus Service", + "contributor": "", + "description": "Added support for UpdateScraper API, to enable updating collector configuration in-place" + }, + { + "type": "feature", + "category": "Amazon SageMaker Service", + "contributor": "", + "description": "SageMaker HyperPod adds scale-down at instance level via BatchDeleteClusterNodes API and group level via UpdateCluster API. SageMaker Training exposes secondary job status in TrainingJobSummary from ListTrainingJobs API. SageMaker now supports G6, G6e, P5e instances for HyperPod and Training." + }, + { + "type": "feature", + "category": "Amazon Simple Email Service", + "contributor": "", + "description": "This release enables customers to provide the email template content in the SESv2 SendEmail and SendBulkEmail APIs instead of the name or the ARN of a stored email template." + }, + { + "type": "feature", + "category": "Auto Scaling", + "contributor": "", + "description": "Adds bake time for Auto Scaling group Instance Refresh" + }, + { + "type": "feature", + "category": "Elastic Load Balancing", + "contributor": "", + "description": "Add UDP support for AWS PrivateLink and dual-stack Network Load Balancers" + }, + { + "type": "feature", + "category": "AWS SDK for Java v2", + "contributor": "", + "description": "Updated endpoint and partition metadata." + } + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 285da69c9359..5dfe00ccdbe4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,40 @@ #### 👋 _Looking for changelogs for older versions? You can find them in the [changelogs](./changelogs) directory._ +# __2.29.5__ __2024-10-31__ +## __AWS Batch__ + - ### Features + - Add `podNamespace` to `EksAttemptDetail` and `containerID` to `EksAttemptContainerDetail`. + +## __AWS Glue__ + - ### Features + - Add schedule support for AWS Glue column statistics + +## __AWS SDK for Java v2__ + - ### Features + - Updated endpoint and partition metadata. + + - ### Bugfixes + - Fix an issue where the SDK does not properly unmarshall an evenstream exception to the expected exception type. + +## __Amazon Prometheus Service__ + - ### Features + - Added support for UpdateScraper API, to enable updating collector configuration in-place + +## __Amazon SageMaker Service__ + - ### Features + - SageMaker HyperPod adds scale-down at instance level via BatchDeleteClusterNodes API and group level via UpdateCluster API. SageMaker Training exposes secondary job status in TrainingJobSummary from ListTrainingJobs API. SageMaker now supports G6, G6e, P5e instances for HyperPod and Training. + +## __Amazon Simple Email Service__ + - ### Features + - This release enables customers to provide the email template content in the SESv2 SendEmail and SendBulkEmail APIs instead of the name or the ARN of a stored email template. + +## __Auto Scaling__ + - ### Features + - Adds bake time for Auto Scaling group Instance Refresh + +## __Elastic Load Balancing__ + - ### Features + - Add UDP support for AWS PrivateLink and dual-stack Network Load Balancers + # __2.29.4__ __2024-10-30__ ## __AWS AppSync__ - ### Features diff --git a/README.md b/README.md index 5f33a9ccad77..2d26b4757611 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ To automatically manage module versions (currently all modules have the same ver software.amazon.awssdk bom - 2.29.4 + 2.29.5 pom import @@ -85,12 +85,12 @@ Alternatively you can add dependencies for the specific services you use only: software.amazon.awssdk ec2 - 2.29.4 + 2.29.5 software.amazon.awssdk s3 - 2.29.4 + 2.29.5 ``` @@ -102,7 +102,7 @@ You can import the whole SDK into your project (includes *ALL* services). Please software.amazon.awssdk aws-sdk-java - 2.29.4 + 2.29.5 ``` diff --git a/archetypes/archetype-app-quickstart/pom.xml b/archetypes/archetype-app-quickstart/pom.xml index 7986e7062ffc..66b9d83d2e7b 100644 --- a/archetypes/archetype-app-quickstart/pom.xml +++ b/archetypes/archetype-app-quickstart/pom.xml @@ -20,7 +20,7 @@ archetypes software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/archetypes/archetype-lambda/pom.xml b/archetypes/archetype-lambda/pom.xml index c0a9b86dac08..64fdadce3143 100644 --- a/archetypes/archetype-lambda/pom.xml +++ b/archetypes/archetype-lambda/pom.xml @@ -20,7 +20,7 @@ archetypes software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 archetype-lambda diff --git a/archetypes/archetype-tools/pom.xml b/archetypes/archetype-tools/pom.xml index 431eb4245a8c..8f663a971bbe 100644 --- a/archetypes/archetype-tools/pom.xml +++ b/archetypes/archetype-tools/pom.xml @@ -20,7 +20,7 @@ archetypes software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/archetypes/pom.xml b/archetypes/pom.xml index 42fb55f0b2b2..d2e343bc3801 100644 --- a/archetypes/pom.xml +++ b/archetypes/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 archetypes diff --git a/aws-sdk-java/pom.xml b/aws-sdk-java/pom.xml index 4f805af2ce99..2c93023cbf33 100644 --- a/aws-sdk-java/pom.xml +++ b/aws-sdk-java/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml aws-sdk-java diff --git a/bom-internal/pom.xml b/bom-internal/pom.xml index be692f7d4972..52f978c2ab97 100644 --- a/bom-internal/pom.xml +++ b/bom-internal/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/bom/pom.xml b/bom/pom.xml index 87a6034aa8a2..2ed795067490 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml bom diff --git a/bundle-logging-bridge/pom.xml b/bundle-logging-bridge/pom.xml index de781f470693..2e95d1f64f62 100644 --- a/bundle-logging-bridge/pom.xml +++ b/bundle-logging-bridge/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 bundle-logging-bridge jar diff --git a/bundle-sdk/pom.xml b/bundle-sdk/pom.xml index 969edfba0465..1a65ddb81475 100644 --- a/bundle-sdk/pom.xml +++ b/bundle-sdk/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 bundle-sdk jar diff --git a/bundle/pom.xml b/bundle/pom.xml index 0efed01d105e..1e96f7a11792 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 bundle jar diff --git a/codegen-lite-maven-plugin/pom.xml b/codegen-lite-maven-plugin/pom.xml index e5956dfe44a4..3dacc5ac6e87 100644 --- a/codegen-lite-maven-plugin/pom.xml +++ b/codegen-lite-maven-plugin/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml codegen-lite-maven-plugin diff --git a/codegen-lite/pom.xml b/codegen-lite/pom.xml index d0f2a9e859b3..6241e5811b7a 100644 --- a/codegen-lite/pom.xml +++ b/codegen-lite/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 codegen-lite AWS Java SDK :: Code Generator Lite diff --git a/codegen-maven-plugin/pom.xml b/codegen-maven-plugin/pom.xml index edfdb02ab187..6687ce1ef2aa 100644 --- a/codegen-maven-plugin/pom.xml +++ b/codegen-maven-plugin/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml codegen-maven-plugin diff --git a/codegen/pom.xml b/codegen/pom.xml index 8202b0a03649..d0044f7e4d39 100644 --- a/codegen/pom.xml +++ b/codegen/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 codegen AWS Java SDK :: Code Generator diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/model/service/OperationContextParam.java b/codegen/src/main/java/software/amazon/awssdk/codegen/model/service/OperationContextParam.java index c41926736d81..f2ca29b73652 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/model/service/OperationContextParam.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/model/service/OperationContextParam.java @@ -18,13 +18,13 @@ import com.fasterxml.jackson.core.TreeNode; public class OperationContextParam { - private TreeNode value; + private TreeNode path; - public TreeNode getValue() { - return value; + public TreeNode getPath() { + return path; } - public void setValue(TreeNode value) { - this.value = value; + public void setPath(TreeNode path) { + this.path = path; } } diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java index 070dfb293404..aaa729662c17 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java @@ -182,6 +182,7 @@ protected void addAdditionalMethods(TypeSpec.Builder type) { type.addMethod(ClientClassUtils.updateRetryStrategyClientConfigurationMethod()); type.addMethod(updateSdkClientConfigurationMethod(configurationUtils.serviceClientConfigurationBuilderClassName())); protocolSpec.createErrorResponseHandler().ifPresent(type::addMethod); + protocolSpec.createEventstreamErrorResponseHandler().ifPresent(type::addMethod); } @Override diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/JsonProtocolSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/JsonProtocolSpec.java index 7907593c19b7..9fa214efb8fe 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/JsonProtocolSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/JsonProtocolSpec.java @@ -27,6 +27,7 @@ import com.squareup.javapoet.WildcardTypeName; import java.util.Optional; import java.util.concurrent.CompletableFuture; +import java.util.function.Function; import javax.lang.model.element.Modifier; import software.amazon.awssdk.awscore.eventstream.EventStreamAsyncResponseTransformer; import software.amazon.awssdk.awscore.eventstream.EventStreamTaggedUnionPojoSupplier; @@ -55,6 +56,7 @@ import software.amazon.awssdk.core.http.HttpResponseHandler; import software.amazon.awssdk.core.protocol.VoidSdkResponse; import software.amazon.awssdk.protocols.cbor.AwsCborProtocolFactory; +import software.amazon.awssdk.protocols.core.ExceptionMetadata; import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory; @@ -238,7 +240,7 @@ public CodeBlock asyncExecutionHandler(IntermediateModel intermediateModel, Oper .add(".eventStreamResponseHandler(asyncResponseHandler)\n") .add(".eventResponseHandler(eventResponseHandler)\n") .add(".initialResponseHandler(responseHandler)\n") - .add(".exceptionResponseHandler(errorResponseHandler)\n") + .add(".exceptionResponseHandler(errorEventResponseHandler)\n") .add(".future(future)\n") .add(".executor(executor)\n") .add(".serviceName(serviceName())\n") @@ -419,6 +421,25 @@ public Optional createErrorResponseHandler() { .build()); } + @Override + public Optional createEventstreamErrorResponseHandler() { + ClassName httpResponseHandler = ClassName.get(HttpResponseHandler.class); + ClassName sdkBaseException = ClassName.get(AwsServiceException.class); + TypeName responseHandlerOfException = ParameterizedTypeName.get(httpResponseHandler, sdkBaseException); + ParameterizedTypeName mapperType = ParameterizedTypeName.get(ClassName.get(Function.class), + ClassName.get(String.class), ParameterizedTypeName.get(Optional.class, ExceptionMetadata.class)); + + return Optional.of(MethodSpec.methodBuilder("createErrorResponseHandler") + .addParameter(BaseAwsJsonProtocolFactory.class, "protocolFactory") + .addParameter(JsonOperationMetadata.class, "operationMetadata") + .addParameter(mapperType, "exceptionMetadataMapper") + .returns(responseHandlerOfException) + .addModifiers(Modifier.PRIVATE) + .addStatement("return protocolFactory.createErrorResponseHandler(operationMetadata, " + + "exceptionMetadataMapper)") + .build()); + } + private String protocolEnumName(software.amazon.awssdk.codegen.model.intermediate.Protocol protocol) { switch (protocol) { case CBOR: @@ -480,6 +501,37 @@ private void responseHandlersForEventStreaming(OperationModel opModel, TypeName }); builder.add(".defaultSdkPojoSupplier(() -> new $T($T.UNKNOWN))\n" + ".build());\n", SdkPojoBuilder.class, eventStreamBaseClass); + + ParameterizedTypeName metadataMapperType = ParameterizedTypeName.get( + ClassName.get(Function.class), + ClassName.get(String.class), + ParameterizedTypeName.get(Optional.class, ExceptionMetadata.class)); + + builder.add("\n"); + builder.add("$T eventstreamExceptionMetadataMapper = errorCode -> {\n", metadataMapperType); + builder.add("switch (errorCode) {\n"); + EventStreamUtils.getErrorMembers(eventStream).forEach(m -> { + String errorCode = m.getC2jName(); + builder.add("case $S:\n", errorCode); + builder.add("return $T.of($T.builder()", Optional.class, ExceptionMetadata.class); + builder.add(".errorCode($S)", m.getShape().getErrorCode()); + builder.add(populateHttpStatusCode(m.getShape(), model)); + builder.add(".exceptionBuilderSupplier($T::builder).build());\n", + poetExtensions.getModelClassFromShape(m.getShape())); + }); + builder.add("default: return $T.empty();", Optional.class); + builder.add("}\n"); + builder.add("};\n"); + + ParameterizedTypeName errorResponseHandlerType = ParameterizedTypeName.get(HttpResponseHandler.class, + AwsServiceException.class); + + builder.add("\n"); + builder.addStatement("$T errorEventResponseHandler = createErrorResponseHandler($N, operationMetadata, " + + "eventstreamExceptionMetadataMapper)", + errorResponseHandlerType, + protocolFactoryLiteral(model, opModel)); + } private String protocolFactoryLiteral(IntermediateModel model, OperationModel opModel) { diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/ProtocolSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/ProtocolSpec.java index 443a483887eb..74df3666fd0f 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/ProtocolSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/ProtocolSpec.java @@ -66,6 +66,10 @@ default Class getClientHandlerClass() { Optional createErrorResponseHandler(); + default Optional createEventstreamErrorResponseHandler() { + return Optional.empty(); + } + default List additionalMethods() { return new ArrayList<>(); } diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/eventstream/EventStreamUtils.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/eventstream/EventStreamUtils.java index 44267cd394fe..0d9b8a34e39d 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/eventstream/EventStreamUtils.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/eventstream/EventStreamUtils.java @@ -126,6 +126,16 @@ public static Stream getEventMembers(ShapeModel eventStreamShape) { .filter(m -> m.getShape() != null && m.getShape().isEvent()); } + public static Stream getErrorMembers(ShapeModel eventStreamShape) { + if (eventStreamShape == null || eventStreamShape.getMembers() == null) { + return Stream.empty(); + } + + return eventStreamShape.getMembers() + .stream() + .filter(m -> m.getShape() != null && !m.getShape().isEvent()); + } + /** * Returns the all operations that contain the given event stream shape. The event stream can be in operation * request or response shape. diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointResolverInterceptorSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointResolverInterceptorSpec.java index 77c214e384d6..77ad7c724dee 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointResolverInterceptorSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointResolverInterceptorSpec.java @@ -558,10 +558,10 @@ private MethodSpec setOperationContextParamsMethod(OperationModel opModel) { b.addStatement("$1T input = new $1T(request)", poetExtension.jmesPathRuntimeClass().nestedClass("Value")); opModel.getOperationContextParams().forEach((key, value) -> { - if (Objects.requireNonNull(value.getValue().asToken()) == JsonToken.VALUE_STRING) { + if (Objects.requireNonNull(value.getPath().asToken()) == JsonToken.VALUE_STRING) { String setterName = endpointRulesSpecUtils.paramMethodName(key); - String jmesPathString = ((JrsString) value.getValue()).getValue(); + String jmesPathString = ((JrsString) value.getPath()).getValue(); CodeBlock addParam = CodeBlock.builder() .add("params.$N(", setterName) .add(jmesPathGenerator.interpret(jmesPathString, "input")) @@ -572,7 +572,7 @@ private MethodSpec setOperationContextParamsMethod(OperationModel opModel) { b.addStatement(addParam); } else { throw new RuntimeException("Invalid operation context parameter path for " + opModel.getOperationName() + - ". Expected VALUE_STRING, but got " + value.getValue().asToken()); + ". Expected VALUE_STRING, but got " + value.getPath().asToken()); } }); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-duplicate-operationcontextparams.config b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-duplicate-operationcontextparams.config index 2c2e44b21feb..cfa4792d334e 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-duplicate-operationcontextparams.config +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-duplicate-operationcontextparams.config @@ -4,7 +4,7 @@ "operationName": "OperationWithOperationContextParam", "operationContextParamsMap": { "customEndpointArray": { - "value": "ListMember.StringList[*].LeafString" + "path": "ListMember.StringList[*].LeafString" } } } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-incorrectName-operationcontextparams.config b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-incorrectName-operationcontextparams.config index d4904b1df742..5a689bc6892b 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-incorrectName-operationcontextparams.config +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization-with-incorrectName-operationcontextparams.config @@ -4,7 +4,7 @@ "operationName": "RandomOperationName", "operationContextParamsMap": { "customEndpointArray": { - "value": "ListMember.StringList[*].LeafString" + "path": "ListMember.StringList[*].LeafString" } } } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization.config b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization.config index 02f2e6840aea..908e483057be 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization.config +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/customization.config @@ -17,7 +17,7 @@ "operationName": "OperationWithCustomizedOperationContextParam", "operationContextParamsMap": { "customEndpointArray": { - "value": "ListMember.StringList[*].LeafString" + "path": "ListMember.StringList[*].LeafString" } } } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/service-2.json b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/service-2.json index 40df42ff90e0..8d2bbdcbdab4 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/service-2.json +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/service-2.json @@ -38,7 +38,7 @@ "requestUri": "/" }, "operationContextParams":{ - "customEndpointArray":{"value":"ListMember.StringList[*].LeafString"} + "customEndpointArray":{"path":"ListMember.StringList[*].LeafString"} }, "input":{"shape":"WithOperationContextParam"} }, diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/rest-json/service-2.json b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/rest-json/service-2.json index a144431455dd..82620e0da9bf 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/rest-json/service-2.json +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/rest-json/service-2.json @@ -471,6 +471,12 @@ // Legacy generation uses shape name == event name "eventThree": { "shape": "LegacyEventThree" + }, + "errorOne": { + "shape": "InvalidInputException" + }, + "errorTwo": { + "shape": "InvalidInputException" } }, "eventstream": true diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-aws-json-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-aws-json-async-client-class.java index 2bb3074aa08c..7298068aa6ad 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-aws-json-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-aws-json-async-client-class.java @@ -5,9 +5,11 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -126,7 +128,7 @@ final class DefaultJsonAsyncClient implements JsonAsyncClient { private static final Logger log = LoggerFactory.getLogger(DefaultJsonAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); + .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); private final AsyncClientHandler clientHandler; @@ -176,32 +178,32 @@ public JsonUtilities utilities() { public CompletableFuture aPostOperation(APostOperationRequest aPostOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationResponse::builder); + operationMetadata, APostOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); String hostPrefix = "{StringMember}-foo."; HostnameValidator.validateHostnameCompliant(aPostOperationRequest.stringMember(), "StringMember", - "aPostOperationRequest"); + "aPostOperationRequest"); String resolvedHostExpression = String.format("%s-foo.", aPostOperationRequest.stringMember()); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -240,32 +242,32 @@ public CompletableFuture aPostOperation(APostOperationRe */ @Override public CompletableFuture aPostOperationWithOutput( - APostOperationWithOutputRequest aPostOperationWithOutputRequest) { + APostOperationWithOutputRequest aPostOperationWithOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationWithOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationWithOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperationWithOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationWithOutputResponse::builder); + operationMetadata, APostOperationWithOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(aPostOperationWithOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(aPostOperationWithOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -299,56 +301,66 @@ public CompletableFuture aPostOperationWithOut */ @Override public CompletableFuture eventStreamOperation(EventStreamOperationRequest eventStreamOperationRequest, - Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { + Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, eventStreamOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder().eventStreamResponseHandler(asyncResponseHandler) - .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + . builder().eventStreamResponseHandler(asyncResponseHandler) + .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) - .withInitialRequestEvent(true).withResponseHandler(voidResponseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) + .withInitialRequestEvent(true).withResponseHandler(voidResponseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationRequest), + asyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -363,7 +375,7 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -392,40 +404,40 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest */ @Override public CompletableFuture eventStreamOperationWithOnlyInput( - EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, - Publisher requestStream) { + EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, + Publisher requestStream) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyInputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyInput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); + .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) - .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) + .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withInitialRequestEvent(true) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyInputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withInitialRequestEvent(true) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyInputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -460,50 +472,60 @@ public CompletableFuture eventStreamO */ @Override public CompletableFuture eventStreamOperationWithOnlyOutput( - EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, - EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { + EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, + EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder() - .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) - .executor(executor).serviceName(serviceName()).build(); + . builder() + .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) + .executor(executor).serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(voidResponseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyOutputRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(voidResponseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyOutputRequest), asyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -518,7 +540,7 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -550,32 +572,32 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( */ @Override public CompletableFuture getWithoutRequiredMembers( - GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { + GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWithoutRequiredMembersRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWithoutRequiredMembersRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWithoutRequiredMembers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetWithoutRequiredMembersResponse::builder); + operationMetadata, GetWithoutRequiredMembersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(getWithoutRequiredMembersRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(getWithoutRequiredMembersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -610,36 +632,36 @@ public CompletableFuture getWithoutRequiredMe */ @Override public CompletableFuture operationWithChecksumRequired( - OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { + OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithChecksumRequiredRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); + operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithChecksumRequired"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithChecksumRequiredResponse::builder); + operationMetadata, OperationWithChecksumRequiredResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithChecksumRequired") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, - HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithChecksumRequired") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, + HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -673,32 +695,32 @@ public CompletableFuture operationWithChe */ @Override public CompletableFuture operationWithNoneAuthType( - OperationWithNoneAuthTypeRequest operationWithNoneAuthTypeRequest) { + OperationWithNoneAuthTypeRequest operationWithNoneAuthTypeRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithNoneAuthTypeRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, operationWithNoneAuthTypeRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithNoneAuthType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithNoneAuthTypeResponse::builder); + operationMetadata, OperationWithNoneAuthTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithNoneAuthType").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithNoneAuthTypeRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(operationWithNoneAuthTypeRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithNoneAuthType").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithNoneAuthTypeRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(operationWithNoneAuthTypeRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -733,37 +755,37 @@ public CompletableFuture operationWithNoneAut */ @Override public CompletableFuture operationWithRequestCompression( - OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { + OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithRequestCompressionRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); + operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithRequestCompression"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithRequestCompressionResponse::builder); + operationMetadata, OperationWithRequestCompressionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithRequestCompression") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, - RequestCompression.builder().encodings("gzip").isStreaming(false).build()) - .withInput(operationWithRequestCompressionRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithRequestCompression") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, + RequestCompression.builder().encodings("gzip").isStreaming(false).build()) + .withInput(operationWithRequestCompressionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -798,32 +820,32 @@ public CompletableFuture operationWithR */ @Override public CompletableFuture paginatedOperationWithResultKey( - PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { + PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PaginatedOperationWithResultKeyResponse::builder); + operationMetadata, PaginatedOperationWithResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -858,32 +880,32 @@ public CompletableFuture paginatedOpera */ @Override public CompletableFuture paginatedOperationWithoutResultKey( - PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { + PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithoutResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithoutResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); + .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithoutResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithoutResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -922,36 +944,36 @@ public CompletableFuture paginatedOp */ @Override public CompletableFuture streamingInputOperation( - StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { + StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingInputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOperationResponse::builder); + operationMetadata, StreamingInputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("StreamingInputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) - .withInput(streamingInputOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("StreamingInputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) + .withInput(streamingInputOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -995,49 +1017,49 @@ public CompletableFuture streamingInputOperatio */ @Override public CompletableFuture streamingInputOutputOperation( - StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); + streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOutputOperationResponse::builder); + operationMetadata, StreamingInputOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingInputOutputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller - .builder() - .delegateMarshaller( - new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).transferEncoding(true).build()) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingInputOutputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller + .builder() + .delegateMarshaller( + new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).transferEncoding(true).build()) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), + asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1048,7 +1070,7 @@ public CompletableFuture streamingInputOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1081,42 +1103,42 @@ public CompletableFuture streamingInputOutputOperation( */ @Override public CompletableFuture streamingOutputOperation( - StreamingOutputOperationRequest streamingOutputOperationRequest, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingOutputOperationRequest streamingOutputOperationRequest, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingOutputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingOutputOperationResponse::builder); + operationMetadata, StreamingOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(streamingOutputOperationRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(streamingOutputOperationRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1127,7 +1149,7 @@ public CompletableFuture streamingOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1145,20 +1167,20 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(JsonException::builder) - .protocol(AwsJsonProtocol.AWS_JSON) - .protocolVersion("1.1") - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidInputException") - .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()) - .registerModeledException( - ExceptionMetadata.builder().errorCode("ServiceFaultException") - .exceptionBuilderSupplier(ServiceFaultException::builder).httpStatusCode(500).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(JsonException::builder) + .protocol(AwsJsonProtocol.AWS_JSON) + .protocolVersion("1.1") + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidInputException") + .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()) + .registerModeledException( + ExceptionMetadata.builder().errorCode("ServiceFaultException") + .exceptionBuilderSupplier(ServiceFaultException::builder).httpStatusCode(500).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -1210,10 +1232,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-cbor-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-cbor-async-client-class.java index cd713cf630a0..8953d6a681c1 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-cbor-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-cbor-async-client-class.java @@ -5,9 +5,11 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -330,6 +332,16 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); + HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() @@ -341,8 +353,8 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer . builder().eventStreamResponseHandler(asyncResponseHandler) .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( new ClientExecutionParams() @@ -492,13 +504,23 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); + HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer . builder() .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) .executor(executor).serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( @@ -1218,6 +1240,11 @@ private HttpResponseHandler createErrorResponseHandler(Base return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-json-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-json-async-client-class.java index aa5c4ef710ce..5958db5e6167 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-json-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/sra/test-json-async-client-class.java @@ -5,10 +5,12 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -136,7 +138,7 @@ final class DefaultJsonAsyncClient implements JsonAsyncClient { private static final Logger log = LoggerFactory.getLogger(DefaultJsonAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); + .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); private final AsyncClientHandler clientHandler; @@ -189,32 +191,32 @@ public JsonUtilities utilities() { public CompletableFuture aPostOperation(APostOperationRequest aPostOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationResponse::builder); + operationMetadata, APostOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); String hostPrefix = "{StringMember}-foo."; HostnameValidator.validateHostnameCompliant(aPostOperationRequest.stringMember(), "StringMember", - "aPostOperationRequest"); + "aPostOperationRequest"); String resolvedHostExpression = String.format("%s-foo.", aPostOperationRequest.stringMember()); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -252,32 +254,32 @@ public CompletableFuture aPostOperation(APostOperationRe */ @Override public CompletableFuture aPostOperationWithOutput( - APostOperationWithOutputRequest aPostOperationWithOutputRequest) { + APostOperationWithOutputRequest aPostOperationWithOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationWithOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationWithOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperationWithOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationWithOutputResponse::builder); + operationMetadata, APostOperationWithOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(aPostOperationWithOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(aPostOperationWithOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -311,32 +313,32 @@ public CompletableFuture aPostOperationWithOut */ @Override public CompletableFuture bearerAuthOperation( - BearerAuthOperationRequest bearerAuthOperationRequest) { + BearerAuthOperationRequest bearerAuthOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(bearerAuthOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, bearerAuthOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "BearerAuthOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, BearerAuthOperationResponse::builder); + operationMetadata, BearerAuthOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("BearerAuthOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new BearerAuthOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .credentialType(CredentialType.TOKEN).withInput(bearerAuthOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("BearerAuthOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new BearerAuthOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .credentialType(CredentialType.TOKEN).withInput(bearerAuthOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -370,59 +372,75 @@ public CompletableFuture bearerAuthOperation( */ @Override public CompletableFuture eventStreamOperation(EventStreamOperationRequest eventStreamOperationRequest, - Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { + Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, eventStreamOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + case "errorOne": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + case "errorTwo": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder().eventStreamResponseHandler(asyncResponseHandler) - .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + . builder().eventStreamResponseHandler(asyncResponseHandler) + .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); RestEventStreamAsyncResponseTransformer restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer - . builder() - .eventStreamAsyncResponseTransformer(asyncResponseTransformer) - .eventStreamResponseHandler(asyncResponseHandler).build(); + . builder() + .eventStreamAsyncResponseTransformer(asyncResponseTransformer) + .eventStreamResponseHandler(asyncResponseHandler).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationRequest), restAsyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationRequest), restAsyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -437,7 +455,7 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -466,39 +484,39 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest */ @Override public CompletableFuture eventStreamOperationWithOnlyInput( - EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, - Publisher requestStream) { + EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, + Publisher requestStream) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyInputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyInput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); + .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) - .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) + .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationWithOnlyInputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationWithOnlyInputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -533,56 +551,72 @@ public CompletableFuture eventStreamO */ @Override public CompletableFuture eventStreamOperationWithOnlyOutput( - EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, - EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { + EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, + EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + case "errorOne": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + case "errorTwo": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder() - .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) - .executor(executor).serviceName(serviceName()).build(); + . builder() + .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) + .executor(executor).serviceName(serviceName()).build(); RestEventStreamAsyncResponseTransformer restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer - . builder() - .eventStreamAsyncResponseTransformer(asyncResponseTransformer) - .eventStreamResponseHandler(asyncResponseHandler).build(); + . builder() + .eventStreamAsyncResponseTransformer(asyncResponseTransformer) + .eventStreamResponseHandler(asyncResponseHandler).build(); CompletableFuture executeFuture = clientHandler - .execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyOutput") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyOutputRequest), restAsyncResponseTransformer); + .execute( + new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyOutput") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyOutputRequest), restAsyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -597,7 +631,7 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -625,39 +659,39 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( */ @Override public CompletableFuture getOperationWithChecksum( - GetOperationWithChecksumRequest getOperationWithChecksumRequest) { + GetOperationWithChecksumRequest getOperationWithChecksumRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getOperationWithChecksumRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getOperationWithChecksumRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetOperationWithChecksum"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetOperationWithChecksumResponse::builder); + operationMetadata, GetOperationWithChecksumResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetOperationWithChecksum") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetOperationWithChecksumRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute( - SdkInternalExecutionAttribute.HTTP_CHECKSUM, - HttpChecksum.builder().requestChecksumRequired(true) - .requestAlgorithm(getOperationWithChecksumRequest.checksumAlgorithmAsString()) - .isRequestStreaming(false).build()).withInput(getOperationWithChecksumRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetOperationWithChecksum") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetOperationWithChecksumRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute( + SdkInternalExecutionAttribute.HTTP_CHECKSUM, + HttpChecksum.builder().requestChecksumRequired(true) + .requestAlgorithm(getOperationWithChecksumRequest.checksumAlgorithmAsString()) + .isRequestStreaming(false).build()).withInput(getOperationWithChecksumRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -695,32 +729,32 @@ public CompletableFuture getOperationWithCheck */ @Override public CompletableFuture getWithoutRequiredMembers( - GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { + GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWithoutRequiredMembersRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWithoutRequiredMembersRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWithoutRequiredMembers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetWithoutRequiredMembersResponse::builder); + operationMetadata, GetWithoutRequiredMembersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(getWithoutRequiredMembersRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(getWithoutRequiredMembersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -755,36 +789,36 @@ public CompletableFuture getWithoutRequiredMe */ @Override public CompletableFuture operationWithChecksumRequired( - OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { + OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithChecksumRequiredRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); + operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithChecksumRequired"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithChecksumRequiredResponse::builder); + operationMetadata, OperationWithChecksumRequiredResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithChecksumRequired") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, - HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithChecksumRequired") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, + HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -819,37 +853,37 @@ public CompletableFuture operationWithChe */ @Override public CompletableFuture operationWithRequestCompression( - OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { + OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithRequestCompressionRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); + operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithRequestCompression"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithRequestCompressionResponse::builder); + operationMetadata, OperationWithRequestCompressionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithRequestCompression") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, - RequestCompression.builder().encodings("gzip").isStreaming(false).build()) - .withInput(operationWithRequestCompressionRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithRequestCompression") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, + RequestCompression.builder().encodings("gzip").isStreaming(false).build()) + .withInput(operationWithRequestCompressionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -884,32 +918,32 @@ public CompletableFuture operationWithR */ @Override public CompletableFuture paginatedOperationWithResultKey( - PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { + PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PaginatedOperationWithResultKeyResponse::builder); + operationMetadata, PaginatedOperationWithResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -944,32 +978,32 @@ public CompletableFuture paginatedOpera */ @Override public CompletableFuture paginatedOperationWithoutResultKey( - PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { + PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithoutResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithoutResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); + .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithoutResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithoutResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -1021,54 +1055,54 @@ public CompletableFuture paginatedOp */ @Override public CompletableFuture putOperationWithChecksum( - PutOperationWithChecksumRequest putOperationWithChecksumRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + PutOperationWithChecksumRequest putOperationWithChecksumRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putOperationWithChecksumRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putOperationWithChecksumRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutOperationWithChecksum"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PutOperationWithChecksumResponse::builder); + operationMetadata, PutOperationWithChecksumResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("PutOperationWithChecksum") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new PutOperationWithChecksumRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody) - .putExecutionAttribute( - SdkInternalExecutionAttribute.HTTP_CHECKSUM, - HttpChecksum.builder().requestChecksumRequired(false) - .requestValidationMode(putOperationWithChecksumRequest.checksumModeAsString()) - .responseAlgorithms("CRC32C", "CRC32", "SHA1", "SHA256").isRequestStreaming(true) - .build()).withInput(putOperationWithChecksumRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("PutOperationWithChecksum") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new PutOperationWithChecksumRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody) + .putExecutionAttribute( + SdkInternalExecutionAttribute.HTTP_CHECKSUM, + HttpChecksum.builder().requestChecksumRequired(false) + .requestValidationMode(putOperationWithChecksumRequest.checksumModeAsString()) + .responseAlgorithms("CRC32C", "CRC32", "SHA1", "SHA256").isRequestStreaming(true) + .build()).withInput(putOperationWithChecksumRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1079,7 +1113,7 @@ public CompletableFuture putOperationWithChecksum( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1112,36 +1146,36 @@ public CompletableFuture putOperationWithChecksum( */ @Override public CompletableFuture streamingInputOperation( - StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { + StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingInputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOperationResponse::builder); + operationMetadata, StreamingInputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("StreamingInputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) - .withInput(streamingInputOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("StreamingInputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) + .withInput(streamingInputOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -1185,49 +1219,49 @@ public CompletableFuture streamingInputOperatio */ @Override public CompletableFuture streamingInputOutputOperation( - StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); + streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOutputOperationResponse::builder); + operationMetadata, StreamingInputOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingInputOutputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller - .builder() - .delegateMarshaller( - new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).transferEncoding(true).build()) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingInputOutputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller + .builder() + .delegateMarshaller( + new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).transferEncoding(true).build()) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), + asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1238,7 +1272,7 @@ public CompletableFuture streamingInputOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1271,42 +1305,42 @@ public CompletableFuture streamingInputOutputOperation( */ @Override public CompletableFuture streamingOutputOperation( - StreamingOutputOperationRequest streamingOutputOperationRequest, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingOutputOperationRequest streamingOutputOperationRequest, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingOutputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingOutputOperationResponse::builder); + operationMetadata, StreamingOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(streamingOutputOperationRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(streamingOutputOperationRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1317,7 +1351,7 @@ public CompletableFuture streamingOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1340,17 +1374,17 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(JsonException::builder) - .protocol(AwsJsonProtocol.REST_JSON) - .protocolVersion("1.1") - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidInput") - .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(JsonException::builder) + .protocol(AwsJsonProtocol.REST_JSON) + .protocolVersion("1.1") + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidInput") + .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -1402,10 +1436,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-json-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-json-async-client-class.java index 371aa43aa5a4..9384c1c5d766 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-json-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-json-async-client-class.java @@ -5,9 +5,11 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -132,7 +134,7 @@ final class DefaultJsonAsyncClient implements JsonAsyncClient { private static final Logger log = LoggerFactory.getLogger(DefaultJsonAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); + .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); private final AsyncClientHandler clientHandler; @@ -182,32 +184,32 @@ public JsonUtilities utilities() { public CompletableFuture aPostOperation(APostOperationRequest aPostOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationResponse::builder); + operationMetadata, APostOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); String hostPrefix = "{StringMember}-foo."; HostnameValidator.validateHostnameCompliant(aPostOperationRequest.stringMember(), "StringMember", - "aPostOperationRequest"); + "aPostOperationRequest"); String resolvedHostExpression = String.format("%s-foo.", aPostOperationRequest.stringMember()); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -246,32 +248,32 @@ public CompletableFuture aPostOperation(APostOperationRe */ @Override public CompletableFuture aPostOperationWithOutput( - APostOperationWithOutputRequest aPostOperationWithOutputRequest) { + APostOperationWithOutputRequest aPostOperationWithOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationWithOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationWithOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperationWithOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationWithOutputResponse::builder); + operationMetadata, APostOperationWithOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(aPostOperationWithOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(aPostOperationWithOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -305,57 +307,67 @@ public CompletableFuture aPostOperationWithOut */ @Override public CompletableFuture eventStreamOperation(EventStreamOperationRequest eventStreamOperationRequest, - Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { + Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, eventStreamOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperation"); eventStreamOperationRequest = applySignerOverride(eventStreamOperationRequest, EventStreamAws4Signer.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder().eventStreamResponseHandler(asyncResponseHandler) - .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + . builder().eventStreamResponseHandler(asyncResponseHandler) + .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) - .withInitialRequestEvent(true).withResponseHandler(voidResponseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) + .withInitialRequestEvent(true).withResponseHandler(voidResponseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationRequest), + asyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -370,7 +382,7 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -399,42 +411,42 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest */ @Override public CompletableFuture eventStreamOperationWithOnlyInput( - EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, - Publisher requestStream) { + EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, + Publisher requestStream) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyInputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyInput"); eventStreamOperationWithOnlyInputRequest = applySignerOverride(eventStreamOperationWithOnlyInputRequest, - EventStreamAws4Signer.create()); + EventStreamAws4Signer.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); + .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) - .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) + .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withInitialRequestEvent(true) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyInputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withInitialRequestEvent(true) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyInputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -469,50 +481,60 @@ public CompletableFuture eventStreamO */ @Override public CompletableFuture eventStreamOperationWithOnlyOutput( - EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, - EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { + EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, + EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder() - .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) - .executor(executor).serviceName(serviceName()).build(); + . builder() + .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) + .executor(executor).serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(voidResponseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyOutputRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(voidResponseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyOutputRequest), asyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -527,7 +549,7 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -559,32 +581,32 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( */ @Override public CompletableFuture getWithoutRequiredMembers( - GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { + GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWithoutRequiredMembersRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWithoutRequiredMembersRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWithoutRequiredMembers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetWithoutRequiredMembersResponse::builder); + operationMetadata, GetWithoutRequiredMembersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(getWithoutRequiredMembersRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(getWithoutRequiredMembersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -619,36 +641,36 @@ public CompletableFuture getWithoutRequiredMe */ @Override public CompletableFuture operationWithChecksumRequired( - OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { + OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithChecksumRequiredRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); + operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithChecksumRequired"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithChecksumRequiredResponse::builder); + operationMetadata, OperationWithChecksumRequiredResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithChecksumRequired") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, - HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithChecksumRequired") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, + HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -682,33 +704,33 @@ public CompletableFuture operationWithChe */ @Override public CompletableFuture operationWithNoneAuthType( - OperationWithNoneAuthTypeRequest operationWithNoneAuthTypeRequest) { + OperationWithNoneAuthTypeRequest operationWithNoneAuthTypeRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithNoneAuthTypeRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, operationWithNoneAuthTypeRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithNoneAuthType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithNoneAuthTypeResponse::builder); + operationMetadata, OperationWithNoneAuthTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithNoneAuthType").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithNoneAuthTypeRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false) - .withInput(operationWithNoneAuthTypeRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithNoneAuthType").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithNoneAuthTypeRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.IS_NONE_AUTH_TYPE_REQUEST, false) + .withInput(operationWithNoneAuthTypeRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -743,37 +765,37 @@ public CompletableFuture operationWithNoneAut */ @Override public CompletableFuture operationWithRequestCompression( - OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { + OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithRequestCompressionRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); + operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithRequestCompression"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithRequestCompressionResponse::builder); + operationMetadata, OperationWithRequestCompressionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithRequestCompression") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, - RequestCompression.builder().encodings("gzip").isStreaming(false).build()) - .withInput(operationWithRequestCompressionRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithRequestCompression") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, + RequestCompression.builder().encodings("gzip").isStreaming(false).build()) + .withInput(operationWithRequestCompressionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -808,32 +830,32 @@ public CompletableFuture operationWithR */ @Override public CompletableFuture paginatedOperationWithResultKey( - PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { + PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PaginatedOperationWithResultKeyResponse::builder); + operationMetadata, PaginatedOperationWithResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -868,32 +890,32 @@ public CompletableFuture paginatedOpera */ @Override public CompletableFuture paginatedOperationWithoutResultKey( - PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { + PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithoutResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithoutResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); + .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithoutResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithoutResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -932,13 +954,13 @@ public CompletableFuture paginatedOp */ @Override public CompletableFuture streamingInputOperation( - StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { + StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingInputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOperation"); @@ -946,25 +968,25 @@ public CompletableFuture streamingInputOperatio streamingInputOperationRequest = applySignerOverride(streamingInputOperationRequest, AsyncAws4Signer.create()); } JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOperationResponse::builder); + operationMetadata, StreamingInputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("StreamingInputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) - .withInput(streamingInputOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("StreamingInputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) + .withInput(streamingInputOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -1008,51 +1030,51 @@ public CompletableFuture streamingInputOperatio */ @Override public CompletableFuture streamingInputOutputOperation( - StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); + streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); streamingInputOutputOperationRequest = applySignerOverride(streamingInputOutputOperationRequest, - Aws4UnsignedPayloadSigner.create()); + Aws4UnsignedPayloadSigner.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOutputOperationResponse::builder); + operationMetadata, StreamingInputOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingInputOutputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller - .builder() - .delegateMarshaller( - new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).transferEncoding(true).build()) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingInputOutputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller + .builder() + .delegateMarshaller( + new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).transferEncoding(true).build()) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), + asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1063,7 +1085,7 @@ public CompletableFuture streamingInputOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1096,42 +1118,42 @@ public CompletableFuture streamingInputOutputOperation( */ @Override public CompletableFuture streamingOutputOperation( - StreamingOutputOperationRequest streamingOutputOperationRequest, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingOutputOperationRequest streamingOutputOperationRequest, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingOutputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingOutputOperationResponse::builder); + operationMetadata, StreamingOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(streamingOutputOperationRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(streamingOutputOperationRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1142,7 +1164,7 @@ public CompletableFuture streamingOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1160,20 +1182,20 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(JsonException::builder) - .protocol(AwsJsonProtocol.AWS_JSON) - .protocolVersion("1.1") - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidInputException") - .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()) - .registerModeledException( - ExceptionMetadata.builder().errorCode("ServiceFaultException") - .exceptionBuilderSupplier(ServiceFaultException::builder).httpStatusCode(500).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(JsonException::builder) + .protocol(AwsJsonProtocol.AWS_JSON) + .protocolVersion("1.1") + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidInputException") + .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()) + .registerModeledException( + ExceptionMetadata.builder().errorCode("ServiceFaultException") + .exceptionBuilderSupplier(ServiceFaultException::builder).httpStatusCode(500).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -1193,8 +1215,8 @@ private T applySignerOverride(T request, Signer signer) } Consumer signerOverride = b -> b.signer(signer).build(); AwsRequestOverrideConfiguration overrideConfiguration = request.overrideConfiguration() - .map(c -> c.toBuilder().applyMutation(signerOverride).build()) - .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(signerOverride).build())); + .map(c -> c.toBuilder().applyMutation(signerOverride).build()) + .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(signerOverride).build())); return (T) request.toBuilder().overrideConfiguration(overrideConfiguration).build(); } @@ -1240,10 +1262,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-async-client-class.java index 548f1772eca8..d06d668892ea 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-async-client-class.java @@ -4,8 +4,10 @@ import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -55,7 +57,7 @@ final class DefaultQueryToJsonCompatibleAsyncClient implements QueryToJsonCompat private static final Logger log = LoggerFactory.getLogger(DefaultQueryToJsonCompatibleAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); + .serviceProtocol(AwsServiceProtocol.AWS_JSON).build(); private final AsyncClientHandler clientHandler; @@ -97,32 +99,32 @@ protected DefaultQueryToJsonCompatibleAsyncClient(SdkClientConfiguration clientC public CompletableFuture aPostOperation(APostOperationRequest aPostOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "QueryToJsonCompatibleService"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationResponse::builder); + operationMetadata, APostOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); String hostPrefix = "{StringMember}-foo."; HostnameValidator.validateHostnameCompliant(aPostOperationRequest.stringMember(), "StringMember", - "aPostOperationRequest"); + "aPostOperationRequest"); String resolvedHostExpression = String.format("%s-foo.", aPostOperationRequest.stringMember()); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -146,18 +148,18 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(QueryToJsonCompatibleException::builder) - .protocol(AwsJsonProtocol.AWS_JSON) - .protocolVersion("1.1") - .hasAwsQueryCompatible(true) - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidInput") - .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(QueryToJsonCompatibleException::builder) + .protocol(AwsJsonProtocol.AWS_JSON) + .protocolVersion("1.1") + .hasAwsQueryCompatible(true) + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidInput") + .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -201,7 +203,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, return configuration.build(); } QueryToJsonCompatibleServiceClientConfigurationBuilder serviceConfigBuilder = new QueryToJsonCompatibleServiceClientConfigurationBuilder( - configuration); + configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } @@ -210,10 +212,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-batchmanager-async.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-batchmanager-async.java index 316daaa58fbd..8081d9331cad 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-batchmanager-async.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-batchmanager-async.java @@ -4,9 +4,11 @@ import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -30,6 +32,7 @@ import software.amazon.awssdk.metrics.MetricCollector; import software.amazon.awssdk.metrics.MetricPublisher; import software.amazon.awssdk.metrics.NoOpMetricCollector; +import software.amazon.awssdk.protocols.core.ExceptionMetadata; import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory; @@ -207,6 +210,11 @@ private HttpResponseHandler createErrorResponseHandler(Base return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-async-client-class.java index 6a873ece1377..308abd62a314 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-async-client-class.java @@ -5,9 +5,11 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -337,6 +339,16 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); + HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() @@ -348,8 +360,8 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer . builder().eventStreamResponseHandler(asyncResponseHandler) .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( new ClientExecutionParams() @@ -501,13 +513,23 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); + HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer . builder() .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) .executor(executor).serviceName(serviceName()).build(); CompletableFuture executeFuture = clientHandler.execute( @@ -1248,6 +1270,11 @@ private HttpResponseHandler createErrorResponseHandler(Base return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-async.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-async.java index e09b8b007946..d3fa60fddd28 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-async.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-async.java @@ -9,8 +9,10 @@ import foo.bar.helloworld.transform.OneOperationRequestMarshaller; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -34,6 +36,7 @@ import software.amazon.awssdk.metrics.MetricCollector; import software.amazon.awssdk.metrics.MetricPublisher; import software.amazon.awssdk.metrics.NoOpMetricCollector; +import software.amazon.awssdk.protocols.core.ExceptionMetadata; import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory; @@ -52,7 +55,7 @@ final class DefaultProtocolRestJsonWithCustomPackageAsyncClient implements Proto private static final Logger log = LoggerFactory.getLogger(DefaultProtocolRestJsonWithCustomPackageAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); + .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); private final AsyncClientHandler clientHandler; @@ -90,28 +93,28 @@ protected DefaultProtocolRestJsonWithCustomPackageAsyncClient(SdkClientConfigura public CompletableFuture oneOperation(OneOperationRequest oneOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(oneOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, oneOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "AmazonProtocolRestJsonWithCustomPackage"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OneOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, - OneOperationResponse::builder); + OneOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OneOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OneOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(oneOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OneOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OneOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(oneOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -126,7 +129,7 @@ public CompletableFuture oneOperation(OneOperationRequest @Override public final ProtocolRestJsonWithCustomPackageServiceClientConfiguration serviceClientConfiguration() { return new ProtocolRestJsonWithCustomPackageServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()) - .build(); + .build(); } @Override @@ -136,12 +139,12 @@ public final String serviceName() { private > T init(T builder) { return builder.clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(ProtocolRestJsonWithCustomPackageException::builder) - .protocol(AwsJsonProtocol.REST_JSON).protocolVersion("1.1"); + .defaultServiceExceptionSupplier(ProtocolRestJsonWithCustomPackageException::builder) + .protocol(AwsJsonProtocol.REST_JSON).protocolVersion("1.1"); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -185,7 +188,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, return configuration.build(); } ProtocolRestJsonWithCustomPackageServiceClientConfigurationBuilder serviceConfigBuilder = new ProtocolRestJsonWithCustomPackageServiceClientConfigurationBuilder( - configuration); + configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } @@ -194,10 +197,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-async.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-async.java index 0385dbb4a704..7804faabf8e8 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-async.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-async.java @@ -4,8 +4,10 @@ import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -29,6 +31,7 @@ import software.amazon.awssdk.metrics.MetricCollector; import software.amazon.awssdk.metrics.MetricPublisher; import software.amazon.awssdk.metrics.NoOpMetricCollector; +import software.amazon.awssdk.protocols.core.ExceptionMetadata; import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory; @@ -52,7 +55,7 @@ final class DefaultProtocolRestJsonWithCustomContentTypeAsyncClient implements P private static final Logger log = LoggerFactory.getLogger(DefaultProtocolRestJsonWithCustomContentTypeAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); + .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); private final AsyncClientHandler clientHandler; @@ -90,28 +93,28 @@ protected DefaultProtocolRestJsonWithCustomContentTypeAsyncClient(SdkClientConfi public CompletableFuture oneOperation(OneOperationRequest oneOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(oneOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, oneOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "AmazonProtocolRestJsonWithCustomContentType"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OneOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, - OneOperationResponse::builder); + OneOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OneOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OneOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(oneOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OneOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OneOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(oneOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -126,7 +129,7 @@ public CompletableFuture oneOperation(OneOperationRequest @Override public final ProtocolRestJsonWithCustomContentTypeServiceClientConfiguration serviceClientConfiguration() { return new ProtocolRestJsonWithCustomContentTypeServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()) - .build(); + .build(); } @Override @@ -136,12 +139,12 @@ public final String serviceName() { private > T init(T builder) { return builder.clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(ProtocolRestJsonWithCustomContentTypeException::builder) - .protocol(AwsJsonProtocol.REST_JSON).protocolVersion("1.1").contentType("application/json"); + .defaultServiceExceptionSupplier(ProtocolRestJsonWithCustomContentTypeException::builder) + .protocol(AwsJsonProtocol.REST_JSON).protocolVersion("1.1").contentType("application/json"); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -185,7 +188,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, return configuration.build(); } ProtocolRestJsonWithCustomContentTypeServiceClientConfigurationBuilder serviceConfigBuilder = new ProtocolRestJsonWithCustomContentTypeServiceClientConfigurationBuilder( - configuration); + configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } @@ -194,10 +197,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-async.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-async.java index 16949a93d770..2857ce0fa9d1 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-async.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-async.java @@ -5,8 +5,10 @@ import java.net.URI; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -35,6 +37,7 @@ import software.amazon.awssdk.metrics.MetricCollector; import software.amazon.awssdk.metrics.MetricPublisher; import software.amazon.awssdk.metrics.NoOpMetricCollector; +import software.amazon.awssdk.protocols.core.ExceptionMetadata; import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory; @@ -466,6 +469,11 @@ private HttpResponseHandler createErrorResponseHandler(Base return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-async-client-class.java index da160d482eaf..bdb16c6bf6a3 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-async-client-class.java @@ -5,10 +5,12 @@ import java.nio.ByteBuffer; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Consumer; +import java.util.function.Function; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -143,7 +145,7 @@ final class DefaultJsonAsyncClient implements JsonAsyncClient { private static final Logger log = LoggerFactory.getLogger(DefaultJsonAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); + .serviceProtocol(AwsServiceProtocol.REST_JSON).build(); private final AsyncClientHandler clientHandler; @@ -196,32 +198,32 @@ public JsonUtilities utilities() { public CompletableFuture aPostOperation(APostOperationRequest aPostOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationResponse::builder); + operationMetadata, APostOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); String hostPrefix = "{StringMember}-foo."; HostnameValidator.validateHostnameCompliant(aPostOperationRequest.stringMember(), "StringMember", - "aPostOperationRequest"); + "aPostOperationRequest"); String resolvedHostExpression = String.format("%s-foo.", aPostOperationRequest.stringMember()); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .hostPrefixExpression(resolvedHostExpression).withInput(aPostOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -259,32 +261,32 @@ public CompletableFuture aPostOperation(APostOperationRe */ @Override public CompletableFuture aPostOperationWithOutput( - APostOperationWithOutputRequest aPostOperationWithOutputRequest) { + APostOperationWithOutputRequest aPostOperationWithOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(aPostOperationWithOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, aPostOperationWithOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "APostOperationWithOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, APostOperationWithOutputResponse::builder); + operationMetadata, APostOperationWithOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(aPostOperationWithOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("APostOperationWithOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new APostOperationWithOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(aPostOperationWithOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -318,33 +320,33 @@ public CompletableFuture aPostOperationWithOut */ @Override public CompletableFuture bearerAuthOperation( - BearerAuthOperationRequest bearerAuthOperationRequest) { + BearerAuthOperationRequest bearerAuthOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(bearerAuthOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, bearerAuthOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "BearerAuthOperation"); bearerAuthOperationRequest = applySignerOverride(bearerAuthOperationRequest, BearerTokenSigner.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, BearerAuthOperationResponse::builder); + operationMetadata, BearerAuthOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("BearerAuthOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new BearerAuthOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .credentialType(CredentialType.TOKEN).withInput(bearerAuthOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("BearerAuthOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new BearerAuthOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .credentialType(CredentialType.TOKEN).withInput(bearerAuthOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -378,60 +380,76 @@ public CompletableFuture bearerAuthOperation( */ @Override public CompletableFuture eventStreamOperation(EventStreamOperationRequest eventStreamOperationRequest, - Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { + Publisher requestStream, EventStreamOperationResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, eventStreamOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperation"); eventStreamOperationRequest = applySignerOverride(eventStreamOperationRequest, EventStreamAws4Signer.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + case "errorOne": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + case "errorTwo": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEvent.class, new InputEventMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder().eventStreamResponseHandler(asyncResponseHandler) - .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) - .exceptionResponseHandler(errorResponseHandler).future(future).executor(executor).serviceName(serviceName()) - .build(); + . builder().eventStreamResponseHandler(asyncResponseHandler) + .eventResponseHandler(eventResponseHandler).initialResponseHandler(responseHandler) + .exceptionResponseHandler(errorEventResponseHandler).future(future).executor(executor) + .serviceName(serviceName()).build(); RestEventStreamAsyncResponseTransformer restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer - . builder() - .eventStreamAsyncResponseTransformer(asyncResponseTransformer) - .eventStreamResponseHandler(asyncResponseHandler).build(); + . builder() + .eventStreamAsyncResponseTransformer(asyncResponseTransformer) + .eventStreamResponseHandler(asyncResponseHandler).build(); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationRequest), restAsyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("EventStreamOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withFullDuplex(true) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationRequest), restAsyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -446,7 +464,7 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -475,41 +493,41 @@ public CompletableFuture eventStreamOperation(EventStreamOperationRequest */ @Override public CompletableFuture eventStreamOperationWithOnlyInput( - EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, - Publisher requestStream) { + EventStreamOperationWithOnlyInputRequest eventStreamOperationWithOnlyInputRequest, + Publisher requestStream) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyInputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyInputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyInput"); eventStreamOperationWithOnlyInputRequest = applySignerOverride(eventStreamOperationWithOnlyInputRequest, - EventStreamAws4Signer.create()); + EventStreamAws4Signer.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); + .createResponseHandler(operationMetadata, EventStreamOperationWithOnlyInputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); EventStreamTaggedUnionJsonMarshaller eventMarshaller = EventStreamTaggedUnionJsonMarshaller.builder() - .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) - .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); + .putMarshaller(DefaultInputEventOne.class, new InputEventMarshaller(protocolFactory)) + .putMarshaller(DefaultInputEventTwo.class, new InputEventTwoMarshaller(protocolFactory)).build(); SdkPublisher eventPublisher = SdkPublisher.adapt(requestStream); Publisher adapted = eventPublisher.map(event -> eventMarshaller.marshall(event)).map( - AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); + AwsClientHandlerUtils::encodeEventStreamRequestToByteBuffer); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) - .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationWithOnlyInputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyInput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyInputRequestMarshaller(protocolFactory)) + .withAsyncRequestBody(AsyncRequestBody.fromPublisher(adapted)).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withInput(eventStreamOperationWithOnlyInputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -544,56 +562,72 @@ public CompletableFuture eventStreamO */ @Override public CompletableFuture eventStreamOperationWithOnlyOutput( - EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, - EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { + EventStreamOperationWithOnlyOutputRequest eventStreamOperationWithOnlyOutputRequest, + EventStreamOperationWithOnlyOutputResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(eventStreamOperationWithOnlyOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); + eventStreamOperationWithOnlyOutputRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EventStreamOperationWithOnlyOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( - protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); + protocolFactory.createResponseHandler(operationMetadata, EventStreamOperationWithOnlyOutputResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata - .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); + .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory.createResponseHandler( - JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), - EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) - .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) - .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) - .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) - .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), + EventStreamTaggedUnionPojoSupplier.builder().putSdkPojoSupplier("EventOne", EventStream::eventOneBuilder) + .putSdkPojoSupplier("EventTheSecond", EventStream::eventTheSecondBuilder) + .putSdkPojoSupplier("secondEventOne", EventStream::secondEventOneBuilder) + .putSdkPojoSupplier("eventThree", EventStream::eventThreeBuilder) + .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(EventStream.UNKNOWN)).build()); + + Function> eventstreamExceptionMetadataMapper = errorCode -> { + switch (errorCode) { + case "errorOne": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + case "errorTwo": + return Optional.of(ExceptionMetadata.builder().errorCode("InvalidInput").httpStatusCode(400) + .exceptionBuilderSupplier(InvalidInputException::builder).build()); + default: + return Optional.empty(); + } + }; + + HttpResponseHandler errorEventResponseHandler = createErrorResponseHandler(protocolFactory, + operationMetadata, eventstreamExceptionMetadataMapper); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer - . builder() - .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) - .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) - .executor(executor).serviceName(serviceName()).build(); + . builder() + .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) + .initialResponseHandler(responseHandler).exceptionResponseHandler(errorEventResponseHandler).future(future) + .executor(executor).serviceName(serviceName()).build(); RestEventStreamAsyncResponseTransformer restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer - . builder() - .eventStreamAsyncResponseTransformer(asyncResponseTransformer) - .eventStreamResponseHandler(asyncResponseHandler).build(); + . builder() + .eventStreamAsyncResponseTransformer(asyncResponseTransformer) + .eventStreamResponseHandler(asyncResponseHandler).build(); CompletableFuture executeFuture = clientHandler - .execute( - new ClientExecutionParams() - .withOperationName("EventStreamOperationWithOnlyOutput") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(eventStreamOperationWithOnlyOutputRequest), restAsyncResponseTransformer); + .execute( + new ClientExecutionParams() + .withOperationName("EventStreamOperationWithOnlyOutput") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new EventStreamOperationWithOnlyOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(eventStreamOperationWithOnlyOutputRequest), restAsyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { @@ -608,7 +642,7 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> asyncResponseHandler.exceptionOccurred(t)); + () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -636,39 +670,39 @@ public CompletableFuture eventStreamOperationWithOnlyOutput( */ @Override public CompletableFuture getOperationWithChecksum( - GetOperationWithChecksumRequest getOperationWithChecksumRequest) { + GetOperationWithChecksumRequest getOperationWithChecksumRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getOperationWithChecksumRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getOperationWithChecksumRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetOperationWithChecksum"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetOperationWithChecksumResponse::builder); + operationMetadata, GetOperationWithChecksumResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetOperationWithChecksum") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetOperationWithChecksumRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute( - SdkInternalExecutionAttribute.HTTP_CHECKSUM, - HttpChecksum.builder().requestChecksumRequired(true) - .requestAlgorithm(getOperationWithChecksumRequest.checksumAlgorithmAsString()) - .isRequestStreaming(false).build()).withInput(getOperationWithChecksumRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetOperationWithChecksum") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetOperationWithChecksumRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute( + SdkInternalExecutionAttribute.HTTP_CHECKSUM, + HttpChecksum.builder().requestChecksumRequired(true) + .requestAlgorithm(getOperationWithChecksumRequest.checksumAlgorithmAsString()) + .isRequestStreaming(false).build()).withInput(getOperationWithChecksumRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -706,32 +740,32 @@ public CompletableFuture getOperationWithCheck */ @Override public CompletableFuture getWithoutRequiredMembers( - GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { + GetWithoutRequiredMembersRequest getWithoutRequiredMembersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWithoutRequiredMembersRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWithoutRequiredMembersRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWithoutRequiredMembers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GetWithoutRequiredMembersResponse::builder); + operationMetadata, GetWithoutRequiredMembersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) - .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(getWithoutRequiredMembersRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GetWithoutRequiredMembers").withProtocolMetadata(protocolMetadata) + .withMarshaller(new GetWithoutRequiredMembersRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(getWithoutRequiredMembersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -766,36 +800,36 @@ public CompletableFuture getWithoutRequiredMe */ @Override public CompletableFuture operationWithChecksumRequired( - OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { + OperationWithChecksumRequiredRequest operationWithChecksumRequiredRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithChecksumRequiredRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); + operationWithChecksumRequiredRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithChecksumRequired"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithChecksumRequiredResponse::builder); + operationMetadata, OperationWithChecksumRequiredResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithChecksumRequired") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, - HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithChecksumRequired") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithChecksumRequiredRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM_REQUIRED, + HttpChecksumRequired.create()).withInput(operationWithChecksumRequiredRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -830,37 +864,37 @@ public CompletableFuture operationWithChe */ @Override public CompletableFuture operationWithRequestCompression( - OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { + OperationWithRequestCompressionRequest operationWithRequestCompressionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithRequestCompressionRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); + operationWithRequestCompressionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithRequestCompression"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithRequestCompressionResponse::builder); + operationMetadata, OperationWithRequestCompressionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithRequestCompression") - .withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, - RequestCompression.builder().encodings("gzip").isStreaming(false).build()) - .withInput(operationWithRequestCompressionRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithRequestCompression") + .withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithRequestCompressionRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION, + RequestCompression.builder().encodings("gzip").isStreaming(false).build()) + .withInput(operationWithRequestCompressionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -895,32 +929,32 @@ public CompletableFuture operationWithR */ @Override public CompletableFuture paginatedOperationWithResultKey( - PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { + PaginatedOperationWithResultKeyRequest paginatedOperationWithResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PaginatedOperationWithResultKeyResponse::builder); + operationMetadata, PaginatedOperationWithResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -955,32 +989,32 @@ public CompletableFuture paginatedOpera */ @Override public CompletableFuture paginatedOperationWithoutResultKey( - PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { + PaginatedOperationWithoutResultKeyRequest paginatedOperationWithoutResultKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(paginatedOperationWithoutResultKeyRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); + paginatedOperationWithoutResultKeyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PaginatedOperationWithoutResultKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory - .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); + .createResponseHandler(operationMetadata, PaginatedOperationWithoutResultKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) - .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(paginatedOperationWithoutResultKeyRequest)); + .execute(new ClientExecutionParams() + .withOperationName("PaginatedOperationWithoutResultKey").withProtocolMetadata(protocolMetadata) + .withMarshaller(new PaginatedOperationWithoutResultKeyRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(paginatedOperationWithoutResultKeyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -1032,57 +1066,57 @@ public CompletableFuture paginatedOp */ @Override public CompletableFuture putOperationWithChecksum( - PutOperationWithChecksumRequest putOperationWithChecksumRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + PutOperationWithChecksumRequest putOperationWithChecksumRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putOperationWithChecksumRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putOperationWithChecksumRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutOperationWithChecksum"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); if (!isSignerOverridden(clientConfiguration)) { putOperationWithChecksumRequest = applySignerOverride(putOperationWithChecksumRequest, AsyncAws4Signer.create()); } JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, PutOperationWithChecksumResponse::builder); + operationMetadata, PutOperationWithChecksumResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("PutOperationWithChecksum") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new PutOperationWithChecksumRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()) - .withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody) - .putExecutionAttribute( - SdkInternalExecutionAttribute.HTTP_CHECKSUM, - HttpChecksum.builder().requestChecksumRequired(false) - .requestValidationMode(putOperationWithChecksumRequest.checksumModeAsString()) - .responseAlgorithms("CRC32C", "CRC32", "SHA1", "SHA256").isRequestStreaming(true) - .build()).withInput(putOperationWithChecksumRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("PutOperationWithChecksum") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new PutOperationWithChecksumRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()) + .withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody) + .putExecutionAttribute( + SdkInternalExecutionAttribute.HTTP_CHECKSUM, + HttpChecksum.builder().requestChecksumRequired(false) + .requestValidationMode(putOperationWithChecksumRequest.checksumModeAsString()) + .responseAlgorithms("CRC32C", "CRC32", "SHA1", "SHA256").isRequestStreaming(true) + .build()).withInput(putOperationWithChecksumRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1093,7 +1127,7 @@ public CompletableFuture putOperationWithChecksum( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1126,13 +1160,13 @@ public CompletableFuture putOperationWithChecksum( */ @Override public CompletableFuture streamingInputOperation( - StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { + StreamingInputOperationRequest streamingInputOperationRequest, AsyncRequestBody requestBody) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingInputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOperation"); @@ -1140,25 +1174,25 @@ public CompletableFuture streamingInputOperatio streamingInputOperationRequest = applySignerOverride(streamingInputOperationRequest, AsyncAws4Signer.create()); } JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOperationResponse::builder); + operationMetadata, StreamingInputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("StreamingInputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller.builder() - .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) - .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) - .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) - .withInput(streamingInputOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("StreamingInputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller.builder() + .delegateMarshaller(new StreamingInputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).build()).withResponseHandler(responseHandler) + .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) + .withMetricCollector(apiCallMetricCollector).withAsyncRequestBody(requestBody) + .withInput(streamingInputOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -1202,51 +1236,51 @@ public CompletableFuture streamingInputOperatio */ @Override public CompletableFuture streamingInputOutputOperation( - StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingInputOutputOperationRequest streamingInputOutputOperationRequest, AsyncRequestBody requestBody, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingInputOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, - streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); + streamingInputOutputOperationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingInputOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); streamingInputOutputOperationRequest = applySignerOverride(streamingInputOutputOperationRequest, - Aws4UnsignedPayloadSigner.create()); + Aws4UnsignedPayloadSigner.create()); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingInputOutputOperationResponse::builder); + operationMetadata, StreamingInputOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingInputOutputOperation") - .withProtocolMetadata(protocolMetadata) - .withMarshaller( - AsyncStreamingRequestMarshaller - .builder() - .delegateMarshaller( - new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) - .asyncRequestBody(requestBody).transferEncoding(true).build()) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), - asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingInputOutputOperation") + .withProtocolMetadata(protocolMetadata) + .withMarshaller( + AsyncStreamingRequestMarshaller + .builder() + .delegateMarshaller( + new StreamingInputOutputOperationRequestMarshaller(protocolFactory)) + .asyncRequestBody(requestBody).transferEncoding(true).build()) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withAsyncRequestBody(requestBody).withInput(streamingInputOutputOperationRequest), + asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1257,7 +1291,7 @@ public CompletableFuture streamingInputOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1290,42 +1324,42 @@ public CompletableFuture streamingInputOutputOperation( */ @Override public CompletableFuture streamingOutputOperation( - StreamingOutputOperationRequest streamingOutputOperationRequest, - AsyncResponseTransformer asyncResponseTransformer) { + StreamingOutputOperationRequest streamingOutputOperationRequest, + AsyncResponseTransformer asyncResponseTransformer) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(streamingOutputOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, streamingOutputOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Json Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StreamingOutputOperation"); Pair, CompletableFuture> pair = AsyncResponseTransformerUtils - .wrapWithEndOfStreamFuture(asyncResponseTransformer); + .wrapWithEndOfStreamFuture(asyncResponseTransformer); asyncResponseTransformer = pair.left(); CompletableFuture endOfStreamFuture = pair.right(); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(true) - .isPayloadJson(false).build(); + .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, StreamingOutputOperationResponse::builder); + operationMetadata, StreamingOutputOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler.execute( - new ClientExecutionParams() - .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(streamingOutputOperationRequest), asyncResponseTransformer); + new ClientExecutionParams() + .withOperationName("StreamingOutputOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new StreamingOutputOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(streamingOutputOperationRequest), asyncResponseTransformer); AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(e)); + () -> finalAsyncResponseTransformer.exceptionOccurred(e)); } endOfStreamFuture.whenComplete((r2, e2) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); @@ -1336,7 +1370,7 @@ public CompletableFuture streamingOutputOperation( } catch (Throwable t) { AsyncResponseTransformer finalAsyncResponseTransformer = asyncResponseTransformer; runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", - () -> finalAsyncResponseTransformer.exceptionOccurred(t)); + () -> finalAsyncResponseTransformer.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } @@ -1359,17 +1393,17 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(JsonException::builder) - .protocol(AwsJsonProtocol.REST_JSON) - .protocolVersion("1.1") - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidInput") - .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(JsonException::builder) + .protocol(AwsJsonProtocol.REST_JSON) + .protocolVersion("1.1") + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidInput") + .exceptionBuilderSupplier(InvalidInputException::builder).httpStatusCode(400).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -1389,8 +1423,8 @@ private T applySignerOverride(T request, Signer signer) } Consumer signerOverride = b -> b.signer(signer).build(); AwsRequestOverrideConfiguration overrideConfiguration = request.overrideConfiguration() - .map(c -> c.toBuilder().applyMutation(signerOverride).build()) - .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(signerOverride).build())); + .map(c -> c.toBuilder().applyMutation(signerOverride).build()) + .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(signerOverride).build())); return (T) request.toBuilder().overrideConfiguration(overrideConfiguration).build(); } @@ -1436,10 +1470,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-async-client-class.java index b182b7e56b24..f2530d02c873 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-async-client-class.java @@ -4,8 +4,10 @@ import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.annotations.Generated; @@ -92,7 +94,7 @@ final class DefaultSmithyRpcV2ProtocolAsyncClient implements SmithyRpcV2Protocol private static final Logger log = LoggerFactory.getLogger(DefaultSmithyRpcV2ProtocolAsyncClient.class); private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder() - .serviceProtocol(AwsServiceProtocol.SMITHY_RPC_V2_CBOR).build(); + .serviceProtocol(AwsServiceProtocol.SMITHY_RPC_V2_CBOR).build(); private final AsyncClientHandler clientHandler; @@ -129,30 +131,30 @@ protected DefaultSmithyRpcV2ProtocolAsyncClient(SdkClientConfiguration clientCon @Override public CompletableFuture emptyInputOutput(EmptyInputOutputRequest emptyInputOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(emptyInputOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, emptyInputOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "EmptyInputOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, EmptyInputOutputResponse::builder); + operationMetadata, EmptyInputOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("EmptyInputOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new EmptyInputOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(emptyInputOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("EmptyInputOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new EmptyInputOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(emptyInputOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -188,27 +190,27 @@ public CompletableFuture emptyInputOutput(EmptyInputOu public CompletableFuture float16(Float16Request float16Request) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(float16Request, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, float16Request - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "Float16"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, - Float16Response::builder); + Float16Response::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams().withOperationName("Float16") - .withProtocolMetadata(protocolMetadata).withMarshaller(new Float16RequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(float16Request)); + .execute(new ClientExecutionParams().withOperationName("Float16") + .withProtocolMetadata(protocolMetadata).withMarshaller(new Float16RequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(float16Request)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -243,30 +245,30 @@ public CompletableFuture float16(Float16Request float16Request) @Override public CompletableFuture fractionalSeconds(FractionalSecondsRequest fractionalSecondsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(fractionalSecondsRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, fractionalSecondsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "FractionalSeconds"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, FractionalSecondsResponse::builder); + operationMetadata, FractionalSecondsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("FractionalSeconds").withProtocolMetadata(protocolMetadata) - .withMarshaller(new FractionalSecondsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(fractionalSecondsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("FractionalSeconds").withProtocolMetadata(protocolMetadata) + .withMarshaller(new FractionalSecondsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(fractionalSecondsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -303,30 +305,30 @@ public CompletableFuture fractionalSeconds(Fractional @Override public CompletableFuture greetingWithErrors(GreetingWithErrorsRequest greetingWithErrorsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(greetingWithErrorsRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, greetingWithErrorsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GreetingWithErrors"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, GreetingWithErrorsResponse::builder); + operationMetadata, GreetingWithErrorsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("GreetingWithErrors").withProtocolMetadata(protocolMetadata) - .withMarshaller(new GreetingWithErrorsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(greetingWithErrorsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("GreetingWithErrors").withProtocolMetadata(protocolMetadata) + .withMarshaller(new GreetingWithErrorsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(greetingWithErrorsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -362,28 +364,28 @@ public CompletableFuture greetingWithErrors(Greeting public CompletableFuture noInputOutput(NoInputOutputRequest noInputOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(noInputOutputRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, noInputOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "NoInputOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, - NoInputOutputResponse::builder); + NoInputOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("NoInputOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new NoInputOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(noInputOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("NoInputOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new NoInputOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(noInputOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -418,32 +420,32 @@ public CompletableFuture noInputOutput(NoInputOutputReque */ @Override public CompletableFuture operationWithDefaults( - OperationWithDefaultsRequest operationWithDefaultsRequest) { + OperationWithDefaultsRequest operationWithDefaultsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(operationWithDefaultsRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, operationWithDefaultsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OperationWithDefaults"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OperationWithDefaultsResponse::builder); + operationMetadata, OperationWithDefaultsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OperationWithDefaults").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OperationWithDefaultsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(operationWithDefaultsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OperationWithDefaults").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OperationWithDefaultsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(operationWithDefaultsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -477,32 +479,32 @@ public CompletableFuture operationWithDefaults( */ @Override public CompletableFuture optionalInputOutput( - OptionalInputOutputRequest optionalInputOutputRequest) { + OptionalInputOutputRequest optionalInputOutputRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(optionalInputOutputRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, optionalInputOutputRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "OptionalInputOutput"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, OptionalInputOutputResponse::builder); + operationMetadata, OptionalInputOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("OptionalInputOutput").withProtocolMetadata(protocolMetadata) - .withMarshaller(new OptionalInputOutputRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(optionalInputOutputRequest)); + .execute(new ClientExecutionParams() + .withOperationName("OptionalInputOutput").withProtocolMetadata(protocolMetadata) + .withMarshaller(new OptionalInputOutputRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(optionalInputOutputRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -537,30 +539,30 @@ public CompletableFuture optionalInputOutput( @Override public CompletableFuture recursiveShapes(RecursiveShapesRequest recursiveShapesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(recursiveShapesRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, recursiveShapesRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RecursiveShapes"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, RecursiveShapesResponse::builder); + operationMetadata, RecursiveShapesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("RecursiveShapes").withProtocolMetadata(protocolMetadata) - .withMarshaller(new RecursiveShapesRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(recursiveShapesRequest)); + .execute(new ClientExecutionParams() + .withOperationName("RecursiveShapes").withProtocolMetadata(protocolMetadata) + .withMarshaller(new RecursiveShapesRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(recursiveShapesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -596,30 +598,30 @@ public CompletableFuture recursiveShapes(RecursiveShape @Override public CompletableFuture rpcV2CborDenseMaps(RpcV2CborDenseMapsRequest rpcV2CborDenseMapsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(rpcV2CborDenseMapsRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, rpcV2CborDenseMapsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RpcV2CborDenseMaps"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, RpcV2CborDenseMapsResponse::builder); + operationMetadata, RpcV2CborDenseMapsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("RpcV2CborDenseMaps").withProtocolMetadata(protocolMetadata) - .withMarshaller(new RpcV2CborDenseMapsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(rpcV2CborDenseMapsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("RpcV2CborDenseMaps").withProtocolMetadata(protocolMetadata) + .withMarshaller(new RpcV2CborDenseMapsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(rpcV2CborDenseMapsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -656,28 +658,28 @@ public CompletableFuture rpcV2CborDenseMaps(RpcV2Cbo public CompletableFuture rpcV2CborLists(RpcV2CborListsRequest rpcV2CborListsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(rpcV2CborListsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, rpcV2CborListsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RpcV2CborLists"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, RpcV2CborListsResponse::builder); + operationMetadata, RpcV2CborListsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("RpcV2CborLists").withProtocolMetadata(protocolMetadata) - .withMarshaller(new RpcV2CborListsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(rpcV2CborListsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("RpcV2CborLists").withProtocolMetadata(protocolMetadata) + .withMarshaller(new RpcV2CborListsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(rpcV2CborListsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -712,32 +714,32 @@ public CompletableFuture rpcV2CborLists(RpcV2CborListsRe */ @Override public CompletableFuture rpcV2CborSparseMaps( - RpcV2CborSparseMapsRequest rpcV2CborSparseMapsRequest) { + RpcV2CborSparseMapsRequest rpcV2CborSparseMapsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(rpcV2CborSparseMapsRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, rpcV2CborSparseMapsRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RpcV2CborSparseMaps"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, RpcV2CborSparseMapsResponse::builder); + operationMetadata, RpcV2CborSparseMapsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("RpcV2CborSparseMaps").withProtocolMetadata(protocolMetadata) - .withMarshaller(new RpcV2CborSparseMapsRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(rpcV2CborSparseMapsRequest)); + .execute(new ClientExecutionParams() + .withOperationName("RpcV2CborSparseMaps").withProtocolMetadata(protocolMetadata) + .withMarshaller(new RpcV2CborSparseMapsRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(rpcV2CborSparseMapsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -771,32 +773,32 @@ public CompletableFuture rpcV2CborSparseMaps( */ @Override public CompletableFuture simpleScalarProperties( - SimpleScalarPropertiesRequest simpleScalarPropertiesRequest) { + SimpleScalarPropertiesRequest simpleScalarPropertiesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(simpleScalarPropertiesRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, simpleScalarPropertiesRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SimpleScalarProperties"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, SimpleScalarPropertiesResponse::builder); + operationMetadata, SimpleScalarPropertiesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("SimpleScalarProperties").withProtocolMetadata(protocolMetadata) - .withMarshaller(new SimpleScalarPropertiesRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(simpleScalarPropertiesRequest)); + .execute(new ClientExecutionParams() + .withOperationName("SimpleScalarProperties").withProtocolMetadata(protocolMetadata) + .withMarshaller(new SimpleScalarPropertiesRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(simpleScalarPropertiesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -830,32 +832,32 @@ public CompletableFuture simpleScalarProperties( */ @Override public CompletableFuture sparseNullsOperation( - SparseNullsOperationRequest sparseNullsOperationRequest) { + SparseNullsOperationRequest sparseNullsOperationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(sparseNullsOperationRequest, - this.clientConfiguration); + this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, sparseNullsOperationRequest - .overrideConfiguration().orElse(null)); + .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector - .create("ApiCall"); + .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SmithyRpcV2Protocol"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SparseNullsOperation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) - .isPayloadJson(true).build(); + .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( - operationMetadata, SparseNullsOperationResponse::builder); + operationMetadata, SparseNullsOperationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, - operationMetadata); + operationMetadata); CompletableFuture executeFuture = clientHandler - .execute(new ClientExecutionParams() - .withOperationName("SparseNullsOperation").withProtocolMetadata(protocolMetadata) - .withMarshaller(new SparseNullsOperationRequestMarshaller(protocolFactory)) - .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) - .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) - .withInput(sparseNullsOperationRequest)); + .execute(new ClientExecutionParams() + .withOperationName("SparseNullsOperation").withProtocolMetadata(protocolMetadata) + .withMarshaller(new SparseNullsOperationRequestMarshaller(protocolFactory)) + .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) + .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) + .withInput(sparseNullsOperationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); @@ -879,23 +881,23 @@ public final String serviceName() { private > T init(T builder) { return builder - .clientConfiguration(clientConfiguration) - .defaultServiceExceptionSupplier(SmithyRpcV2ProtocolException::builder) - .protocol(AwsJsonProtocol.SMITHY_RPC_V2_CBOR) - .protocolVersion("1.1") - .registerModeledException( - ExceptionMetadata.builder().errorCode("ValidationException") - .exceptionBuilderSupplier(ValidationException::builder).build()) - .registerModeledException( - ExceptionMetadata.builder().errorCode("InvalidGreeting") - .exceptionBuilderSupplier(InvalidGreetingException::builder).build()) - .registerModeledException( - ExceptionMetadata.builder().errorCode("ComplexError") - .exceptionBuilderSupplier(ComplexErrorException::builder).build()); + .clientConfiguration(clientConfiguration) + .defaultServiceExceptionSupplier(SmithyRpcV2ProtocolException::builder) + .protocol(AwsJsonProtocol.SMITHY_RPC_V2_CBOR) + .protocolVersion("1.1") + .registerModeledException( + ExceptionMetadata.builder().errorCode("ValidationException") + .exceptionBuilderSupplier(ValidationException::builder).build()) + .registerModeledException( + ExceptionMetadata.builder().errorCode("InvalidGreeting") + .exceptionBuilderSupplier(InvalidGreetingException::builder).build()) + .registerModeledException( + ExceptionMetadata.builder().errorCode("ComplexError") + .exceptionBuilderSupplier(ComplexErrorException::builder).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, - RequestOverrideConfiguration requestOverrideConfiguration) { + RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); @@ -939,7 +941,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, return configuration.build(); } SmithyRpcV2ProtocolServiceClientConfigurationBuilder serviceConfigBuilder = new SmithyRpcV2ProtocolServiceClientConfigurationBuilder( - configuration); + configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } @@ -948,10 +950,15 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, - JsonOperationMetadata operationMetadata) { + JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } + private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, + JsonOperationMetadata operationMetadata, Function> exceptionMetadataMapper) { + return protocolFactory.createErrorResponseHandler(operationMetadata, exceptionMetadataMapper); + } + @Override public void close() { clientHandler.close(); diff --git a/core/annotations/pom.xml b/core/annotations/pom.xml index 307b9172d177..2a93a0a10183 100644 --- a/core/annotations/pom.xml +++ b/core/annotations/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/arns/pom.xml b/core/arns/pom.xml index 85a5f2faa26d..10ab73485b40 100644 --- a/core/arns/pom.xml +++ b/core/arns/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/auth-crt/pom.xml b/core/auth-crt/pom.xml index 00375c8d5d6e..777f9cf3c636 100644 --- a/core/auth-crt/pom.xml +++ b/core/auth-crt/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 auth-crt diff --git a/core/auth/pom.xml b/core/auth/pom.xml index 37ab6b5c1455..9de54b0cba3c 100644 --- a/core/auth/pom.xml +++ b/core/auth/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 auth diff --git a/core/aws-core/pom.xml b/core/aws-core/pom.xml index b63b6c9d05a6..9ff71dd1c7a4 100644 --- a/core/aws-core/pom.xml +++ b/core/aws-core/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 aws-core diff --git a/core/checksums-spi/pom.xml b/core/checksums-spi/pom.xml index 75166a455b9e..ca648393ed1d 100644 --- a/core/checksums-spi/pom.xml +++ b/core/checksums-spi/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 checksums-spi diff --git a/core/checksums/pom.xml b/core/checksums/pom.xml index 6fa58e22f127..74fb2325fc3e 100644 --- a/core/checksums/pom.xml +++ b/core/checksums/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 checksums diff --git a/core/crt-core/pom.xml b/core/crt-core/pom.xml index 970361f02579..2fc7afde6fdf 100644 --- a/core/crt-core/pom.xml +++ b/core/crt-core/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 crt-core diff --git a/core/endpoints-spi/pom.xml b/core/endpoints-spi/pom.xml index 8bf87e600698..386ec8063c18 100644 --- a/core/endpoints-spi/pom.xml +++ b/core/endpoints-spi/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/http-auth-aws-crt/pom.xml b/core/http-auth-aws-crt/pom.xml index 7b6c7d08a92e..84510bed0714 100644 --- a/core/http-auth-aws-crt/pom.xml +++ b/core/http-auth-aws-crt/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 http-auth-aws-crt diff --git a/core/http-auth-aws-eventstream/pom.xml b/core/http-auth-aws-eventstream/pom.xml index 69534c5fba74..683153f652fd 100644 --- a/core/http-auth-aws-eventstream/pom.xml +++ b/core/http-auth-aws-eventstream/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 http-auth-aws-eventstream diff --git a/core/http-auth-aws/pom.xml b/core/http-auth-aws/pom.xml index 0f30e1e0fd0e..51acf5b2343d 100644 --- a/core/http-auth-aws/pom.xml +++ b/core/http-auth-aws/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 http-auth-aws diff --git a/core/http-auth-spi/pom.xml b/core/http-auth-spi/pom.xml index 1fefd8b8eaef..ff1d1517edbf 100644 --- a/core/http-auth-spi/pom.xml +++ b/core/http-auth-spi/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 http-auth-spi diff --git a/core/http-auth/pom.xml b/core/http-auth/pom.xml index 5f9871444a11..4383adce7eb8 100644 --- a/core/http-auth/pom.xml +++ b/core/http-auth/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 http-auth diff --git a/core/identity-spi/pom.xml b/core/identity-spi/pom.xml index 165c8e326e2e..d095f2af7719 100644 --- a/core/identity-spi/pom.xml +++ b/core/identity-spi/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 identity-spi diff --git a/core/imds/pom.xml b/core/imds/pom.xml index 5188ef1cacf2..ebe25a1dbf8c 100644 --- a/core/imds/pom.xml +++ b/core/imds/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 imds diff --git a/core/json-utils/pom.xml b/core/json-utils/pom.xml index 18b8f86eded5..4cbfc01d39b5 100644 --- a/core/json-utils/pom.xml +++ b/core/json-utils/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/metrics-spi/pom.xml b/core/metrics-spi/pom.xml index ab3218a4b8ee..eead22eab346 100644 --- a/core/metrics-spi/pom.xml +++ b/core/metrics-spi/pom.xml @@ -5,7 +5,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index f004c356e3d4..0bb63cb4a265 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 core diff --git a/core/profiles/pom.xml b/core/profiles/pom.xml index d7bff7e41e34..03919f54a2bf 100644 --- a/core/profiles/pom.xml +++ b/core/profiles/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 profiles diff --git a/core/protocols/aws-cbor-protocol/pom.xml b/core/protocols/aws-cbor-protocol/pom.xml index 4ac75abad631..b8133a89266a 100644 --- a/core/protocols/aws-cbor-protocol/pom.xml +++ b/core/protocols/aws-cbor-protocol/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/aws-json-protocol/pom.xml b/core/protocols/aws-json-protocol/pom.xml index 20b0d1afb119..e870144445cd 100644 --- a/core/protocols/aws-json-protocol/pom.xml +++ b/core/protocols/aws-json-protocol/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java index 6710598abbaf..cb076dcc721d 100644 --- a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java +++ b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java @@ -23,6 +23,7 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.function.Function; import java.util.function.Supplier; import software.amazon.awssdk.annotations.SdkProtectedApi; @@ -130,7 +131,12 @@ public final HttpResponseHandler createResponseHandler( /** * Creates a response handler for handling a error response (non 2xx response). + * + * @deprecated Users should favor using + * {@link BaseAwsJsonProtocolFactory#createErrorResponseHandler(JsonOperationMetadata, Function)}, which allows the creation + * of an error unmarshaller that uses a mapping function to map from error code to the associated {@link ExceptionMetadata}. */ + @Deprecated public final HttpResponseHandler createErrorResponseHandler( JsonOperationMetadata errorResponseMetadata) { return timeUnmarshalling(AwsJsonProtocolErrorUnmarshaller @@ -145,6 +151,21 @@ public final HttpResponseHandler createErrorResponseHandler .build()); } + public final HttpResponseHandler createErrorResponseHandler( + JsonOperationMetadata errorResponseMetadata, + Function> exceptionMetadataSupplier) { + return timeUnmarshalling( + AwsJsonProtocolErrorUnmarshaller.builder() + .jsonProtocolUnmarshaller(protocolUnmarshaller) + .exceptionMetadataSupplier(exceptionMetadataSupplier) + .errorCodeParser(getSdkFactory().getErrorCodeParser(customErrorCodeFieldName)) + .hasAwsQueryCompatible(hasAwsQueryCompatible) + .errorMessageParser(AwsJsonErrorMessageParser.DEFAULT_ERROR_MESSAGE_PARSER) + .jsonFactory(getSdkFactory().getJsonFactory()) + .defaultExceptionSupplier(defaultServiceExceptionSupplier) + .build()); + } + private MetricCollectingHttpResponseHandler timeUnmarshalling(HttpResponseHandler delegate) { return MetricCollectingHttpResponseHandler.create(CoreMetric.UNMARSHALLING_DURATION, delegate); } @@ -239,7 +260,13 @@ protected Builder() { * * @param errorMetadata Metadata to unmarshall the modeled exception. * @return This builder for method chaining. + * + * @deprecated Users should favor using + * {@link BaseAwsJsonProtocolFactory#createErrorResponseHandler(JsonOperationMetadata, Function)}, which allows the + * creation of an error unmarshaller that uses a mapping function to map from error code to the associated + * {@link ExceptionMetadata}. */ + @Deprecated public final SubclassT registerModeledException(ExceptionMetadata errorMetadata) { modeledExceptions.add(errorMetadata); return getSubclass(); diff --git a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/AwsJsonProtocolErrorUnmarshaller.java b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/AwsJsonProtocolErrorUnmarshaller.java index 252afca4cecc..18fa124b5a07 100644 --- a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/AwsJsonProtocolErrorUnmarshaller.java +++ b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/AwsJsonProtocolErrorUnmarshaller.java @@ -18,6 +18,7 @@ import java.time.Duration; import java.util.List; import java.util.Optional; +import java.util.function.Function; import java.util.function.Supplier; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.awscore.exception.AwsErrorDetails; @@ -49,6 +50,7 @@ public final class AwsJsonProtocolErrorUnmarshaller implements HttpResponseHandl private final JsonFactory jsonFactory; private final Supplier defaultExceptionSupplier; private final ErrorCodeParser errorCodeParser; + private final Function> exceptionMetadataMapper; private final boolean hasAwsQueryCompatible; private AwsJsonProtocolErrorUnmarshaller(Builder builder) { @@ -58,6 +60,9 @@ private AwsJsonProtocolErrorUnmarshaller(Builder builder) { this.jsonFactory = builder.jsonFactory; this.defaultExceptionSupplier = builder.defaultExceptionSupplier; this.exceptions = builder.exceptions; + this.exceptionMetadataMapper = builder.exceptionMetadataMapper != null + ? builder.exceptionMetadataMapper + : this::defaultMapToExceptionMetadata; this.hasAwsQueryCompatible = builder.hasAwsQueryCompatible; } @@ -70,9 +75,7 @@ private AwsServiceException unmarshall(SdkHttpFullResponse response, ExecutionAt JsonContent jsonContent = JsonContent.createJsonContent(response, jsonFactory); String errorCode = errorCodeParser.parseErrorCode(response, jsonContent); - Optional modeledExceptionMetadata = exceptions.stream() - .filter(e -> e.errorCode().equals(errorCode)) - .findAny(); + Optional modeledExceptionMetadata = exceptionMetadataMapper.apply(errorCode); SdkPojo sdkPojo = modeledExceptionMetadata.map(ExceptionMetadata::exceptionBuilderSupplier) .orElse(defaultExceptionSupplier) @@ -114,7 +117,7 @@ private String parseQueryErrorCodeFromDelimiter(String queryHeaderValue) { } return null; } - + private String errorMessageForException(String errorMessage, String errorCode, int statusCode) { if (StringUtils.isNotBlank(errorMessage)) { return errorMessage; @@ -171,6 +174,12 @@ private AwsErrorDetails extractAwsErrorDetails(SdkHttpFullResponse response, return errorDetails.build(); } + private Optional defaultMapToExceptionMetadata(String errorCode) { + return exceptions.stream() + .filter(e -> e.errorCode().equals(errorCode)) + .findAny(); + } + public static Builder builder() { return new Builder(); } @@ -186,6 +195,7 @@ public static final class Builder { private JsonFactory jsonFactory; private Supplier defaultExceptionSupplier; private ErrorCodeParser errorCodeParser; + private Function> exceptionMetadataMapper; private boolean hasAwsQueryCompatible; private Builder() { @@ -208,11 +218,17 @@ public Builder jsonProtocolUnmarshaller(JsonProtocolUnmarshaller jsonProtocolUnm * * @return This builder for method chaining. */ + @Deprecated public Builder exceptions(List exceptions) { this.exceptions = exceptions; return this; } + public Builder exceptionMetadataSupplier(Function> exceptionMetadataSupplier) { + this.exceptionMetadataMapper = exceptionMetadataSupplier; + return this; + } + /** * Implementation that can extract an error message from the JSON response. Implementations may look for a * specific field in the JSON document or a specific header for example. diff --git a/core/protocols/aws-query-protocol/pom.xml b/core/protocols/aws-query-protocol/pom.xml index 4a5d5e04fe16..e76a3b26ee63 100644 --- a/core/protocols/aws-query-protocol/pom.xml +++ b/core/protocols/aws-query-protocol/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/aws-xml-protocol/pom.xml b/core/protocols/aws-xml-protocol/pom.xml index d45a265e4a06..f08b9a6e593b 100644 --- a/core/protocols/aws-xml-protocol/pom.xml +++ b/core/protocols/aws-xml-protocol/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/pom.xml b/core/protocols/pom.xml index 58ca7b393ff3..4085abbb5258 100644 --- a/core/protocols/pom.xml +++ b/core/protocols/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/protocol-core/pom.xml b/core/protocols/protocol-core/pom.xml index 220968c7626b..dbf893365191 100644 --- a/core/protocols/protocol-core/pom.xml +++ b/core/protocols/protocol-core/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/protocols/smithy-rpcv2-protocol/pom.xml b/core/protocols/smithy-rpcv2-protocol/pom.xml index 351f1f4f3b3e..5f03f64c86c9 100644 --- a/core/protocols/smithy-rpcv2-protocol/pom.xml +++ b/core/protocols/smithy-rpcv2-protocol/pom.xml @@ -20,7 +20,7 @@ protocols software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/regions/pom.xml b/core/regions/pom.xml index 4fd2c697ccb1..fa7cd230e0ae 100644 --- a/core/regions/pom.xml +++ b/core/regions/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 regions diff --git a/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json b/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json index 43bbe1e77d85..59fedef47bda 100644 --- a/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json +++ b/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json @@ -20929,7 +20929,12 @@ "tags" : [ "dualstack" ] } ] }, - "eu-south-2" : { }, + "eu-south-2" : { + "variants" : [ { + "hostname" : "textract.eu-south-2.api.aws", + "tags" : [ "dualstack" ] + } ] + }, "eu-west-1" : { "variants" : [ { "hostname" : "textract.eu-west-1.api.aws", @@ -22250,6 +22255,16 @@ "tags" : [ "fips" ] } ] }, + "ap-southeast-5" : { + "credentialScope" : { + "region" : "ap-southeast-5" + }, + "hostname" : "wafv2.ap-southeast-5.amazonaws.com", + "variants" : [ { + "hostname" : "wafv2-fips.ap-southeast-5.amazonaws.com", + "tags" : [ "fips" ] + } ] + }, "ca-central-1" : { "credentialScope" : { "region" : "ca-central-1" @@ -22427,6 +22442,13 @@ "deprecated" : true, "hostname" : "wafv2-fips.ap-southeast-4.amazonaws.com" }, + "fips-ap-southeast-5" : { + "credentialScope" : { + "region" : "ap-southeast-5" + }, + "deprecated" : true, + "hostname" : "wafv2-fips.ap-southeast-5.amazonaws.com" + }, "fips-ca-central-1" : { "credentialScope" : { "region" : "ca-central-1" diff --git a/core/retries-spi/pom.xml b/core/retries-spi/pom.xml index 561bc873a4fe..6a85b75ae71c 100644 --- a/core/retries-spi/pom.xml +++ b/core/retries-spi/pom.xml @@ -20,7 +20,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/retries/pom.xml b/core/retries/pom.xml index 921884bc0d94..a2e37901a4a5 100644 --- a/core/retries/pom.xml +++ b/core/retries/pom.xml @@ -21,7 +21,7 @@ core software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/core/sdk-core/pom.xml b/core/sdk-core/pom.xml index 8030acd3ce6f..16a57e268e03 100644 --- a/core/sdk-core/pom.xml +++ b/core/sdk-core/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk core - 2.29.4 + 2.29.5 sdk-core AWS Java SDK :: SDK Core diff --git a/http-client-spi/pom.xml b/http-client-spi/pom.xml index cd3d69a28ea1..81a22e09bc70 100644 --- a/http-client-spi/pom.xml +++ b/http-client-spi/pom.xml @@ -22,7 +22,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 http-client-spi AWS Java SDK :: HTTP Client Interface diff --git a/http-clients/apache-client/pom.xml b/http-clients/apache-client/pom.xml index 24e9cf919766..b72cbf9a3530 100644 --- a/http-clients/apache-client/pom.xml +++ b/http-clients/apache-client/pom.xml @@ -21,7 +21,7 @@ http-clients software.amazon.awssdk - 2.29.4 + 2.29.5 apache-client diff --git a/http-clients/aws-crt-client/pom.xml b/http-clients/aws-crt-client/pom.xml index b82a9a4d6094..4f5c5bc66828 100644 --- a/http-clients/aws-crt-client/pom.xml +++ b/http-clients/aws-crt-client/pom.xml @@ -21,7 +21,7 @@ http-clients software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/http-clients/netty-nio-client/pom.xml b/http-clients/netty-nio-client/pom.xml index a955aceee84c..95c7af9a404e 100644 --- a/http-clients/netty-nio-client/pom.xml +++ b/http-clients/netty-nio-client/pom.xml @@ -20,7 +20,7 @@ http-clients software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/http-clients/pom.xml b/http-clients/pom.xml index 1876079a21b3..ec7e97e88d5b 100644 --- a/http-clients/pom.xml +++ b/http-clients/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/http-clients/url-connection-client/pom.xml b/http-clients/url-connection-client/pom.xml index c5db690cc9bf..b4d8cf36e724 100644 --- a/http-clients/url-connection-client/pom.xml +++ b/http-clients/url-connection-client/pom.xml @@ -20,7 +20,7 @@ http-clients software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/metric-publishers/cloudwatch-metric-publisher/pom.xml b/metric-publishers/cloudwatch-metric-publisher/pom.xml index c94c6883a905..ca77dc12bbe5 100644 --- a/metric-publishers/cloudwatch-metric-publisher/pom.xml +++ b/metric-publishers/cloudwatch-metric-publisher/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk metric-publishers - 2.29.4 + 2.29.5 cloudwatch-metric-publisher diff --git a/metric-publishers/pom.xml b/metric-publishers/pom.xml index c87f64705fbc..e93f56b69a01 100644 --- a/metric-publishers/pom.xml +++ b/metric-publishers/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 metric-publishers diff --git a/pom.xml b/pom.xml index 18a89ee9e0ba..bd19ab9c6a70 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 pom AWS Java SDK :: Parent The Amazon Web Services SDK for Java provides Java APIs @@ -99,7 +99,7 @@ ${project.version} - 2.29.3 + 2.29.4 2.15.2 2.15.2 2.13.2 diff --git a/release-scripts/pom.xml b/release-scripts/pom.xml index 618eccc40973..00cfbdc44557 100644 --- a/release-scripts/pom.xml +++ b/release-scripts/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml release-scripts diff --git a/services-custom/dynamodb-enhanced/pom.xml b/services-custom/dynamodb-enhanced/pom.xml index 96ffd9c76f7c..023b192f7bf8 100644 --- a/services-custom/dynamodb-enhanced/pom.xml +++ b/services-custom/dynamodb-enhanced/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services-custom - 2.29.4 + 2.29.5 dynamodb-enhanced AWS Java SDK :: DynamoDB :: Enhanced Client diff --git a/services-custom/iam-policy-builder/pom.xml b/services-custom/iam-policy-builder/pom.xml index 6d65e81a5723..8a4a5408f9f9 100644 --- a/services-custom/iam-policy-builder/pom.xml +++ b/services-custom/iam-policy-builder/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml iam-policy-builder diff --git a/services-custom/pom.xml b/services-custom/pom.xml index 41176cf73345..35f6745b6e80 100644 --- a/services-custom/pom.xml +++ b/services-custom/pom.xml @@ -19,7 +19,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 services-custom AWS Java SDK :: Custom Services diff --git a/services-custom/s3-event-notifications/pom.xml b/services-custom/s3-event-notifications/pom.xml index 0ade2c953734..1e60792e048a 100644 --- a/services-custom/s3-event-notifications/pom.xml +++ b/services-custom/s3-event-notifications/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml s3-event-notifications diff --git a/services-custom/s3-transfer-manager/pom.xml b/services-custom/s3-transfer-manager/pom.xml index 526233bc964a..114dceb75708 100644 --- a/services-custom/s3-transfer-manager/pom.xml +++ b/services-custom/s3-transfer-manager/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml s3-transfer-manager diff --git a/services/accessanalyzer/pom.xml b/services/accessanalyzer/pom.xml index e6e1a942b05a..76b413badf19 100644 --- a/services/accessanalyzer/pom.xml +++ b/services/accessanalyzer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 accessanalyzer AWS Java SDK :: Services :: AccessAnalyzer diff --git a/services/account/pom.xml b/services/account/pom.xml index d9f7f806bde7..64e7a6d33d4d 100644 --- a/services/account/pom.xml +++ b/services/account/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 account AWS Java SDK :: Services :: Account diff --git a/services/acm/pom.xml b/services/acm/pom.xml index 325aec977cc4..c06c957a951f 100644 --- a/services/acm/pom.xml +++ b/services/acm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 acm AWS Java SDK :: Services :: AWS Certificate Manager diff --git a/services/acmpca/pom.xml b/services/acmpca/pom.xml index 71ad3f9d446b..8bffae1595ec 100644 --- a/services/acmpca/pom.xml +++ b/services/acmpca/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 acmpca AWS Java SDK :: Services :: ACM PCA diff --git a/services/amp/pom.xml b/services/amp/pom.xml index 41812f6504c3..80d213eefc87 100644 --- a/services/amp/pom.xml +++ b/services/amp/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 amp AWS Java SDK :: Services :: Amp diff --git a/services/amp/src/main/resources/codegen-resources/service-2.json b/services/amp/src/main/resources/codegen-resources/service-2.json index fb8386642173..2ba81375e79d 100644 --- a/services/amp/src/main/resources/codegen-resources/service-2.json +++ b/services/amp/src/main/resources/codegen-resources/service-2.json @@ -5,11 +5,13 @@ "endpointPrefix":"aps", "jsonVersion":"1.1", "protocol":"rest-json", + "protocols":["rest-json"], "serviceFullName":"Amazon Prometheus Service", "serviceId":"amp", "signatureVersion":"v4", "signingName":"aps", - "uid":"amp-2020-08-01" + "uid":"amp-2020-08-01", + "auth":["aws.auth#sigv4"] }, "operations":{ "CreateAlertManagerDefinition":{ @@ -90,7 +92,7 @@ {"shape":"InternalServerException"}, {"shape":"ServiceQuotaExceededException"} ], - "documentation":"

The CreateScraper operation creates a scraper to collect metrics. A scraper pulls metrics from Prometheus-compatible sources within an Amazon EKS cluster, and sends them to your Amazon Managed Service for Prometheus workspace. You can configure the scraper to control what metrics are collected, and what transformations are applied prior to sending them to your workspace.

If needed, an IAM role will be created for you that gives Amazon Managed Service for Prometheus access to the metrics in your cluster. For more information, see Using roles for scraping metrics from EKS in the Amazon Managed Service for Prometheus User Guide.

You cannot update a scraper. If you want to change the configuration of the scraper, create a new scraper and delete the old one.

The scrapeConfiguration parameter contains the base64-encoded version of the YAML configuration file.

For more information about collectors, including what metrics are collected, and how to configure the scraper, see Amazon Web Services managed collectors in the Amazon Managed Service for Prometheus User Guide.

", + "documentation":"

The CreateScraper operation creates a scraper to collect metrics. A scraper pulls metrics from Prometheus-compatible sources within an Amazon EKS cluster, and sends them to your Amazon Managed Service for Prometheus workspace. Scrapers are flexible, and can be configured to control what metrics are collected, the frequency of collection, what transformations are applied to the metrics, and more.

An IAM role will be created for you that Amazon Managed Service for Prometheus uses to access the metrics in your cluster. You must configure this role with a policy that allows it to scrape metrics from your cluster. For more information, see Configuring your Amazon EKS cluster in the Amazon Managed Service for Prometheus User Guide.

The scrapeConfiguration parameter contains the base-64 encoded YAML configuration for the scraper.

For more information about collectors, including what metrics are collected, and how to configure the scraper, see Using an Amazon Web Services managed collector in the Amazon Managed Service for Prometheus User Guide.

", "idempotent":true }, "CreateWorkspace":{ @@ -364,7 +366,7 @@ {"shape":"AccessDeniedException"}, {"shape":"InternalServerException"} ], - "documentation":"

The ListTagsForResource operation returns the tags that are associated with an Amazon Managed Service for Prometheus resource. Currently, the only resources that can be tagged are workspaces and rule groups namespaces.

" + "documentation":"

The ListTagsForResource operation returns the tags that are associated with an Amazon Managed Service for Prometheus resource. Currently, the only resources that can be tagged are scrapers, workspaces, and rule groups namespaces.

" }, "ListWorkspaces":{ "name":"ListWorkspaces", @@ -441,7 +443,7 @@ {"shape":"AccessDeniedException"}, {"shape":"InternalServerException"} ], - "documentation":"

The TagResource operation associates tags with an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are workspaces and rule groups namespaces.

If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the resource. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag.

" + "documentation":"

The TagResource operation associates tags with an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are rule groups namespaces, scrapers, and workspaces.

If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the resource. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag. To remove a tag, use UntagResource.

" }, "UntagResource":{ "name":"UntagResource", @@ -459,7 +461,7 @@ {"shape":"AccessDeniedException"}, {"shape":"InternalServerException"} ], - "documentation":"

Removes the specified tags from an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are workspaces and rule groups namespaces.

", + "documentation":"

Removes the specified tags from an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are rule groups namespaces, scrapers, and workspaces.

", "idempotent":true }, "UpdateLoggingConfiguration":{ @@ -481,6 +483,27 @@ "documentation":"

Updates the log group ARN or the workspace ID of the current logging configuration.

", "idempotent":true }, + "UpdateScraper":{ + "name":"UpdateScraper", + "http":{ + "method":"PUT", + "requestUri":"/scrapers/{scraperId}", + "responseCode":202 + }, + "input":{"shape":"UpdateScraperRequest"}, + "output":{"shape":"UpdateScraperResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ServiceQuotaExceededException"} + ], + "documentation":"

Updates an existing scraper.

You can't use this function to update the source from which the scraper is collecting metrics. To change the source, delete the scraper and create a new one.

", + "idempotent":true + }, "UpdateWorkspaceAlias":{ "name":"UpdateWorkspaceAlias", "http":{ @@ -549,7 +572,7 @@ "documentation":"

A structure that displays the current status of the alert manager definition..

" } }, - "documentation":"

The details of an alert manager definition.

" + "documentation":"

The details of an alert manager definition. It is the configuration for the alert manager, including information about receivers for routing alerts.

" }, "AlertManagerDefinitionStatus":{ "type":"structure", @@ -673,7 +696,7 @@ }, "logGroupArn":{ "shape":"LogGroupArn", - "documentation":"

The ARN of the CloudWatch log group to which the vended log data will be published. This log group must exist prior to calling this API.

" + "documentation":"

The ARN of the CloudWatch log group to which the vended log data will be published. This log group must exist prior to calling this operation.

" }, "workspaceId":{ "shape":"WorkspaceId", @@ -766,7 +789,7 @@ "members":{ "alias":{ "shape":"ScraperAlias", - "documentation":"

(optional) a name to associate with the scraper. This is for your use, and does not need to be unique.

" + "documentation":"

(optional) An alias to associate with the scraper. This is for your use, and does not need to be unique.

" }, "clientToken":{ "shape":"IdempotencyToken", @@ -779,7 +802,7 @@ }, "scrapeConfiguration":{ "shape":"ScrapeConfiguration", - "documentation":"

The configuration file to use in the new scraper. For more information, see Scraper configuration in the Amazon Managed Service for Prometheus User Guide.

" + "documentation":"

The configuration file to use in the new scraper. For more information, see Scraper configuration in the Amazon Managed Service for Prometheus User Guide.

" }, "source":{ "shape":"Source", @@ -1134,7 +1157,7 @@ "members":{ "ampConfiguration":{ "shape":"AmpConfiguration", - "documentation":"

The Amazon Managed Service for Prometheusworkspace to send metrics to.

" + "documentation":"

The Amazon Managed Service for Prometheus workspace to send metrics to.

" } }, "documentation":"

Where to send the metrics from a scraper.

", @@ -1343,7 +1366,7 @@ "members":{ "resourceArn":{ "shape":"String", - "documentation":"

The ARN of the resource to list tages for. Must be a workspace or rule groups namespace resource.

", + "documentation":"

The ARN of the resource to list tages for. Must be a workspace, scraper, or rule groups namespace resource.

", "location":"uri", "locationName":"resourceArn" } @@ -1438,7 +1461,7 @@ "documentation":"

The ID of the workspace the logging configuration is for.

" } }, - "documentation":"

Contains information about the logging configuration.

" + "documentation":"

Contains information about the logging configuration for the workspace.

" }, "LoggingConfigurationStatus":{ "type":"structure", @@ -1617,7 +1640,7 @@ "members":{ "arn":{ "shape":"RuleGroupsNamespaceArn", - "documentation":"

The ARN of the rule groups namespace.

" + "documentation":"

The ARN of the rule groups namespace. For example, arn:aws:aps:<region>:123456789012:rulegroupsnamespace/ws-example1-1234-abcd-5678-ef90abcd1234/rulesfile1.

" }, "createdAt":{ "shape":"Timestamp", @@ -1730,12 +1753,12 @@ "documentation":"

The base 64 encoded scrape configuration file.

" } }, - "documentation":"

A scrape configuration for a scraper, base 64 encoded. For more information, see Scraper configuration in the Amazon Managed Service for Prometheus User Guide.

", + "documentation":"

A scrape configuration for a scraper, base 64 encoded. For more information, see Scraper configuration in the Amazon Managed Service for Prometheus User Guide.

", "union":true }, "ScraperAlias":{ "type":"string", - "documentation":"

A user-assigned scraper alias.

", + "documentation":"

An optional user-assigned scraper alias.

", "max":100, "min":1, "pattern":"^[0-9A-Za-z][-.0-9A-Z_a-z]*$" @@ -1764,7 +1787,7 @@ }, "arn":{ "shape":"ScraperArn", - "documentation":"

The Amazon Resource Name (ARN) of the scraper.

" + "documentation":"

The Amazon Resource Name (ARN) of the scraper. For example, arn:aws:aps:<region>:123456798012:scraper/s-example1-1234-abcd-5678-ef9012abcd34.

" }, "createdAt":{ "shape":"Timestamp", @@ -1780,15 +1803,15 @@ }, "roleArn":{ "shape":"IamRoleArn", - "documentation":"

The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to discover and collect metrics on your behalf.

" + "documentation":"

The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to discover and collect metrics on your behalf.

For example, arn:aws:iam::123456789012:role/service-role/AmazonGrafanaServiceRole-12example.

" }, "scrapeConfiguration":{ "shape":"ScrapeConfiguration", - "documentation":"

The configuration file in use by the scraper.

" + "documentation":"

The configuration in use by the scraper.

" }, "scraperId":{ "shape":"ScraperId", - "documentation":"

The ID of the scraper.

" + "documentation":"

The ID of the scraper. For example, s-example1-1234-abcd-5678-ef9012abcd34.

" }, "source":{ "shape":"Source", @@ -1846,9 +1869,11 @@ "documentation":"

State of a scraper.

", "enum":[ "CREATING", + "UPDATING", "ACTIVE", "DELETING", "CREATION_FAILED", + "UPDATE_FAILED", "DELETION_FAILED" ] }, @@ -2015,13 +2040,13 @@ "type":"map", "key":{ "shape":"TagKey", - "documentation":"

The key of the tag. May not begin with aws:.

" + "documentation":"

The key of the tag. Must not begin with aws:.

" }, "value":{ "shape":"TagValue", "documentation":"

The value of the tag.

" }, - "documentation":"

The list of tags assigned to the resource.

", + "documentation":"

A tag associated with a resource.

", "max":50, "min":0 }, @@ -2034,13 +2059,13 @@ "members":{ "resourceArn":{ "shape":"String", - "documentation":"

The ARN of the workspace or rule groups namespace to apply tags to.

", + "documentation":"

The ARN of the resource to apply tags to.

", "location":"uri", "locationName":"resourceArn" }, "tags":{ "shape":"TagMap", - "documentation":"

The list of tag keys and values to associate with the resource.

Keys may not begin with aws:.

" + "documentation":"

The list of tag keys and values to associate with the resource.

Keys must not begin with aws:.

" } } }, @@ -2096,7 +2121,7 @@ "members":{ "resourceArn":{ "shape":"String", - "documentation":"

The ARN of the workspace or rule groups namespace.

", + "documentation":"

The ARN of the resource from which to remove a tag.

", "location":"uri", "locationName":"resourceArn" }, @@ -2149,6 +2174,61 @@ }, "documentation":"

Represents the output of an UpdateLoggingConfiguration operation.

" }, + "UpdateScraperRequest":{ + "type":"structure", + "required":["scraperId"], + "members":{ + "alias":{ + "shape":"ScraperAlias", + "documentation":"

The new alias of the scraper.

" + }, + "clientToken":{ + "shape":"IdempotencyToken", + "documentation":"

A unique identifier that you can provide to ensure the idempotency of the request. Case-sensitive.

", + "idempotencyToken":true + }, + "destination":{ + "shape":"Destination", + "documentation":"

The new Amazon Managed Service for Prometheus workspace to send metrics to.

" + }, + "scrapeConfiguration":{ + "shape":"ScrapeConfiguration", + "documentation":"

Contains the base-64 encoded YAML configuration for the scraper.

For more information about configuring a scraper, see Using an Amazon Web Services managed collector in the Amazon Managed Service for Prometheus User Guide.

" + }, + "scraperId":{ + "shape":"ScraperId", + "documentation":"

The ID of the scraper to update.

", + "location":"uri", + "locationName":"scraperId" + } + } + }, + "UpdateScraperResponse":{ + "type":"structure", + "required":[ + "arn", + "scraperId", + "status" + ], + "members":{ + "arn":{ + "shape":"ScraperArn", + "documentation":"

The Amazon Resource Name (ARN) of the updated scraper.

" + }, + "scraperId":{ + "shape":"ScraperId", + "documentation":"

The ID of the updated scraper.

" + }, + "status":{ + "shape":"ScraperStatus", + "documentation":"

A structure that displays the current status of the scraper.

" + }, + "tags":{ + "shape":"TagMap", + "documentation":"

The list of tag keys and values that are associated with the scraper.

" + } + } + }, "UpdateWorkspaceAliasRequest":{ "type":"structure", "required":["workspaceId"], @@ -2258,11 +2338,11 @@ "members":{ "alias":{ "shape":"WorkspaceAlias", - "documentation":"

The alias that is assigned to this workspace to help identify it. It may not be unique.

" + "documentation":"

The alias that is assigned to this workspace to help identify it. It does not need to be unique.

" }, "arn":{ "shape":"WorkspaceArn", - "documentation":"

The ARN of the workspace.

" + "documentation":"

The ARN of the workspace. For example, arn:aws:aps:<region>:123456789012:workspace/ws-example1-1234-abcd-5678-ef90abcd1234.

" }, "createdAt":{ "shape":"Timestamp", @@ -2274,7 +2354,7 @@ }, "prometheusEndpoint":{ "shape":"Uri", - "documentation":"

The Prometheus endpoint available for this workspace.

" + "documentation":"

The Prometheus endpoint available for this workspace. For example, https://aps-workspaces.<region>.amazonaws.com/workspaces/ws-example1-1234-abcd-5678-ef90abcd1234/api/v1/.

" }, "status":{ "shape":"WorkspaceStatus", @@ -2286,7 +2366,7 @@ }, "workspaceId":{ "shape":"WorkspaceId", - "documentation":"

The unique ID for the workspace.

" + "documentation":"

The unique ID for the workspace. For example, ws-example1-1234-abcd-5678-ef90abcd1234.

" } }, "documentation":"

The full details about one Amazon Managed Service for Prometheus workspace in your account.

" @@ -2331,7 +2411,7 @@ "members":{ "alias":{ "shape":"WorkspaceAlias", - "documentation":"

The alias that is assigned to this workspace to help identify it. It may not be unique.

" + "documentation":"

The alias that is assigned to this workspace to help identify it. It does not need to be unique.

" }, "arn":{ "shape":"WorkspaceArn", diff --git a/services/amplify/pom.xml b/services/amplify/pom.xml index 1b9c7167f83d..a1436d450477 100644 --- a/services/amplify/pom.xml +++ b/services/amplify/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 amplify AWS Java SDK :: Services :: Amplify diff --git a/services/amplifybackend/pom.xml b/services/amplifybackend/pom.xml index 31c868ed1bbf..9343237c56a5 100644 --- a/services/amplifybackend/pom.xml +++ b/services/amplifybackend/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 amplifybackend AWS Java SDK :: Services :: Amplify Backend diff --git a/services/amplifyuibuilder/pom.xml b/services/amplifyuibuilder/pom.xml index 90f9ac953019..dd6920c3870b 100644 --- a/services/amplifyuibuilder/pom.xml +++ b/services/amplifyuibuilder/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 amplifyuibuilder AWS Java SDK :: Services :: Amplify UI Builder diff --git a/services/apigateway/pom.xml b/services/apigateway/pom.xml index bf3f42293f45..aac4b15c8985 100644 --- a/services/apigateway/pom.xml +++ b/services/apigateway/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 apigateway AWS Java SDK :: Services :: Amazon API Gateway diff --git a/services/apigatewaymanagementapi/pom.xml b/services/apigatewaymanagementapi/pom.xml index 05953328e1cc..55d4af77d4df 100644 --- a/services/apigatewaymanagementapi/pom.xml +++ b/services/apigatewaymanagementapi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 apigatewaymanagementapi AWS Java SDK :: Services :: ApiGatewayManagementApi diff --git a/services/apigatewayv2/pom.xml b/services/apigatewayv2/pom.xml index 8a0aea4701c2..b98d5e13846d 100644 --- a/services/apigatewayv2/pom.xml +++ b/services/apigatewayv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 apigatewayv2 AWS Java SDK :: Services :: ApiGatewayV2 diff --git a/services/appconfig/pom.xml b/services/appconfig/pom.xml index a1d3eece537a..e7fd3e2aad7a 100644 --- a/services/appconfig/pom.xml +++ b/services/appconfig/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appconfig AWS Java SDK :: Services :: AppConfig diff --git a/services/appconfigdata/pom.xml b/services/appconfigdata/pom.xml index 26c18f0aae8b..734da15c238a 100644 --- a/services/appconfigdata/pom.xml +++ b/services/appconfigdata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appconfigdata AWS Java SDK :: Services :: App Config Data diff --git a/services/appfabric/pom.xml b/services/appfabric/pom.xml index ce0938a264b8..dd5a8d8f8786 100644 --- a/services/appfabric/pom.xml +++ b/services/appfabric/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appfabric AWS Java SDK :: Services :: App Fabric diff --git a/services/appflow/pom.xml b/services/appflow/pom.xml index 063fb0f83af0..94578ca1aa18 100644 --- a/services/appflow/pom.xml +++ b/services/appflow/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appflow AWS Java SDK :: Services :: Appflow diff --git a/services/appintegrations/pom.xml b/services/appintegrations/pom.xml index 5cd7437ac1dd..e094c668db1d 100644 --- a/services/appintegrations/pom.xml +++ b/services/appintegrations/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appintegrations AWS Java SDK :: Services :: App Integrations diff --git a/services/applicationautoscaling/pom.xml b/services/applicationautoscaling/pom.xml index 66799260b95d..50b7bb2d3f62 100644 --- a/services/applicationautoscaling/pom.xml +++ b/services/applicationautoscaling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 applicationautoscaling AWS Java SDK :: Services :: AWS Application Auto Scaling diff --git a/services/applicationcostprofiler/pom.xml b/services/applicationcostprofiler/pom.xml index 22318fca83ca..837825fea4fa 100644 --- a/services/applicationcostprofiler/pom.xml +++ b/services/applicationcostprofiler/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 applicationcostprofiler AWS Java SDK :: Services :: Application Cost Profiler diff --git a/services/applicationdiscovery/pom.xml b/services/applicationdiscovery/pom.xml index 9769d20506c9..96b6fd81a961 100644 --- a/services/applicationdiscovery/pom.xml +++ b/services/applicationdiscovery/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 applicationdiscovery AWS Java SDK :: Services :: AWS Application Discovery Service diff --git a/services/applicationinsights/pom.xml b/services/applicationinsights/pom.xml index b631ea1266da..c8368d1b0c32 100644 --- a/services/applicationinsights/pom.xml +++ b/services/applicationinsights/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 applicationinsights AWS Java SDK :: Services :: Application Insights diff --git a/services/applicationsignals/pom.xml b/services/applicationsignals/pom.xml index ce45b9b26097..706008ff0d28 100644 --- a/services/applicationsignals/pom.xml +++ b/services/applicationsignals/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 applicationsignals AWS Java SDK :: Services :: Application Signals diff --git a/services/appmesh/pom.xml b/services/appmesh/pom.xml index 190b9666e645..6d5cb43039c5 100644 --- a/services/appmesh/pom.xml +++ b/services/appmesh/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appmesh AWS Java SDK :: Services :: App Mesh diff --git a/services/apprunner/pom.xml b/services/apprunner/pom.xml index 1ea1066ebe48..b47b66df2af8 100644 --- a/services/apprunner/pom.xml +++ b/services/apprunner/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 apprunner AWS Java SDK :: Services :: App Runner diff --git a/services/appstream/pom.xml b/services/appstream/pom.xml index 738d792ca32f..6f2fb6d01d75 100644 --- a/services/appstream/pom.xml +++ b/services/appstream/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 appstream AWS Java SDK :: Services :: Amazon AppStream diff --git a/services/appsync/pom.xml b/services/appsync/pom.xml index 09c3b4a7b55b..414ac61b41db 100644 --- a/services/appsync/pom.xml +++ b/services/appsync/pom.xml @@ -21,7 +21,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 appsync diff --git a/services/apptest/pom.xml b/services/apptest/pom.xml index 31aac5ac0867..84289594610c 100644 --- a/services/apptest/pom.xml +++ b/services/apptest/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 apptest AWS Java SDK :: Services :: App Test diff --git a/services/arczonalshift/pom.xml b/services/arczonalshift/pom.xml index 38dfbf323a2b..bde9b4938e5e 100644 --- a/services/arczonalshift/pom.xml +++ b/services/arczonalshift/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 arczonalshift AWS Java SDK :: Services :: ARC Zonal Shift diff --git a/services/artifact/pom.xml b/services/artifact/pom.xml index dbcbe6d0be2a..a963d268f6c0 100644 --- a/services/artifact/pom.xml +++ b/services/artifact/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 artifact AWS Java SDK :: Services :: Artifact diff --git a/services/athena/pom.xml b/services/athena/pom.xml index acf139f000ab..edbc0c7ea6a6 100644 --- a/services/athena/pom.xml +++ b/services/athena/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 athena AWS Java SDK :: Services :: Amazon Athena diff --git a/services/auditmanager/pom.xml b/services/auditmanager/pom.xml index cbcfd2e76cb2..7f24689a30da 100644 --- a/services/auditmanager/pom.xml +++ b/services/auditmanager/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 auditmanager AWS Java SDK :: Services :: Audit Manager diff --git a/services/autoscaling/pom.xml b/services/autoscaling/pom.xml index 217a4829d3bc..d57cd2e0426b 100644 --- a/services/autoscaling/pom.xml +++ b/services/autoscaling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 autoscaling AWS Java SDK :: Services :: Auto Scaling diff --git a/services/autoscaling/src/main/resources/codegen-resources/service-2.json b/services/autoscaling/src/main/resources/codegen-resources/service-2.json index 04b376024880..63edfab60a29 100644 --- a/services/autoscaling/src/main/resources/codegen-resources/service-2.json +++ b/services/autoscaling/src/main/resources/codegen-resources/service-2.json @@ -1656,6 +1656,11 @@ "type":"list", "member":{"shape":"XmlStringMaxLen255"} }, + "BakeTime":{ + "type":"integer", + "max":172800, + "min":0 + }, "BareMetal":{ "type":"string", "enum":[ @@ -3174,7 +3179,7 @@ }, "Status":{ "shape":"InstanceRefreshStatus", - "documentation":"

The current status for the instance refresh operation:

  • Pending - The request was created, but the instance refresh has not started.

  • InProgress - An instance refresh is in progress.

  • Successful - An instance refresh completed successfully.

  • Failed - An instance refresh failed to complete. You can troubleshoot using the status reason and the scaling activities.

  • Cancelling - An ongoing instance refresh is being cancelled.

  • Cancelled - The instance refresh is cancelled.

  • RollbackInProgress - An instance refresh is being rolled back.

  • RollbackFailed - The rollback failed to complete. You can troubleshoot using the status reason and the scaling activities.

  • RollbackSuccessful - The rollback completed successfully.

" + "documentation":"

The current status for the instance refresh operation:

  • Pending - The request was created, but the instance refresh has not started.

  • InProgress - An instance refresh is in progress.

  • Successful - An instance refresh completed successfully.

  • Failed - An instance refresh failed to complete. You can troubleshoot using the status reason and the scaling activities.

  • Cancelling - An ongoing instance refresh is being cancelled.

  • Cancelled - The instance refresh is cancelled.

  • RollbackInProgress - An instance refresh is being rolled back.

  • RollbackFailed - The rollback failed to complete. You can troubleshoot using the status reason and the scaling activities.

  • RollbackSuccessful - The rollback completed successfully.

  • Baking - Waiting the specified bake time after an instance refresh has finished updating instances.

" }, "StatusReason":{ "shape":"XmlStringMaxLen1023", @@ -3271,7 +3276,8 @@ "Cancelled", "RollbackInProgress", "RollbackFailed", - "RollbackSuccessful" + "RollbackSuccessful", + "Baking" ] }, "InstanceRefreshWarmPoolProgress":{ @@ -4794,6 +4800,10 @@ "MaxHealthyPercentage":{ "shape":"IntPercent100To200", "documentation":"

Specifies the maximum percentage of the group that can be in service and healthy, or pending, to support your workload when replacing instances. The value is expressed as a percentage of the desired capacity of the Auto Scaling group. Value range is 100 to 200.

If you specify MaxHealthyPercentage, you must also specify MinHealthyPercentage, and the difference between them cannot be greater than 100. A larger range increases the number of instances that can be replaced at the same time.

If you do not specify this property, the default is 100 percent, or the percentage set in the instance maintenance policy for the Auto Scaling group, if defined.

" + }, + "BakeTime":{ + "shape":"BakeTime", + "documentation":"

The amount of time, in seconds, to wait at the end of an instance refresh before the instance refresh is considered complete.

" } }, "documentation":"

Describes the preferences for an instance refresh.

" @@ -5262,7 +5272,7 @@ }, "Preferences":{ "shape":"RefreshPreferences", - "documentation":"

Sets your preferences for the instance refresh so that it performs as expected when you start it. Includes the instance warmup time, the minimum and maximum healthy percentages, and the behaviors that you want Amazon EC2 Auto Scaling to use if instances that are in Standby state or protected from scale in are found. You can also choose to enable additional features, such as the following:

  • Auto rollback

  • Checkpoints

  • CloudWatch alarms

  • Skip matching

" + "documentation":"

Sets your preferences for the instance refresh so that it performs as expected when you start it. Includes the instance warmup time, the minimum and maximum healthy percentages, and the behaviors that you want Amazon EC2 Auto Scaling to use if instances that are in Standby state or protected from scale in are found. You can also choose to enable additional features, such as the following:

  • Auto rollback

  • Checkpoints

  • CloudWatch alarms

  • Skip matching

  • Bake time

" } } }, diff --git a/services/autoscalingplans/pom.xml b/services/autoscalingplans/pom.xml index 7fdb27349e78..451a60a2ecb8 100644 --- a/services/autoscalingplans/pom.xml +++ b/services/autoscalingplans/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 autoscalingplans AWS Java SDK :: Services :: Auto Scaling Plans diff --git a/services/b2bi/pom.xml b/services/b2bi/pom.xml index 2411ef154607..2094b9872edb 100644 --- a/services/b2bi/pom.xml +++ b/services/b2bi/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 b2bi AWS Java SDK :: Services :: B2 Bi diff --git a/services/backup/pom.xml b/services/backup/pom.xml index dd0b33fbe5e8..db79be573278 100644 --- a/services/backup/pom.xml +++ b/services/backup/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 backup AWS Java SDK :: Services :: Backup diff --git a/services/backupgateway/pom.xml b/services/backupgateway/pom.xml index c4decb010fa7..707469aed0c0 100644 --- a/services/backupgateway/pom.xml +++ b/services/backupgateway/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 backupgateway AWS Java SDK :: Services :: Backup Gateway diff --git a/services/batch/pom.xml b/services/batch/pom.xml index be781912e5a0..5627c12e08db 100644 --- a/services/batch/pom.xml +++ b/services/batch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 batch AWS Java SDK :: Services :: AWS Batch diff --git a/services/batch/src/main/resources/codegen-resources/service-2.json b/services/batch/src/main/resources/codegen-resources/service-2.json index 1eac45acda47..2946cad2ef06 100644 --- a/services/batch/src/main/resources/codegen-resources/service-2.json +++ b/services/batch/src/main/resources/codegen-resources/service-2.json @@ -596,7 +596,7 @@ }, "reason":{ "shape":"String", - "documentation":"

A message to attach to the job that explains the reason for canceling it. This message is returned by future DescribeJobs operations on the job. This message is also recorded in the Batch activity logs.

" + "documentation":"

A message to attach to the job that explains the reason for canceling it. This message is returned by future DescribeJobs operations on the job. It is also recorded in the Batch activity logs.

This parameter has as limit of 1024 characters.

" } }, "documentation":"

Contains the parameters for CancelJob.

" @@ -1219,7 +1219,7 @@ }, "schedulingPolicyArn":{ "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the fair share scheduling policy. If this parameter is specified, the job queue uses a fair share scheduling policy. If this parameter isn't specified, the job queue uses a first in, first out (FIFO) scheduling policy. After a job queue is created, you can replace but can't remove the fair share scheduling policy. The format is aws:Partition:batch:Region:Account:scheduling-policy/Name . An example is aws:aws:batch:us-west-2:123456789012:scheduling-policy/MySchedulingPolicy.

" + "documentation":"

The Amazon Resource Name (ARN) of the fair share scheduling policy. Job queues that don't have a scheduling policy are scheduled in a first-in, first-out (FIFO) model. After a job queue has a scheduling policy, it can be replaced but can't be removed.

The format is aws:Partition:batch:Region:Account:scheduling-policy/Name .

An example is aws:aws:batch:us-west-2:123456789012:scheduling-policy/MySchedulingPolicy.

A job queue without a scheduling policy is scheduled as a FIFO job queue and can't have a scheduling policy added. Jobs queues with a scheduling policy can have a maximum of 500 active fair share identifiers. When the limit has been reached, submissions of any jobs that add a new fair share identifier fail.

" }, "priority":{ "shape":"Integer", @@ -1235,7 +1235,7 @@ }, "jobStateTimeLimitActions":{ "shape":"JobStateTimeLimitActions", - "documentation":"

The set of actions that Batch performs on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed.

" + "documentation":"

The set of actions that Batch performs on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. (Note: The minimum value for maxTimeSeconds is 600 (10 minutes) and its maximum value is 86,400 (24 hours).)

" } }, "documentation":"

Contains the parameters for CreateJobQueue.

" @@ -1616,7 +1616,7 @@ "members":{ "taskProperties":{ "shape":"ListEcsTaskProperties", - "documentation":"

An object that contains the properties for the Amazon ECS task definition of a job.

This object is currently limited to one element.

" + "documentation":"

An object that contains the properties for the Amazon ECS task definition of a job.

This object is currently limited to one task element. However, the task element can run up to 10 containers.

" } }, "documentation":"

An object that contains the properties for the Amazon ECS resources of a job.

" @@ -1749,6 +1749,10 @@ "shape":"String", "documentation":"

The name of a container.

" }, + "containerID":{ + "shape":"String", + "documentation":"

The ID for the container.

" + }, "exitCode":{ "shape":"Integer", "documentation":"

The exit code returned for the job attempt. A non-zero exit code is considered failed.

" @@ -1783,6 +1787,10 @@ "shape":"String", "documentation":"

The name of the pod for this job attempt.

" }, + "podNamespace":{ + "shape":"String", + "documentation":"

The namespace of the Amazon EKS cluster that the pod exists in.

" + }, "nodeName":{ "shape":"String", "documentation":"

The name of the node for this job attempt.

" @@ -2109,11 +2117,11 @@ }, "containers":{ "shape":"EksContainers", - "documentation":"

The properties of the container that's used on the Amazon EKS pod.

" + "documentation":"

The properties of the container that's used on the Amazon EKS pod.

This object is limited to 10 elements.

" }, "initContainers":{ "shape":"EksContainers", - "documentation":"

These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see Init Containers in the Kubernetes documentation.

This object is limited to 10 elements

" + "documentation":"

These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see Init Containers in the Kubernetes documentation.

This object is limited to 10 elements.

" }, "volumes":{ "shape":"EksVolumes", @@ -2189,7 +2197,7 @@ }, "initContainers":{ "shape":"EksContainerOverrideList", - "documentation":"

The overrides for the conatainers defined in the Amazon EKS pod. These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see Init Containers in the Kubernetes documentation.

This object is limited to 10 elements

" + "documentation":"

The overrides for the initContainers defined in the Amazon EKS pod. These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see Init Containers in the Kubernetes documentation.

" }, "metadata":{ "shape":"EksMetadata", @@ -3973,7 +3981,7 @@ }, "reason":{ "shape":"String", - "documentation":"

A message to attach to the job that explains the reason for canceling it. This message is returned by future DescribeJobs operations on the job. This message is also recorded in the Batch activity logs.

" + "documentation":"

A message to attach to the job that explains the reason for canceling it. This message is returned by future DescribeJobs operations on the job. It is also recorded in the Batch activity logs.

This parameter has as limit of 1024 characters.

" } }, "documentation":"

Contains the parameters for TerminateJob.

" @@ -4137,7 +4145,7 @@ }, "jobStateTimeLimitActions":{ "shape":"JobStateTimeLimitActions", - "documentation":"

The set of actions that Batch perform on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed.

" + "documentation":"

The set of actions that Batch perform on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. (Note: The minimum value for maxTimeSeconds is 600 (10 minutes) and its maximum value is 86,400 (24 hours).)

" } }, "documentation":"

Contains the parameters for UpdateJobQueue.

" diff --git a/services/bcmdataexports/pom.xml b/services/bcmdataexports/pom.xml index 22940c180395..4fc87c4fd4f2 100644 --- a/services/bcmdataexports/pom.xml +++ b/services/bcmdataexports/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 bcmdataexports AWS Java SDK :: Services :: BCM Data Exports diff --git a/services/bedrock/pom.xml b/services/bedrock/pom.xml index ec06dcbb9745..f63696e776dd 100644 --- a/services/bedrock/pom.xml +++ b/services/bedrock/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 bedrock AWS Java SDK :: Services :: Bedrock diff --git a/services/bedrockagent/pom.xml b/services/bedrockagent/pom.xml index e66db776b7e2..6f2294f3bc08 100644 --- a/services/bedrockagent/pom.xml +++ b/services/bedrockagent/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 bedrockagent AWS Java SDK :: Services :: Bedrock Agent diff --git a/services/bedrockagentruntime/pom.xml b/services/bedrockagentruntime/pom.xml index f345e19187aa..46c54a6c5177 100644 --- a/services/bedrockagentruntime/pom.xml +++ b/services/bedrockagentruntime/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 bedrockagentruntime AWS Java SDK :: Services :: Bedrock Agent Runtime diff --git a/services/bedrockruntime/pom.xml b/services/bedrockruntime/pom.xml index d29a89bde9b2..c74300ac8140 100644 --- a/services/bedrockruntime/pom.xml +++ b/services/bedrockruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 bedrockruntime AWS Java SDK :: Services :: Bedrock Runtime diff --git a/services/billingconductor/pom.xml b/services/billingconductor/pom.xml index a71170a1b84e..f60663cd3db4 100644 --- a/services/billingconductor/pom.xml +++ b/services/billingconductor/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 billingconductor AWS Java SDK :: Services :: Billingconductor diff --git a/services/braket/pom.xml b/services/braket/pom.xml index bfba7ca72e29..cdc9123d58ab 100644 --- a/services/braket/pom.xml +++ b/services/braket/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 braket AWS Java SDK :: Services :: Braket diff --git a/services/budgets/pom.xml b/services/budgets/pom.xml index 02ab0b27d741..8491875ecb5b 100644 --- a/services/budgets/pom.xml +++ b/services/budgets/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 budgets AWS Java SDK :: Services :: AWS Budgets diff --git a/services/chatbot/pom.xml b/services/chatbot/pom.xml index 417097113a50..086914613a01 100644 --- a/services/chatbot/pom.xml +++ b/services/chatbot/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chatbot AWS Java SDK :: Services :: Chatbot diff --git a/services/chime/pom.xml b/services/chime/pom.xml index 21d3396f0ad0..5abcca2c0a74 100644 --- a/services/chime/pom.xml +++ b/services/chime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chime AWS Java SDK :: Services :: Chime diff --git a/services/chimesdkidentity/pom.xml b/services/chimesdkidentity/pom.xml index c05593f1bee0..3446e3141f25 100644 --- a/services/chimesdkidentity/pom.xml +++ b/services/chimesdkidentity/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chimesdkidentity AWS Java SDK :: Services :: Chime SDK Identity diff --git a/services/chimesdkmediapipelines/pom.xml b/services/chimesdkmediapipelines/pom.xml index f8837d78122e..f8aec4ba38c1 100644 --- a/services/chimesdkmediapipelines/pom.xml +++ b/services/chimesdkmediapipelines/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chimesdkmediapipelines AWS Java SDK :: Services :: Chime SDK Media Pipelines diff --git a/services/chimesdkmeetings/pom.xml b/services/chimesdkmeetings/pom.xml index 059bc730678f..f11e3773d29c 100644 --- a/services/chimesdkmeetings/pom.xml +++ b/services/chimesdkmeetings/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chimesdkmeetings AWS Java SDK :: Services :: Chime SDK Meetings diff --git a/services/chimesdkmessaging/pom.xml b/services/chimesdkmessaging/pom.xml index d9c6832d9c26..40d6bfb5762e 100644 --- a/services/chimesdkmessaging/pom.xml +++ b/services/chimesdkmessaging/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chimesdkmessaging AWS Java SDK :: Services :: Chime SDK Messaging diff --git a/services/chimesdkvoice/pom.xml b/services/chimesdkvoice/pom.xml index b7c50e57602f..8f93e148c389 100644 --- a/services/chimesdkvoice/pom.xml +++ b/services/chimesdkvoice/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 chimesdkvoice AWS Java SDK :: Services :: Chime SDK Voice diff --git a/services/cleanrooms/pom.xml b/services/cleanrooms/pom.xml index 4cca487d4113..58bb631a4c8f 100644 --- a/services/cleanrooms/pom.xml +++ b/services/cleanrooms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cleanrooms AWS Java SDK :: Services :: Clean Rooms diff --git a/services/cleanroomsml/pom.xml b/services/cleanroomsml/pom.xml index 60391021bed3..d4e455bcb818 100644 --- a/services/cleanroomsml/pom.xml +++ b/services/cleanroomsml/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cleanroomsml AWS Java SDK :: Services :: Clean Rooms ML diff --git a/services/cloud9/pom.xml b/services/cloud9/pom.xml index a161721509fa..e0563af90664 100644 --- a/services/cloud9/pom.xml +++ b/services/cloud9/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 cloud9 diff --git a/services/cloudcontrol/pom.xml b/services/cloudcontrol/pom.xml index 073949360951..9865c1a56d16 100644 --- a/services/cloudcontrol/pom.xml +++ b/services/cloudcontrol/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudcontrol AWS Java SDK :: Services :: Cloud Control diff --git a/services/clouddirectory/pom.xml b/services/clouddirectory/pom.xml index cad2055b4a01..0b1d98e8261e 100644 --- a/services/clouddirectory/pom.xml +++ b/services/clouddirectory/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 clouddirectory AWS Java SDK :: Services :: Amazon CloudDirectory diff --git a/services/cloudformation/pom.xml b/services/cloudformation/pom.xml index d1063fdd4101..ff5e30f056eb 100644 --- a/services/cloudformation/pom.xml +++ b/services/cloudformation/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudformation AWS Java SDK :: Services :: AWS CloudFormation diff --git a/services/cloudfront/pom.xml b/services/cloudfront/pom.xml index 20f4ea68f405..890abc5ec381 100644 --- a/services/cloudfront/pom.xml +++ b/services/cloudfront/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudfront AWS Java SDK :: Services :: Amazon CloudFront diff --git a/services/cloudfrontkeyvaluestore/pom.xml b/services/cloudfrontkeyvaluestore/pom.xml index fdbb446af380..ba2aef1055aa 100644 --- a/services/cloudfrontkeyvaluestore/pom.xml +++ b/services/cloudfrontkeyvaluestore/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudfrontkeyvaluestore AWS Java SDK :: Services :: Cloud Front Key Value Store diff --git a/services/cloudhsm/pom.xml b/services/cloudhsm/pom.xml index 963eb07faae2..70c0af5ebbf7 100644 --- a/services/cloudhsm/pom.xml +++ b/services/cloudhsm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudhsm AWS Java SDK :: Services :: AWS CloudHSM diff --git a/services/cloudhsmv2/pom.xml b/services/cloudhsmv2/pom.xml index 1484882b412d..9df6899c27ad 100644 --- a/services/cloudhsmv2/pom.xml +++ b/services/cloudhsmv2/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 cloudhsmv2 diff --git a/services/cloudsearch/pom.xml b/services/cloudsearch/pom.xml index 2bf08da79170..21254f9d77a2 100644 --- a/services/cloudsearch/pom.xml +++ b/services/cloudsearch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudsearch AWS Java SDK :: Services :: Amazon CloudSearch diff --git a/services/cloudsearchdomain/pom.xml b/services/cloudsearchdomain/pom.xml index c211fd60869a..728b91f6bf5e 100644 --- a/services/cloudsearchdomain/pom.xml +++ b/services/cloudsearchdomain/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudsearchdomain AWS Java SDK :: Services :: Amazon CloudSearch Domain diff --git a/services/cloudtrail/pom.xml b/services/cloudtrail/pom.xml index 713f4208c699..6a90475358e5 100644 --- a/services/cloudtrail/pom.xml +++ b/services/cloudtrail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudtrail AWS Java SDK :: Services :: AWS CloudTrail diff --git a/services/cloudtraildata/pom.xml b/services/cloudtraildata/pom.xml index 006cc3ae3cb0..4302942b4d4e 100644 --- a/services/cloudtraildata/pom.xml +++ b/services/cloudtraildata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudtraildata AWS Java SDK :: Services :: Cloud Trail Data diff --git a/services/cloudwatch/pom.xml b/services/cloudwatch/pom.xml index 7694915475d7..7b0b822b8165 100644 --- a/services/cloudwatch/pom.xml +++ b/services/cloudwatch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudwatch AWS Java SDK :: Services :: Amazon CloudWatch diff --git a/services/cloudwatchevents/pom.xml b/services/cloudwatchevents/pom.xml index 37803629d12f..dccd5316eba8 100644 --- a/services/cloudwatchevents/pom.xml +++ b/services/cloudwatchevents/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudwatchevents AWS Java SDK :: Services :: Amazon CloudWatch Events diff --git a/services/cloudwatchlogs/pom.xml b/services/cloudwatchlogs/pom.xml index f7c18d17d263..216d7c9f32c0 100644 --- a/services/cloudwatchlogs/pom.xml +++ b/services/cloudwatchlogs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cloudwatchlogs AWS Java SDK :: Services :: Amazon CloudWatch Logs diff --git a/services/codeartifact/pom.xml b/services/codeartifact/pom.xml index a995cff926ea..86a3741da57a 100644 --- a/services/codeartifact/pom.xml +++ b/services/codeartifact/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codeartifact AWS Java SDK :: Services :: Codeartifact diff --git a/services/codebuild/pom.xml b/services/codebuild/pom.xml index 93fe3454877c..5455aa7bcb97 100644 --- a/services/codebuild/pom.xml +++ b/services/codebuild/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codebuild AWS Java SDK :: Services :: AWS Code Build diff --git a/services/codecatalyst/pom.xml b/services/codecatalyst/pom.xml index 6747efada792..e2b6c92317e0 100644 --- a/services/codecatalyst/pom.xml +++ b/services/codecatalyst/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codecatalyst AWS Java SDK :: Services :: Code Catalyst diff --git a/services/codecommit/pom.xml b/services/codecommit/pom.xml index 24da0aaefe68..f44ba0d7ba68 100644 --- a/services/codecommit/pom.xml +++ b/services/codecommit/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codecommit AWS Java SDK :: Services :: AWS CodeCommit diff --git a/services/codeconnections/pom.xml b/services/codeconnections/pom.xml index 785912a68186..85374e62cdbf 100644 --- a/services/codeconnections/pom.xml +++ b/services/codeconnections/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codeconnections AWS Java SDK :: Services :: Code Connections diff --git a/services/codedeploy/pom.xml b/services/codedeploy/pom.xml index 562d77197076..bf3e8f6c676a 100644 --- a/services/codedeploy/pom.xml +++ b/services/codedeploy/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codedeploy AWS Java SDK :: Services :: AWS CodeDeploy diff --git a/services/codeguruprofiler/pom.xml b/services/codeguruprofiler/pom.xml index 4e21cae88399..3185fbb61a4f 100644 --- a/services/codeguruprofiler/pom.xml +++ b/services/codeguruprofiler/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codeguruprofiler AWS Java SDK :: Services :: CodeGuruProfiler diff --git a/services/codegurureviewer/pom.xml b/services/codegurureviewer/pom.xml index 9a1eb6093319..dd3ecba84404 100644 --- a/services/codegurureviewer/pom.xml +++ b/services/codegurureviewer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codegurureviewer AWS Java SDK :: Services :: CodeGuru Reviewer diff --git a/services/codegurusecurity/pom.xml b/services/codegurusecurity/pom.xml index 8e91ac9319a7..75d6e252b5ff 100644 --- a/services/codegurusecurity/pom.xml +++ b/services/codegurusecurity/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codegurusecurity AWS Java SDK :: Services :: Code Guru Security diff --git a/services/codepipeline/pom.xml b/services/codepipeline/pom.xml index 380966ce455f..5cdd59ddda73 100644 --- a/services/codepipeline/pom.xml +++ b/services/codepipeline/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codepipeline AWS Java SDK :: Services :: AWS CodePipeline diff --git a/services/codestarconnections/pom.xml b/services/codestarconnections/pom.xml index a043d4443d26..4beca2950d78 100644 --- a/services/codestarconnections/pom.xml +++ b/services/codestarconnections/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codestarconnections AWS Java SDK :: Services :: CodeStar connections diff --git a/services/codestarnotifications/pom.xml b/services/codestarnotifications/pom.xml index 87aba6d3b3e0..28aa0367d26f 100644 --- a/services/codestarnotifications/pom.xml +++ b/services/codestarnotifications/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 codestarnotifications AWS Java SDK :: Services :: Codestar Notifications diff --git a/services/cognitoidentity/pom.xml b/services/cognitoidentity/pom.xml index d4ac143f10e3..d9a5659b38b5 100644 --- a/services/cognitoidentity/pom.xml +++ b/services/cognitoidentity/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cognitoidentity AWS Java SDK :: Services :: Amazon Cognito Identity diff --git a/services/cognitoidentityprovider/pom.xml b/services/cognitoidentityprovider/pom.xml index 4ef5dcf6f7fe..ca1b2d95e83a 100644 --- a/services/cognitoidentityprovider/pom.xml +++ b/services/cognitoidentityprovider/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cognitoidentityprovider AWS Java SDK :: Services :: Amazon Cognito Identity Provider Service diff --git a/services/cognitosync/pom.xml b/services/cognitosync/pom.xml index eea65666f070..5436149d031b 100644 --- a/services/cognitosync/pom.xml +++ b/services/cognitosync/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 cognitosync AWS Java SDK :: Services :: Amazon Cognito Sync diff --git a/services/comprehend/pom.xml b/services/comprehend/pom.xml index 398351be9d44..e7ff0f2f6503 100644 --- a/services/comprehend/pom.xml +++ b/services/comprehend/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 comprehend diff --git a/services/comprehendmedical/pom.xml b/services/comprehendmedical/pom.xml index 36c7a741751a..a5a18df3babf 100644 --- a/services/comprehendmedical/pom.xml +++ b/services/comprehendmedical/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 comprehendmedical AWS Java SDK :: Services :: ComprehendMedical diff --git a/services/computeoptimizer/pom.xml b/services/computeoptimizer/pom.xml index 45a55c21e3be..42d88c378cd2 100644 --- a/services/computeoptimizer/pom.xml +++ b/services/computeoptimizer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 computeoptimizer AWS Java SDK :: Services :: Compute Optimizer diff --git a/services/config/pom.xml b/services/config/pom.xml index ac5429a73926..3457fb615298 100644 --- a/services/config/pom.xml +++ b/services/config/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 config AWS Java SDK :: Services :: AWS Config diff --git a/services/connect/pom.xml b/services/connect/pom.xml index 2d11c8e622fa..b4e9ca40f8f1 100644 --- a/services/connect/pom.xml +++ b/services/connect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 connect AWS Java SDK :: Services :: Connect diff --git a/services/connectcampaigns/pom.xml b/services/connectcampaigns/pom.xml index a1de792e06e6..54ed7769904d 100644 --- a/services/connectcampaigns/pom.xml +++ b/services/connectcampaigns/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 connectcampaigns AWS Java SDK :: Services :: Connect Campaigns diff --git a/services/connectcases/pom.xml b/services/connectcases/pom.xml index 4de432b99dc6..84b31c36481b 100644 --- a/services/connectcases/pom.xml +++ b/services/connectcases/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 connectcases AWS Java SDK :: Services :: Connect Cases diff --git a/services/connectcontactlens/pom.xml b/services/connectcontactlens/pom.xml index 9ac3df269a22..84c1465650c2 100644 --- a/services/connectcontactlens/pom.xml +++ b/services/connectcontactlens/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 connectcontactlens AWS Java SDK :: Services :: Connect Contact Lens diff --git a/services/connectparticipant/pom.xml b/services/connectparticipant/pom.xml index fbb971435351..30c04951ce29 100644 --- a/services/connectparticipant/pom.xml +++ b/services/connectparticipant/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 connectparticipant AWS Java SDK :: Services :: ConnectParticipant diff --git a/services/controlcatalog/pom.xml b/services/controlcatalog/pom.xml index a970b2e3be0a..4466dbe7daba 100644 --- a/services/controlcatalog/pom.xml +++ b/services/controlcatalog/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 controlcatalog AWS Java SDK :: Services :: Control Catalog diff --git a/services/controltower/pom.xml b/services/controltower/pom.xml index c4cbf39bf26f..a96b93f14ddc 100644 --- a/services/controltower/pom.xml +++ b/services/controltower/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 controltower AWS Java SDK :: Services :: Control Tower diff --git a/services/costandusagereport/pom.xml b/services/costandusagereport/pom.xml index b007d6894d30..e3feec8d49d4 100644 --- a/services/costandusagereport/pom.xml +++ b/services/costandusagereport/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 costandusagereport AWS Java SDK :: Services :: AWS Cost and Usage Report diff --git a/services/costexplorer/pom.xml b/services/costexplorer/pom.xml index 30cff157bbd2..d5094e739b9f 100644 --- a/services/costexplorer/pom.xml +++ b/services/costexplorer/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 costexplorer diff --git a/services/costoptimizationhub/pom.xml b/services/costoptimizationhub/pom.xml index ce32db8d4a8b..beba23a3613e 100644 --- a/services/costoptimizationhub/pom.xml +++ b/services/costoptimizationhub/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 costoptimizationhub AWS Java SDK :: Services :: Cost Optimization Hub diff --git a/services/customerprofiles/pom.xml b/services/customerprofiles/pom.xml index 9ba04049f975..ed84c5626971 100644 --- a/services/customerprofiles/pom.xml +++ b/services/customerprofiles/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 customerprofiles AWS Java SDK :: Services :: Customer Profiles diff --git a/services/databasemigration/pom.xml b/services/databasemigration/pom.xml index 5d23156e222f..c65ce6221fb2 100644 --- a/services/databasemigration/pom.xml +++ b/services/databasemigration/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 databasemigration AWS Java SDK :: Services :: AWS Database Migration Service diff --git a/services/databrew/pom.xml b/services/databrew/pom.xml index 08651c786e20..eb62a2598227 100644 --- a/services/databrew/pom.xml +++ b/services/databrew/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 databrew AWS Java SDK :: Services :: Data Brew diff --git a/services/dataexchange/pom.xml b/services/dataexchange/pom.xml index 248cd026de87..f174baf81314 100644 --- a/services/dataexchange/pom.xml +++ b/services/dataexchange/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 dataexchange AWS Java SDK :: Services :: DataExchange diff --git a/services/datapipeline/pom.xml b/services/datapipeline/pom.xml index a2e9effa876b..d33c9fa717ee 100644 --- a/services/datapipeline/pom.xml +++ b/services/datapipeline/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 datapipeline AWS Java SDK :: Services :: AWS Data Pipeline diff --git a/services/datasync/pom.xml b/services/datasync/pom.xml index b40091bef0f4..a909db73bc55 100644 --- a/services/datasync/pom.xml +++ b/services/datasync/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 datasync AWS Java SDK :: Services :: DataSync diff --git a/services/datazone/pom.xml b/services/datazone/pom.xml index 64150b3b8f36..da2bd2dedd83 100644 --- a/services/datazone/pom.xml +++ b/services/datazone/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 datazone AWS Java SDK :: Services :: Data Zone diff --git a/services/dax/pom.xml b/services/dax/pom.xml index ad7fb2ea43bc..80f975611640 100644 --- a/services/dax/pom.xml +++ b/services/dax/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 dax AWS Java SDK :: Services :: Amazon DynamoDB Accelerator (DAX) diff --git a/services/deadline/pom.xml b/services/deadline/pom.xml index 2a8a325635d5..77038fa33172 100644 --- a/services/deadline/pom.xml +++ b/services/deadline/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 deadline AWS Java SDK :: Services :: Deadline diff --git a/services/detective/pom.xml b/services/detective/pom.xml index 33b597ba43a7..71c7e63081ba 100644 --- a/services/detective/pom.xml +++ b/services/detective/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 detective AWS Java SDK :: Services :: Detective diff --git a/services/devicefarm/pom.xml b/services/devicefarm/pom.xml index fc988542359d..c84ef893fb24 100644 --- a/services/devicefarm/pom.xml +++ b/services/devicefarm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 devicefarm AWS Java SDK :: Services :: AWS Device Farm diff --git a/services/devopsguru/pom.xml b/services/devopsguru/pom.xml index b9db02a78b21..dbc386ccd444 100644 --- a/services/devopsguru/pom.xml +++ b/services/devopsguru/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 devopsguru AWS Java SDK :: Services :: Dev Ops Guru diff --git a/services/directconnect/pom.xml b/services/directconnect/pom.xml index 158293faf572..38f5620ed4f7 100644 --- a/services/directconnect/pom.xml +++ b/services/directconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 directconnect AWS Java SDK :: Services :: AWS Direct Connect diff --git a/services/directory/pom.xml b/services/directory/pom.xml index 2b21006e35ea..fcd57f52e479 100644 --- a/services/directory/pom.xml +++ b/services/directory/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 directory AWS Java SDK :: Services :: AWS Directory Service diff --git a/services/directoryservicedata/pom.xml b/services/directoryservicedata/pom.xml index 3ff730b66547..740fb4e16812 100644 --- a/services/directoryservicedata/pom.xml +++ b/services/directoryservicedata/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 directoryservicedata AWS Java SDK :: Services :: Directory Service Data diff --git a/services/dlm/pom.xml b/services/dlm/pom.xml index e72bfe0c8f83..ff5e064dab36 100644 --- a/services/dlm/pom.xml +++ b/services/dlm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 dlm AWS Java SDK :: Services :: DLM diff --git a/services/docdb/pom.xml b/services/docdb/pom.xml index 2ce36b3b0a11..00afd90f894f 100644 --- a/services/docdb/pom.xml +++ b/services/docdb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 docdb AWS Java SDK :: Services :: DocDB diff --git a/services/docdbelastic/pom.xml b/services/docdbelastic/pom.xml index 3abb36bb5ea3..8b29b0d0ac4a 100644 --- a/services/docdbelastic/pom.xml +++ b/services/docdbelastic/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 docdbelastic AWS Java SDK :: Services :: Doc DB Elastic diff --git a/services/drs/pom.xml b/services/drs/pom.xml index b48f6369309f..2cd9a1975be9 100644 --- a/services/drs/pom.xml +++ b/services/drs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 drs AWS Java SDK :: Services :: Drs diff --git a/services/dynamodb/pom.xml b/services/dynamodb/pom.xml index 25ac3bbeb589..b7ed27309fc4 100644 --- a/services/dynamodb/pom.xml +++ b/services/dynamodb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 dynamodb AWS Java SDK :: Services :: Amazon DynamoDB diff --git a/services/ebs/pom.xml b/services/ebs/pom.xml index 87012955e378..685793df1226 100644 --- a/services/ebs/pom.xml +++ b/services/ebs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ebs AWS Java SDK :: Services :: EBS diff --git a/services/ec2/pom.xml b/services/ec2/pom.xml index b64c2d97b333..f1f68df59718 100644 --- a/services/ec2/pom.xml +++ b/services/ec2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ec2 AWS Java SDK :: Services :: Amazon EC2 diff --git a/services/ec2instanceconnect/pom.xml b/services/ec2instanceconnect/pom.xml index b42e70821b97..216891daa0cb 100644 --- a/services/ec2instanceconnect/pom.xml +++ b/services/ec2instanceconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ec2instanceconnect AWS Java SDK :: Services :: EC2 Instance Connect diff --git a/services/ecr/pom.xml b/services/ecr/pom.xml index 451dd1f22276..1e84dda8f4ce 100644 --- a/services/ecr/pom.xml +++ b/services/ecr/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ecr AWS Java SDK :: Services :: Amazon EC2 Container Registry diff --git a/services/ecrpublic/pom.xml b/services/ecrpublic/pom.xml index 5397c7351415..a21710a055bf 100644 --- a/services/ecrpublic/pom.xml +++ b/services/ecrpublic/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ecrpublic AWS Java SDK :: Services :: ECR PUBLIC diff --git a/services/ecs/pom.xml b/services/ecs/pom.xml index 31f36bcfd54f..f9a8162e3ea1 100644 --- a/services/ecs/pom.xml +++ b/services/ecs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ecs AWS Java SDK :: Services :: Amazon EC2 Container Service diff --git a/services/efs/pom.xml b/services/efs/pom.xml index cbc4f02cf93c..a50c62949aea 100644 --- a/services/efs/pom.xml +++ b/services/efs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 efs AWS Java SDK :: Services :: Amazon Elastic File System diff --git a/services/eks/pom.xml b/services/eks/pom.xml index da27cdc274a9..5d9a2f26c753 100644 --- a/services/eks/pom.xml +++ b/services/eks/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 eks AWS Java SDK :: Services :: EKS diff --git a/services/eksauth/pom.xml b/services/eksauth/pom.xml index a94e48933e47..cef534a652d4 100644 --- a/services/eksauth/pom.xml +++ b/services/eksauth/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 eksauth AWS Java SDK :: Services :: EKS Auth diff --git a/services/elasticache/pom.xml b/services/elasticache/pom.xml index 15c1289cbec5..8a026515da63 100644 --- a/services/elasticache/pom.xml +++ b/services/elasticache/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticache AWS Java SDK :: Services :: Amazon ElastiCache diff --git a/services/elasticbeanstalk/pom.xml b/services/elasticbeanstalk/pom.xml index 9e3e13924a20..e88649fdae13 100644 --- a/services/elasticbeanstalk/pom.xml +++ b/services/elasticbeanstalk/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticbeanstalk AWS Java SDK :: Services :: AWS Elastic Beanstalk diff --git a/services/elasticinference/pom.xml b/services/elasticinference/pom.xml index ca1c4fd4a283..2784e025a528 100644 --- a/services/elasticinference/pom.xml +++ b/services/elasticinference/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticinference AWS Java SDK :: Services :: Elastic Inference diff --git a/services/elasticloadbalancing/pom.xml b/services/elasticloadbalancing/pom.xml index 264b226f90a7..8a92fd60a831 100644 --- a/services/elasticloadbalancing/pom.xml +++ b/services/elasticloadbalancing/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticloadbalancing AWS Java SDK :: Services :: Elastic Load Balancing diff --git a/services/elasticloadbalancingv2/pom.xml b/services/elasticloadbalancingv2/pom.xml index 1d723132f55f..5c0b8d2d07c8 100644 --- a/services/elasticloadbalancingv2/pom.xml +++ b/services/elasticloadbalancingv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticloadbalancingv2 AWS Java SDK :: Services :: Elastic Load Balancing V2 diff --git a/services/elasticloadbalancingv2/src/main/resources/codegen-resources/service-2.json b/services/elasticloadbalancingv2/src/main/resources/codegen-resources/service-2.json index 047b643e0ad0..28d71382afe9 100644 --- a/services/elasticloadbalancingv2/src/main/resources/codegen-resources/service-2.json +++ b/services/elasticloadbalancingv2/src/main/resources/codegen-resources/service-2.json @@ -787,7 +787,7 @@ {"shape":"InvalidTargetException"}, {"shape":"TooManyRegistrationsForTargetIdException"} ], - "documentation":"

Registers the specified targets with the specified target group.

If the target is an EC2 instance, it must be in the running state when you register it.

By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports.

With a Network Load Balancer, you cannot register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address.

" + "documentation":"

Registers the specified targets with the specified target group.

If the target is an EC2 instance, it must be in the running state when you register it.

By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports.

With a Network Load Balancer, you can't register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address.

" }, "RemoveListenerCertificates":{ "name":"RemoveListenerCertificates", @@ -1287,6 +1287,10 @@ "LoadBalancerAddresses":{ "shape":"LoadBalancerAddresses", "documentation":"

[Network Load Balancers] If you need static IP addresses for your load balancer, you can specify one Elastic IP address per Availability Zone when you create an internal-facing load balancer. For internal load balancers, you can specify a private IP address from the IPv4 range of the subnet.

" + }, + "SourceNatIpv6Prefixes":{ + "shape":"SourceNatIpv6Prefixes", + "documentation":"

[Network Load Balancers with UDP listeners] The IPv6 prefixes to use for source NAT. For each subnet, specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or auto_assigned to use an IPv6 prefix selected at random from the subnet CIDR block.

" } }, "documentation":"

Information about an Availability Zone.

" @@ -1388,11 +1392,11 @@ }, "Protocol":{ "shape":"ProtocolEnum", - "documentation":"

The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can’t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer.

" + "documentation":"

The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can’t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer.

" }, "Port":{ "shape":"Port", - "documentation":"

The port on which the load balancer is listening. You cannot specify a port for a Gateway Load Balancer.

" + "documentation":"

The port on which the load balancer is listening. You can't specify a port for a Gateway Load Balancer.

" }, "SslPolicy":{ "shape":"SslPolicyName", @@ -1439,11 +1443,11 @@ }, "Subnets":{ "shape":"Subnets", - "documentation":"

The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.

[Application Load Balancers] You must specify subnets from at least two Availability Zones.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" + "documentation":"

The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.

[Application Load Balancers] You must specify subnets from at least two Availability Zones.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" }, "SubnetMappings":{ "shape":"SubnetMappings", - "documentation":"

The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.

[Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.

" + "documentation":"

The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.

[Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.

" }, "SecurityGroups":{ "shape":"SecurityGroups", @@ -1451,7 +1455,7 @@ }, "Scheme":{ "shape":"LoadBalancerSchemeEnum", - "documentation":"

The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.

The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.

The default is an Internet-facing load balancer.

You cannot specify a scheme for a Gateway Load Balancer.

" + "documentation":"

The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.

The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.

The default is an Internet-facing load balancer.

You can't specify a scheme for a Gateway Load Balancer.

" }, "Tags":{ "shape":"TagList", @@ -1463,11 +1467,15 @@ }, "IpAddressType":{ "shape":"IpAddressType", - "documentation":"

Note: Internal load balancers must use the ipv4 IP address type.

[Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).

[Network Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener.

[Gateway Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses).

" + "documentation":"

The IP address type. Internal load balancers must use ipv4.

[Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses).

[Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses).

" }, "CustomerOwnedIpv4Pool":{ "shape":"CustomerOwnedIpv4Pool", "documentation":"

[Application Load Balancers on Outposts] The ID of the customer-owned address pool (CoIP pool).

" + }, + "EnablePrefixForIpv6SourceNat":{ + "shape":"EnablePrefixForIpv6SourceNatEnum", + "documentation":"

[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off.

" } } }, @@ -1554,7 +1562,7 @@ }, "HealthCheckEnabled":{ "shape":"HealthCheckEnabled", - "documentation":"

Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and cannot be disabled.

" + "documentation":"

Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and can't be disabled.

" }, "HealthCheckPath":{ "shape":"Path", @@ -1590,7 +1598,7 @@ }, "IpAddressType":{ "shape":"TargetGroupIpAddressTypeEnum", - "documentation":"

The type of IP address used for this target group. The possible values are ipv4 and ipv6. This is an optional parameter. If not specified, the IP address type defaults to ipv4.

" + "documentation":"

The IP address type. The default value is ipv4.

" } } }, @@ -1613,7 +1621,7 @@ "members":{ "Name":{ "shape":"TrustStoreName", - "documentation":"

The name of the trust store.

This name must be unique per region and cannot be changed after creation.

" + "documentation":"

The name of the trust store.

This name must be unique per region and can't be changed after creation.

" }, "CaCertificatesBundleS3Bucket":{ "shape":"S3Bucket", @@ -1654,7 +1662,7 @@ "type":"structure", "members":{ }, - "documentation":"

The specified association cannot be within the same account.

", + "documentation":"

The specified association can't be within the same account.

", "error":{ "code":"DeleteAssociationSameAccount", "httpStatusCode":400, @@ -2309,6 +2317,13 @@ }, "exception":true }, + "EnablePrefixForIpv6SourceNatEnum":{ + "type":"string", + "enum":[ + "on", + "off" + ] + }, "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic":{"type":"string"}, "EnforceSecurityGroupInboundRulesOnPrivateLinkTrafficEnum":{ "type":"string", @@ -2775,7 +2790,7 @@ }, "IpAddressType":{ "shape":"IpAddressType", - "documentation":"

[Application Load Balancers] The type of IP addresses used for public or private connections by the subnets attached to your load balancer. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).

[Network Load Balancers and Gateway Load Balancers] The type of IP addresses used for public or private connections by the subnets attached to your load balancer. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses).

" + "documentation":"

The type of IP addresses used for public or private connections by the subnets attached to your load balancer.

[Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses).

[Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses).

" }, "CustomerOwnedIpv4Pool":{ "shape":"CustomerOwnedIpv4Pool", @@ -2784,6 +2799,10 @@ "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic":{ "shape":"EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic", "documentation":"

Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through Amazon Web Services PrivateLink.

" + }, + "EnablePrefixForIpv6SourceNat":{ + "shape":"EnablePrefixForIpv6SourceNatEnum", + "documentation":"

[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off.

" } }, "documentation":"

Information about a load balancer.

" @@ -2824,7 +2843,7 @@ "members":{ "Key":{ "shape":"LoadBalancerAttributeKey", - "documentation":"

The name of the attribute.

The following attributes are supported by all load balancers:

  • deletion_protection.enabled - Indicates whether deletion protection is enabled. The value is true or false. The default is false.

  • load_balancing.cross_zone.enabled - Indicates whether cross-zone load balancing is enabled. The possible values are true and false. The default for Network Load Balancers and Gateway Load Balancers is false. The default for Application Load Balancers is true, and cannot be changed.

The following attributes are supported by both Application Load Balancers and Network Load Balancers:

  • access_logs.s3.enabled - Indicates whether access logs are enabled. The value is true or false. The default is false.

  • access_logs.s3.bucket - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.

  • access_logs.s3.prefix - The prefix for the location in the S3 bucket for the access logs.

  • ipv6.deny_all_igw_traffic - Blocks internet gateway (IGW) access to the load balancer. It is set to false for internet-facing load balancers and true for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.

The following attributes are supported by only Application Load Balancers:

  • idle_timeout.timeout_seconds - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.

  • client_keep_alive.seconds - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.

  • connection_logs.s3.enabled - Indicates whether connection logs are enabled. The value is true or false. The default is false.

  • connection_logs.s3.bucket - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.

  • connection_logs.s3.prefix - The prefix for the location in the S3 bucket for the connection logs.

  • routing.http.desync_mitigation_mode - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are monitor, defensive, and strictest. The default is defensive.

  • routing.http.drop_invalid_header_fields.enabled - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (true) or routed to targets (false). The default is false.

  • routing.http.preserve_host_header.enabled - Indicates whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. The possible values are true and false. The default is false.

  • routing.http.x_amzn_tls_version_and_cipher_suite.enabled - Indicates whether the two headers (x-amzn-tls-version and x-amzn-tls-cipher-suite), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The x-amzn-tls-version header has information about the TLS protocol version negotiated with the client, and the x-amzn-tls-cipher-suite header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are true and false. The default is false.

  • routing.http.xff_client_port.enabled - Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer. The possible values are true and false. The default is false.

  • routing.http.xff_header_processing.mode - Enables you to modify, preserve, or remove the X-Forwarded-For header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are append, preserve, and remove. The default is append.

    • If the value is append, the Application Load Balancer adds the client IP address (of the last hop) to the X-Forwarded-For header in the HTTP request before it sends it to targets.

    • If the value is preserve the Application Load Balancer preserves the X-Forwarded-For header in the HTTP request, and sends it to targets without any change.

    • If the value is remove, the Application Load Balancer removes the X-Forwarded-For header in the HTTP request before it sends it to targets.

  • routing.http2.enabled - Indicates whether HTTP/2 is enabled. The possible values are true and false. The default is true. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.

  • waf.fail_open.enabled - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to Amazon Web Services WAF. The possible values are true and false. The default is false.

The following attributes are supported by only Network Load Balancers:

  • dns_record.client_routing_policy - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are availability_zone_affinity with 100 percent zonal affinity, partial_availability_zone_affinity with 85 percent zonal affinity, and any_availability_zone with 0 percent zonal affinity.

  • zonal_shift.config.enabled - Indicates whether zonal shift is enabled. The possible values are true and false. The default is false.

" + "documentation":"

The name of the attribute.

The following attributes are supported by all load balancers:

  • deletion_protection.enabled - Indicates whether deletion protection is enabled. The value is true or false. The default is false.

  • load_balancing.cross_zone.enabled - Indicates whether cross-zone load balancing is enabled. The possible values are true and false. The default for Network Load Balancers and Gateway Load Balancers is false. The default for Application Load Balancers is true, and can't be changed.

The following attributes are supported by both Application Load Balancers and Network Load Balancers:

  • access_logs.s3.enabled - Indicates whether access logs are enabled. The value is true or false. The default is false.

  • access_logs.s3.bucket - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.

  • access_logs.s3.prefix - The prefix for the location in the S3 bucket for the access logs.

  • ipv6.deny_all_igw_traffic - Blocks internet gateway (IGW) access to the load balancer. It is set to false for internet-facing load balancers and true for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.

The following attributes are supported by only Application Load Balancers:

  • idle_timeout.timeout_seconds - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.

  • client_keep_alive.seconds - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.

  • connection_logs.s3.enabled - Indicates whether connection logs are enabled. The value is true or false. The default is false.

  • connection_logs.s3.bucket - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.

  • connection_logs.s3.prefix - The prefix for the location in the S3 bucket for the connection logs.

  • routing.http.desync_mitigation_mode - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are monitor, defensive, and strictest. The default is defensive.

  • routing.http.drop_invalid_header_fields.enabled - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (true) or routed to targets (false). The default is false.

  • routing.http.preserve_host_header.enabled - Indicates whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. The possible values are true and false. The default is false.

  • routing.http.x_amzn_tls_version_and_cipher_suite.enabled - Indicates whether the two headers (x-amzn-tls-version and x-amzn-tls-cipher-suite), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The x-amzn-tls-version header has information about the TLS protocol version negotiated with the client, and the x-amzn-tls-cipher-suite header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are true and false. The default is false.

  • routing.http.xff_client_port.enabled - Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer. The possible values are true and false. The default is false.

  • routing.http.xff_header_processing.mode - Enables you to modify, preserve, or remove the X-Forwarded-For header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are append, preserve, and remove. The default is append.

    • If the value is append, the Application Load Balancer adds the client IP address (of the last hop) to the X-Forwarded-For header in the HTTP request before it sends it to targets.

    • If the value is preserve the Application Load Balancer preserves the X-Forwarded-For header in the HTTP request, and sends it to targets without any change.

    • If the value is remove, the Application Load Balancer removes the X-Forwarded-For header in the HTTP request before it sends it to targets.

  • routing.http2.enabled - Indicates whether HTTP/2 is enabled. The possible values are true and false. The default is true. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.

  • waf.fail_open.enabled - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to Amazon Web Services WAF. The possible values are true and false. The default is false.

The following attributes are supported by only Network Load Balancers:

  • dns_record.client_routing_policy - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are availability_zone_affinity with 100 percent zonal affinity, partial_availability_zone_affinity with 85 percent zonal affinity, and any_availability_zone with 0 percent zonal affinity.

  • zonal_shift.config.enabled - Indicates whether zonal shift is enabled. The possible values are true and false. The default is false.

" }, "Value":{ "shape":"LoadBalancerAttributeValue", @@ -2967,11 +2986,11 @@ }, "Port":{ "shape":"Port", - "documentation":"

The port for connections from clients to the load balancer. You cannot specify a port for a Gateway Load Balancer.

" + "documentation":"

The port for connections from clients to the load balancer. You can't specify a port for a Gateway Load Balancer.

" }, "Protocol":{ "shape":"ProtocolEnum", - "documentation":"

The protocol for connections from clients to the load balancer. Application Load Balancers support the HTTP and HTTPS protocols. Network Load Balancers support the TCP, TLS, UDP, and TCP_UDP protocols. You can’t change the protocol to UDP or TCP_UDP if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer.

" + "documentation":"

The protocol for connections from clients to the load balancer. Application Load Balancers support the HTTP and HTTPS protocols. Network Load Balancers support the TCP, TLS, UDP, and TCP_UDP protocols. You can’t change the protocol to UDP or TCP_UDP if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer.

" }, "SslPolicy":{ "shape":"SslPolicyName", @@ -3300,7 +3319,7 @@ "members":{ "Protocol":{ "shape":"RedirectActionProtocol", - "documentation":"

The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.

" + "documentation":"

The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP.

" }, "Port":{ "shape":"RedirectActionPort", @@ -3595,7 +3614,7 @@ "documentation":"

Information for a source IP condition. Specify only when Field is source-ip.

" } }, - "documentation":"

Information about a condition for a rule.

Each rule can optionally include up to one of each of the following conditions: http-request-method, host-header, path-pattern, and source-ip. Each rule can also optionally include one or more of each of the following conditions: http-header and query-string. Note that the value for a condition cannot be empty.

For more information, see Quotas for your Application Load Balancers.

" + "documentation":"

Information about a condition for a rule.

Each rule can optionally include up to one of each of the following conditions: http-request-method, host-header, path-pattern, and source-ip. Each rule can also optionally include one or more of each of the following conditions: http-header and query-string. Note that the value for a condition can't be empty.

For more information, see Quotas for your Application Load Balancers.

" }, "RuleConditionList":{ "type":"list", @@ -3673,7 +3692,7 @@ }, "IpAddressType":{ "shape":"IpAddressType", - "documentation":"

Note: Internal load balancers must use the ipv4 IP address type.

[Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).

Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.

[Network Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener.

[Gateway Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses).

" + "documentation":"

The IP address type. Internal load balancers must use ipv4.

[Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses).

Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.

[Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses).

" } } }, @@ -3749,15 +3768,19 @@ }, "Subnets":{ "shape":"Subnets", - "documentation":"

The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.

[Application Load Balancers] You must specify subnets from at least two Availability Zones.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" + "documentation":"

The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.

[Application Load Balancers] You must specify subnets from at least two Availability Zones.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" }, "SubnetMappings":{ "shape":"SubnetMappings", - "documentation":"

The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.

[Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" + "documentation":"

The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.

[Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.

[Application Load Balancers on Outposts] You must specify one Outpost subnet.

[Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.

[Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.

[Gateway Load Balancers] You can specify subnets from one or more Availability Zones.

" }, "IpAddressType":{ "shape":"IpAddressType", - "documentation":"

[Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).

[Network Load Balancers] The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener.

[Gateway Load Balancers] The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses).

" + "documentation":"

The IP address type.

[Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses).

[Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses).

" + }, + "EnablePrefixForIpv6SourceNat":{ + "shape":"EnablePrefixForIpv6SourceNatEnum", + "documentation":"

[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off.

" } } }, @@ -3770,7 +3793,11 @@ }, "IpAddressType":{ "shape":"IpAddressType", - "documentation":"

[Application Load Balancers] The IP address type.

[Network Load Balancers] The IP address type.

[Gateway Load Balancers] The IP address type.

" + "documentation":"

The IP address type.

" + }, + "EnablePrefixForIpv6SourceNat":{ + "shape":"EnablePrefixForIpv6SourceNatEnum", + "documentation":"

[Network Load Balancers] Indicates whether to use an IPv6 prefix from each subnet for source NAT.

" } } }, @@ -3784,6 +3811,11 @@ }, "documentation":"

Information about a source IP condition.

You can use this condition to route based on the IP address of the source that connects to the load balancer. If a client is behind a proxy, this is the IP address of the proxy not the IP address of the client.

" }, + "SourceNatIpv6Prefix":{"type":"string"}, + "SourceNatIpv6Prefixes":{ + "type":"list", + "member":{"shape":"SourceNatIpv6Prefix"} + }, "SslPolicies":{ "type":"list", "member":{"shape":"SslPolicy"} @@ -3842,6 +3874,10 @@ "IPv6Address":{ "shape":"IPv6Address", "documentation":"

[Network Load Balancers] The IPv6 address.

" + }, + "SourceNatIpv6Prefix":{ + "shape":"SourceNatIpv6Prefix", + "documentation":"

[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or auto_assigned to use an IPv6 prefix selected at random from the subnet CIDR block.

" } }, "documentation":"

Information about a subnet mapping.

" @@ -4034,7 +4070,7 @@ }, "IpAddressType":{ "shape":"TargetGroupIpAddressTypeEnum", - "documentation":"

The type of IP address used for this target group. The possible values are ipv4 and ipv6. This is an optional parameter. If not specified, the IP address type defaults to ipv4.

" + "documentation":"

The IP address type. The default value is ipv4.

" } }, "documentation":"

Information about a target group.

" @@ -4061,7 +4097,7 @@ "members":{ "Key":{ "shape":"TargetGroupAttributeKey", - "documentation":"

The name of the attribute.

The following attributes are supported by all load balancers:

  • deregistration_delay.timeout_seconds - The amount of time, in seconds, for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds. If the target is a Lambda function, this attribute is not supported.

  • stickiness.enabled - Indicates whether target stickiness is enabled. The value is true or false. The default is false.

  • stickiness.type - Indicates the type of stickiness. The possible values are:

    • lb_cookie and app_cookie for Application Load Balancers.

    • source_ip for Network Load Balancers.

    • source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers.

The following attributes are supported by Application Load Balancers and Network Load Balancers:

  • load_balancing.cross_zone.enabled - Indicates whether cross zone load balancing is enabled. The value is true, false or use_load_balancer_configuration. The default is use_load_balancer_configuration.

  • target_group_health.dns_failover.minimum_healthy_targets.count - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to the maximum number of targets. The default is off.

  • target_group_health.dns_failover.minimum_healthy_targets.percentage - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to 100. The default is off.

  • target_group_health.unhealthy_state_routing.minimum_healthy_targets.count - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.

  • target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are off or an integer from 1 to 100. The default is off.

The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address:

  • load_balancing.algorithm.type - The load balancing algorithm determines how the load balancer selects targets when routing requests. The value is round_robin, least_outstanding_requests, or weighted_random. The default is round_robin.

  • load_balancing.algorithm.anomaly_mitigation - Only available when load_balancing.algorithm.type is weighted_random. Indicates whether anomaly mitigation is enabled. The value is on or off. The default is off.

  • slow_start.duration_seconds - The time period, in seconds, during which a newly registered target receives an increasing share of the traffic to the target group. After this time period ends, the target receives its full share of traffic. The range is 30-900 seconds (15 minutes). The default is 0 seconds (disabled).

  • stickiness.app_cookie.cookie_name - Indicates the name of the application-based cookie. Names that start with the following prefixes are not allowed: AWSALB, AWSALBAPP, and AWSALBTG; they're reserved for use by the load balancer.

  • stickiness.app_cookie.duration_seconds - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the application-based cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).

  • stickiness.lb_cookie.duration_seconds - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).

The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function:

  • lambda.multi_value_headers.enabled - Indicates whether the request and response headers that are exchanged between the load balancer and the Lambda function include arrays of values or strings. The value is true or false. The default is false. If the value is false and the request contains a duplicate header field name or query parameter key, the load balancer uses the last value sent by the client.

The following attributes are supported only by Network Load Balancers:

  • deregistration_delay.connection_termination.enabled - Indicates whether the load balancer terminates connections at the end of the deregistration timeout. The value is true or false. For new UDP/TCP_UDP target groups the default is true. Otherwise, the default is false.

  • preserve_client_ip.enabled - Indicates whether client IP preservation is enabled. The value is true or false. The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation cannot be disabled for UDP and TCP_UDP target groups.

  • proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is enabled. The value is true or false. The default is false.

  • target_health_state.unhealthy.connection_termination.enabled - Indicates whether the load balancer terminates connections to unhealthy targets. The value is true or false. The default is true.

  • target_health_state.unhealthy.draining_interval_seconds - The amount of time for Elastic Load Balancing to wait before changing the state of an unhealthy target from unhealthy.draining to unhealthy. The range is 0-360000 seconds. The default value is 0 seconds.

    Note: This attribute can only be configured when target_health_state.unhealthy.connection_termination.enabled is false.

The following attributes are supported only by Gateway Load Balancers:

  • target_failover.on_deregistration - Indicates how the Gateway Load Balancer handles existing flows when a target is deregistered. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) can't be set independently. The value you set for both attributes must be the same.

  • target_failover.on_unhealthy - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) cannot be set independently. The value you set for both attributes must be the same.

" + "documentation":"

The name of the attribute.

The following attributes are supported by all load balancers:

  • deregistration_delay.timeout_seconds - The amount of time, in seconds, for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds. If the target is a Lambda function, this attribute is not supported.

  • stickiness.enabled - Indicates whether target stickiness is enabled. The value is true or false. The default is false.

  • stickiness.type - Indicates the type of stickiness. The possible values are:

    • lb_cookie and app_cookie for Application Load Balancers.

    • source_ip for Network Load Balancers.

    • source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers.

The following attributes are supported by Application Load Balancers and Network Load Balancers:

  • load_balancing.cross_zone.enabled - Indicates whether cross zone load balancing is enabled. The value is true, false or use_load_balancer_configuration. The default is use_load_balancer_configuration.

  • target_group_health.dns_failover.minimum_healthy_targets.count - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to the maximum number of targets. The default is off.

  • target_group_health.dns_failover.minimum_healthy_targets.percentage - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to 100. The default is off.

  • target_group_health.unhealthy_state_routing.minimum_healthy_targets.count - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.

  • target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are off or an integer from 1 to 100. The default is off.

The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address:

  • load_balancing.algorithm.type - The load balancing algorithm determines how the load balancer selects targets when routing requests. The value is round_robin, least_outstanding_requests, or weighted_random. The default is round_robin.

  • load_balancing.algorithm.anomaly_mitigation - Only available when load_balancing.algorithm.type is weighted_random. Indicates whether anomaly mitigation is enabled. The value is on or off. The default is off.

  • slow_start.duration_seconds - The time period, in seconds, during which a newly registered target receives an increasing share of the traffic to the target group. After this time period ends, the target receives its full share of traffic. The range is 30-900 seconds (15 minutes). The default is 0 seconds (disabled).

  • stickiness.app_cookie.cookie_name - Indicates the name of the application-based cookie. Names that start with the following prefixes are not allowed: AWSALB, AWSALBAPP, and AWSALBTG; they're reserved for use by the load balancer.

  • stickiness.app_cookie.duration_seconds - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the application-based cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).

  • stickiness.lb_cookie.duration_seconds - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).

The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function:

  • lambda.multi_value_headers.enabled - Indicates whether the request and response headers that are exchanged between the load balancer and the Lambda function include arrays of values or strings. The value is true or false. The default is false. If the value is false and the request contains a duplicate header field name or query parameter key, the load balancer uses the last value sent by the client.

The following attributes are supported only by Network Load Balancers:

  • deregistration_delay.connection_termination.enabled - Indicates whether the load balancer terminates connections at the end of the deregistration timeout. The value is true or false. For new UDP/TCP_UDP target groups the default is true. Otherwise, the default is false.

  • preserve_client_ip.enabled - Indicates whether client IP preservation is enabled. The value is true or false. The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation can't be disabled for UDP and TCP_UDP target groups.

  • proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is enabled. The value is true or false. The default is false.

  • target_health_state.unhealthy.connection_termination.enabled - Indicates whether the load balancer terminates connections to unhealthy targets. The value is true or false. The default is true.

  • target_health_state.unhealthy.draining_interval_seconds - The amount of time for Elastic Load Balancing to wait before changing the state of an unhealthy target from unhealthy.draining to unhealthy. The range is 0-360000 seconds. The default value is 0 seconds.

    Note: This attribute can only be configured when target_health_state.unhealthy.connection_termination.enabled is false.

The following attributes are supported only by Gateway Load Balancers:

  • target_failover.on_deregistration - Indicates how the Gateway Load Balancer handles existing flows when a target is deregistered. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) can't be set independently. The value you set for both attributes must be the same.

  • target_failover.on_unhealthy - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) can't be set independently. The value you set for both attributes must be the same.

" }, "Value":{ "shape":"TargetGroupAttributeValue", diff --git a/services/elasticsearch/pom.xml b/services/elasticsearch/pom.xml index 851d2fdde396..28eeb3390ca0 100644 --- a/services/elasticsearch/pom.xml +++ b/services/elasticsearch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elasticsearch AWS Java SDK :: Services :: Amazon Elasticsearch Service diff --git a/services/elastictranscoder/pom.xml b/services/elastictranscoder/pom.xml index 9cf7a195a2a2..01a341d0e923 100644 --- a/services/elastictranscoder/pom.xml +++ b/services/elastictranscoder/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 elastictranscoder AWS Java SDK :: Services :: Amazon Elastic Transcoder diff --git a/services/emr/pom.xml b/services/emr/pom.xml index 6293570a881e..e7bcd40da2dc 100644 --- a/services/emr/pom.xml +++ b/services/emr/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 emr AWS Java SDK :: Services :: Amazon EMR diff --git a/services/emrcontainers/pom.xml b/services/emrcontainers/pom.xml index 624a4a902766..b638f5fe0bd9 100644 --- a/services/emrcontainers/pom.xml +++ b/services/emrcontainers/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 emrcontainers AWS Java SDK :: Services :: EMR Containers diff --git a/services/emrserverless/pom.xml b/services/emrserverless/pom.xml index ac6ec327bfda..477d1c867b6c 100644 --- a/services/emrserverless/pom.xml +++ b/services/emrserverless/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 emrserverless AWS Java SDK :: Services :: EMR Serverless diff --git a/services/entityresolution/pom.xml b/services/entityresolution/pom.xml index cb871fadba55..02888ca9acd9 100644 --- a/services/entityresolution/pom.xml +++ b/services/entityresolution/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 entityresolution AWS Java SDK :: Services :: Entity Resolution diff --git a/services/eventbridge/pom.xml b/services/eventbridge/pom.xml index 4fa8c764dca2..6cfeec6bea7b 100644 --- a/services/eventbridge/pom.xml +++ b/services/eventbridge/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 eventbridge AWS Java SDK :: Services :: EventBridge diff --git a/services/evidently/pom.xml b/services/evidently/pom.xml index 20d352412a7b..9dc7a3a9945e 100644 --- a/services/evidently/pom.xml +++ b/services/evidently/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 evidently AWS Java SDK :: Services :: Evidently diff --git a/services/finspace/pom.xml b/services/finspace/pom.xml index 58f539065926..14c55d4d28ee 100644 --- a/services/finspace/pom.xml +++ b/services/finspace/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 finspace AWS Java SDK :: Services :: Finspace diff --git a/services/finspacedata/pom.xml b/services/finspacedata/pom.xml index 517c2672ae9d..59843bfad134 100644 --- a/services/finspacedata/pom.xml +++ b/services/finspacedata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 finspacedata AWS Java SDK :: Services :: Finspace Data diff --git a/services/firehose/pom.xml b/services/firehose/pom.xml index 6b79e03689d9..0b0c75c0f7a8 100644 --- a/services/firehose/pom.xml +++ b/services/firehose/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 firehose AWS Java SDK :: Services :: Amazon Kinesis Firehose diff --git a/services/fis/pom.xml b/services/fis/pom.xml index 0e3245f6d0d9..47bd35a7b803 100644 --- a/services/fis/pom.xml +++ b/services/fis/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 fis AWS Java SDK :: Services :: Fis diff --git a/services/fms/pom.xml b/services/fms/pom.xml index 95417b575f90..752531d57b6a 100644 --- a/services/fms/pom.xml +++ b/services/fms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 fms AWS Java SDK :: Services :: FMS diff --git a/services/forecast/pom.xml b/services/forecast/pom.xml index 229354cfcd19..422a3240f426 100644 --- a/services/forecast/pom.xml +++ b/services/forecast/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 forecast AWS Java SDK :: Services :: Forecast diff --git a/services/forecastquery/pom.xml b/services/forecastquery/pom.xml index fab181f54bb7..1e9ac9781af4 100644 --- a/services/forecastquery/pom.xml +++ b/services/forecastquery/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 forecastquery AWS Java SDK :: Services :: Forecastquery diff --git a/services/frauddetector/pom.xml b/services/frauddetector/pom.xml index 44d36642cdcc..63e309b6f4f0 100644 --- a/services/frauddetector/pom.xml +++ b/services/frauddetector/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 frauddetector AWS Java SDK :: Services :: FraudDetector diff --git a/services/freetier/pom.xml b/services/freetier/pom.xml index e066ba6c2a64..73f4ed8be558 100644 --- a/services/freetier/pom.xml +++ b/services/freetier/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 freetier AWS Java SDK :: Services :: Free Tier diff --git a/services/fsx/pom.xml b/services/fsx/pom.xml index a94e919841b3..75879211c026 100644 --- a/services/fsx/pom.xml +++ b/services/fsx/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 fsx AWS Java SDK :: Services :: FSx diff --git a/services/gamelift/pom.xml b/services/gamelift/pom.xml index ee746db2f554..e5da2a062427 100644 --- a/services/gamelift/pom.xml +++ b/services/gamelift/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 gamelift AWS Java SDK :: Services :: AWS GameLift diff --git a/services/geomaps/pom.xml b/services/geomaps/pom.xml index 39d039baeeda..84366b70ce9b 100644 --- a/services/geomaps/pom.xml +++ b/services/geomaps/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 geomaps AWS Java SDK :: Services :: Geo Maps diff --git a/services/geoplaces/pom.xml b/services/geoplaces/pom.xml index 3566a9eb4dcc..c1e4bdd9b955 100644 --- a/services/geoplaces/pom.xml +++ b/services/geoplaces/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 geoplaces AWS Java SDK :: Services :: Geo Places diff --git a/services/georoutes/pom.xml b/services/georoutes/pom.xml index b64600e0a4bb..e830c85c5ace 100644 --- a/services/georoutes/pom.xml +++ b/services/georoutes/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 georoutes AWS Java SDK :: Services :: Geo Routes diff --git a/services/glacier/pom.xml b/services/glacier/pom.xml index e76dbaab4ec0..b1a1e6f83519 100644 --- a/services/glacier/pom.xml +++ b/services/glacier/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 glacier AWS Java SDK :: Services :: Amazon Glacier diff --git a/services/globalaccelerator/pom.xml b/services/globalaccelerator/pom.xml index 3cdb161b550a..3791f4149c42 100644 --- a/services/globalaccelerator/pom.xml +++ b/services/globalaccelerator/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 globalaccelerator AWS Java SDK :: Services :: Global Accelerator diff --git a/services/glue/pom.xml b/services/glue/pom.xml index 473b9adf8436..d318fd201a2b 100644 --- a/services/glue/pom.xml +++ b/services/glue/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 glue diff --git a/services/glue/src/main/resources/codegen-resources/service-2.json b/services/glue/src/main/resources/codegen-resources/service-2.json index 6e4716c11d06..88431bb37c10 100644 --- a/services/glue/src/main/resources/codegen-resources/service-2.json +++ b/services/glue/src/main/resources/codegen-resources/service-2.json @@ -415,6 +415,25 @@ ], "documentation":"

Creates a classifier in the user's account. This can be a GrokClassifier, an XMLClassifier, a JsonClassifier, or a CsvClassifier, depending on which field of the request is present.

" }, + "CreateColumnStatisticsTaskSettings":{ + "name":"CreateColumnStatisticsTaskSettings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateColumnStatisticsTaskSettingsRequest"}, + "output":{"shape":"CreateColumnStatisticsTaskSettingsResponse"}, + "errors":[ + {"shape":"AlreadyExistsException"}, + {"shape":"AccessDeniedException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"OperationTimeoutException"}, + {"shape":"ResourceNumberLimitExceededException"}, + {"shape":"ColumnStatisticsTaskRunningException"} + ], + "documentation":"

Creates settings for a column statistics task.

" + }, "CreateConnection":{ "name":"CreateConnection", "http":{ @@ -868,6 +887,21 @@ ], "documentation":"

Retrieves table statistics of columns.

The Identity and Access Management (IAM) permission required for this operation is DeleteTable.

" }, + "DeleteColumnStatisticsTaskSettings":{ + "name":"DeleteColumnStatisticsTaskSettings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteColumnStatisticsTaskSettingsRequest"}, + "output":{"shape":"DeleteColumnStatisticsTaskSettingsResponse"}, + "errors":[ + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"OperationTimeoutException"} + ], + "documentation":"

Deletes settings for a column statistics task.

" + }, "DeleteConnection":{ "name":"DeleteConnection", "http":{ @@ -1393,6 +1427,21 @@ ], "documentation":"

Retrieves information about all runs associated with the specified table.

" }, + "GetColumnStatisticsTaskSettings":{ + "name":"GetColumnStatisticsTaskSettings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetColumnStatisticsTaskSettingsRequest"}, + "output":{"shape":"GetColumnStatisticsTaskSettingsResponse"}, + "errors":[ + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"OperationTimeoutException"} + ], + "documentation":"

Gets settings for a column statistics task.

" + }, "GetConnection":{ "name":"GetConnection", "http":{ @@ -3004,6 +3053,22 @@ ], "documentation":"

Starts a column statistics task run, for a specified table and columns.

" }, + "StartColumnStatisticsTaskRunSchedule":{ + "name":"StartColumnStatisticsTaskRunSchedule", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"StartColumnStatisticsTaskRunScheduleRequest"}, + "output":{"shape":"StartColumnStatisticsTaskRunScheduleResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"OperationTimeoutException"} + ], + "documentation":"

Starts a column statistics task run schedule.

" + }, "StartCrawler":{ "name":"StartCrawler", "http":{ @@ -3209,6 +3274,21 @@ ], "documentation":"

Stops a task run for the specified table.

" }, + "StopColumnStatisticsTaskRunSchedule":{ + "name":"StopColumnStatisticsTaskRunSchedule", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"StopColumnStatisticsTaskRunScheduleRequest"}, + "output":{"shape":"StopColumnStatisticsTaskRunScheduleResponse"}, + "errors":[ + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"OperationTimeoutException"} + ], + "documentation":"

Stops a column statistics task run schedule.

" + }, "StopCrawler":{ "name":"StopCrawler", "http":{ @@ -3414,6 +3494,23 @@ ], "documentation":"

Creates or updates table statistics of columns.

The Identity and Access Management (IAM) permission required for this operation is UpdateTable.

" }, + "UpdateColumnStatisticsTaskSettings":{ + "name":"UpdateColumnStatisticsTaskSettings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateColumnStatisticsTaskSettingsRequest"}, + "output":{"shape":"UpdateColumnStatisticsTaskSettingsResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InvalidInputException"}, + {"shape":"VersionMismatchException"}, + {"shape":"OperationTimeoutException"} + ], + "documentation":"

Updates settings for a column statistics task.

" + }, "UpdateConnection":{ "name":"UpdateConnection", "http":{ @@ -6369,6 +6466,10 @@ "shape":"NameString", "documentation":"

The type of workers being used for generating stats. The default is g.1x.

" }, + "ComputationType":{ + "shape":"ComputationType", + "documentation":"

The type of column statistics computation.

" + }, "Status":{ "shape":"ColumnStatisticsState", "documentation":"

The status of the task run.

" @@ -6421,6 +6522,44 @@ "type":"list", "member":{"shape":"ColumnStatisticsTaskRun"} }, + "ColumnStatisticsTaskSettings":{ + "type":"structure", + "members":{ + "DatabaseName":{ + "shape":"DatabaseName", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"TableName", + "documentation":"

The name of the table for which to generate column statistics.

" + }, + "Schedule":{ + "shape":"Schedule", + "documentation":"

A schedule for running the column statistics, specified in CRON syntax.

" + }, + "ColumnNameList":{ + "shape":"ColumnNameList", + "documentation":"

A list of column names for which to run statistics.

" + }, + "CatalogID":{ + "shape":"CatalogIdString", + "documentation":"

The ID of the Data Catalog in which the database resides.

" + }, + "Role":{ + "shape":"Role", + "documentation":"

The role used for running the column statistics.

" + }, + "SampleSize":{ + "shape":"SampleSizePercentage", + "documentation":"

The percentage of data to sample.

" + }, + "SecurityConfiguration":{ + "shape":"CrawlerSecurityConfiguration", + "documentation":"

Name of the security configuration that is used to encrypt CloudWatch logs.

" + } + }, + "documentation":"

The settings for a column statistics task.

" + }, "ColumnStatisticsTaskStoppingException":{ "type":"structure", "members":{ @@ -6507,6 +6646,13 @@ "bzip2" ] }, + "ComputationType":{ + "type":"string", + "enum":[ + "FULL", + "INCREMENTAL" + ] + }, "ConcurrentModificationException":{ "type":"structure", "members":{ @@ -7385,6 +7531,57 @@ "members":{ } }, + "CreateColumnStatisticsTaskSettingsRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName", + "Role" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to generate column statistics.

" + }, + "Role":{ + "shape":"NameString", + "documentation":"

The role used for running the column statistics.

" + }, + "Schedule":{ + "shape":"CronExpression", + "documentation":"

A schedule for running the column statistics, specified in CRON syntax.

" + }, + "ColumnNameList":{ + "shape":"ColumnNameList", + "documentation":"

A list of column names for which to run statistics.

" + }, + "SampleSize":{ + "shape":"SampleSizePercentage", + "documentation":"

The percentage of data to sample.

" + }, + "CatalogID":{ + "shape":"NameString", + "documentation":"

The ID of the Data Catalog in which the database resides.

" + }, + "SecurityConfiguration":{ + "shape":"NameString", + "documentation":"

Name of the security configuration that is used to encrypt CloudWatch logs.

" + }, + "Tags":{ + "shape":"TagsMap", + "documentation":"

A map of tags.

" + } + } + }, + "CreateColumnStatisticsTaskSettingsResponse":{ + "type":"structure", + "members":{ + } + }, "CreateConnectionRequest":{ "type":"structure", "required":["ConnectionInput"], @@ -9723,6 +9920,28 @@ "members":{ } }, + "DeleteColumnStatisticsTaskSettingsRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to delete column statistics.

" + } + } + }, + "DeleteColumnStatisticsTaskSettingsResponse":{ + "type":"structure", + "members":{ + } + }, "DeleteConnectionNameList":{ "type":"list", "member":{"shape":"NameString"}, @@ -11649,6 +11868,32 @@ } } }, + "GetColumnStatisticsTaskSettingsRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to retrieve column statistics.

" + } + } + }, + "GetColumnStatisticsTaskSettingsResponse":{ + "type":"structure", + "members":{ + "ColumnStatisticsTaskSettings":{ + "shape":"ColumnStatisticsTaskSettings", + "documentation":"

A ColumnStatisticsTaskSettings object representing the settings for the column statistics task.

" + } + } + }, "GetConnectionRequest":{ "type":"structure", "required":["Name"], @@ -20710,6 +20955,28 @@ } } }, + "StartColumnStatisticsTaskRunScheduleRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to start a column statistic task run schedule.

" + } + } + }, + "StartColumnStatisticsTaskRunScheduleResponse":{ + "type":"structure", + "members":{ + } + }, "StartCrawlerRequest":{ "type":"structure", "required":["Name"], @@ -21324,6 +21591,28 @@ "members":{ } }, + "StopColumnStatisticsTaskRunScheduleRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to stop a column statistic task run schedule.

" + } + } + }, + "StopColumnStatisticsTaskRunScheduleResponse":{ + "type":"structure", + "members":{ + } + }, "StopCrawlerRequest":{ "type":"structure", "required":["Name"], @@ -22801,6 +23090,52 @@ "max":25, "min":0 }, + "UpdateColumnStatisticsTaskSettingsRequest":{ + "type":"structure", + "required":[ + "DatabaseName", + "TableName" + ], + "members":{ + "DatabaseName":{ + "shape":"NameString", + "documentation":"

The name of the database where the table resides.

" + }, + "TableName":{ + "shape":"NameString", + "documentation":"

The name of the table for which to generate column statistics.

" + }, + "Role":{ + "shape":"NameString", + "documentation":"

The role used for running the column statistics.

" + }, + "Schedule":{ + "shape":"CronExpression", + "documentation":"

A schedule for running the column statistics, specified in CRON syntax.

" + }, + "ColumnNameList":{ + "shape":"ColumnNameList", + "documentation":"

A list of column names for which to run statistics.

" + }, + "SampleSize":{ + "shape":"SampleSizePercentage", + "documentation":"

The percentage of data to sample.

" + }, + "CatalogID":{ + "shape":"NameString", + "documentation":"

The ID of the Data Catalog in which the database resides.

" + }, + "SecurityConfiguration":{ + "shape":"NameString", + "documentation":"

Name of the security configuration that is used to encrypt CloudWatch logs.

" + } + } + }, + "UpdateColumnStatisticsTaskSettingsResponse":{ + "type":"structure", + "members":{ + } + }, "UpdateConnectionRequest":{ "type":"structure", "required":[ diff --git a/services/grafana/pom.xml b/services/grafana/pom.xml index 2e32029dd7b0..43e3e03ad40d 100644 --- a/services/grafana/pom.xml +++ b/services/grafana/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 grafana AWS Java SDK :: Services :: Grafana diff --git a/services/greengrass/pom.xml b/services/greengrass/pom.xml index c10ff6c66373..56a1f8a8e05d 100644 --- a/services/greengrass/pom.xml +++ b/services/greengrass/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 greengrass AWS Java SDK :: Services :: AWS Greengrass diff --git a/services/greengrassv2/pom.xml b/services/greengrassv2/pom.xml index 2449b3d255fd..42959a4aede9 100644 --- a/services/greengrassv2/pom.xml +++ b/services/greengrassv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 greengrassv2 AWS Java SDK :: Services :: Greengrass V2 diff --git a/services/groundstation/pom.xml b/services/groundstation/pom.xml index 04e5cf71d729..3efe90560197 100644 --- a/services/groundstation/pom.xml +++ b/services/groundstation/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 groundstation AWS Java SDK :: Services :: GroundStation diff --git a/services/guardduty/pom.xml b/services/guardduty/pom.xml index be2d2ed7e66b..c1cd4fe39b1b 100644 --- a/services/guardduty/pom.xml +++ b/services/guardduty/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 guardduty diff --git a/services/health/pom.xml b/services/health/pom.xml index 21d1264043ae..fa7617ca96f4 100644 --- a/services/health/pom.xml +++ b/services/health/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 health AWS Java SDK :: Services :: AWS Health APIs and Notifications diff --git a/services/healthlake/pom.xml b/services/healthlake/pom.xml index 40c51e253322..6790285e375d 100644 --- a/services/healthlake/pom.xml +++ b/services/healthlake/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 healthlake AWS Java SDK :: Services :: Health Lake diff --git a/services/iam/pom.xml b/services/iam/pom.xml index cd685a5993ea..737017390b6e 100644 --- a/services/iam/pom.xml +++ b/services/iam/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iam AWS Java SDK :: Services :: AWS IAM diff --git a/services/identitystore/pom.xml b/services/identitystore/pom.xml index 7f22f0a45b86..85f024f9cf99 100644 --- a/services/identitystore/pom.xml +++ b/services/identitystore/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 identitystore AWS Java SDK :: Services :: Identitystore diff --git a/services/imagebuilder/pom.xml b/services/imagebuilder/pom.xml index 5b1794ec581b..9146022c2bf2 100644 --- a/services/imagebuilder/pom.xml +++ b/services/imagebuilder/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 imagebuilder AWS Java SDK :: Services :: Imagebuilder diff --git a/services/inspector/pom.xml b/services/inspector/pom.xml index 1111611c4fe8..7af76c538ae4 100644 --- a/services/inspector/pom.xml +++ b/services/inspector/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 inspector AWS Java SDK :: Services :: Amazon Inspector Service diff --git a/services/inspector2/pom.xml b/services/inspector2/pom.xml index 0468b139019a..e1f6c0faa558 100644 --- a/services/inspector2/pom.xml +++ b/services/inspector2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 inspector2 AWS Java SDK :: Services :: Inspector2 diff --git a/services/inspectorscan/pom.xml b/services/inspectorscan/pom.xml index 20e222914b5b..15f5ddf6310c 100644 --- a/services/inspectorscan/pom.xml +++ b/services/inspectorscan/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 inspectorscan AWS Java SDK :: Services :: Inspector Scan diff --git a/services/internetmonitor/pom.xml b/services/internetmonitor/pom.xml index 6f4d2e9a6017..98e369f36161 100644 --- a/services/internetmonitor/pom.xml +++ b/services/internetmonitor/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 internetmonitor AWS Java SDK :: Services :: Internet Monitor diff --git a/services/iot/pom.xml b/services/iot/pom.xml index 6cb0937b9ff6..d889f8612175 100644 --- a/services/iot/pom.xml +++ b/services/iot/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iot AWS Java SDK :: Services :: AWS IoT diff --git a/services/iot1clickdevices/pom.xml b/services/iot1clickdevices/pom.xml index 36ab61cb082c..671bb8b0cc04 100644 --- a/services/iot1clickdevices/pom.xml +++ b/services/iot1clickdevices/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iot1clickdevices AWS Java SDK :: Services :: IoT 1Click Devices Service diff --git a/services/iot1clickprojects/pom.xml b/services/iot1clickprojects/pom.xml index 3611ee9d468c..71e7f8ea65fd 100644 --- a/services/iot1clickprojects/pom.xml +++ b/services/iot1clickprojects/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iot1clickprojects AWS Java SDK :: Services :: IoT 1Click Projects diff --git a/services/iotanalytics/pom.xml b/services/iotanalytics/pom.xml index 8fad677073d3..3b8ac682c13b 100644 --- a/services/iotanalytics/pom.xml +++ b/services/iotanalytics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotanalytics AWS Java SDK :: Services :: IoTAnalytics diff --git a/services/iotdataplane/pom.xml b/services/iotdataplane/pom.xml index 9e961669e4a4..5b93f36b1e6c 100644 --- a/services/iotdataplane/pom.xml +++ b/services/iotdataplane/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotdataplane AWS Java SDK :: Services :: AWS IoT Data Plane diff --git a/services/iotdeviceadvisor/pom.xml b/services/iotdeviceadvisor/pom.xml index 78c36cce85ee..13a7bb78f20b 100644 --- a/services/iotdeviceadvisor/pom.xml +++ b/services/iotdeviceadvisor/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotdeviceadvisor AWS Java SDK :: Services :: Iot Device Advisor diff --git a/services/iotevents/pom.xml b/services/iotevents/pom.xml index 7c570aaf9b05..3b431b95ff83 100644 --- a/services/iotevents/pom.xml +++ b/services/iotevents/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotevents AWS Java SDK :: Services :: IoT Events diff --git a/services/ioteventsdata/pom.xml b/services/ioteventsdata/pom.xml index 64d7458f909d..82d608a193bb 100644 --- a/services/ioteventsdata/pom.xml +++ b/services/ioteventsdata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ioteventsdata AWS Java SDK :: Services :: IoT Events Data diff --git a/services/iotfleethub/pom.xml b/services/iotfleethub/pom.xml index 3ac805ad6957..b9021363a3d3 100644 --- a/services/iotfleethub/pom.xml +++ b/services/iotfleethub/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotfleethub AWS Java SDK :: Services :: Io T Fleet Hub diff --git a/services/iotfleetwise/pom.xml b/services/iotfleetwise/pom.xml index 5c82fb042a01..5a81b4491273 100644 --- a/services/iotfleetwise/pom.xml +++ b/services/iotfleetwise/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotfleetwise AWS Java SDK :: Services :: Io T Fleet Wise diff --git a/services/iotjobsdataplane/pom.xml b/services/iotjobsdataplane/pom.xml index 4648d896939a..3b9a8c2781aa 100644 --- a/services/iotjobsdataplane/pom.xml +++ b/services/iotjobsdataplane/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotjobsdataplane AWS Java SDK :: Services :: IoT Jobs Data Plane diff --git a/services/iotsecuretunneling/pom.xml b/services/iotsecuretunneling/pom.xml index 7cfe2aeb916d..adedf14b2f90 100644 --- a/services/iotsecuretunneling/pom.xml +++ b/services/iotsecuretunneling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotsecuretunneling AWS Java SDK :: Services :: IoTSecureTunneling diff --git a/services/iotsitewise/pom.xml b/services/iotsitewise/pom.xml index 7adbf400b248..3366f64b3f0a 100644 --- a/services/iotsitewise/pom.xml +++ b/services/iotsitewise/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotsitewise AWS Java SDK :: Services :: Io T Site Wise diff --git a/services/iotthingsgraph/pom.xml b/services/iotthingsgraph/pom.xml index ad449db09dc4..3f5d940b6b9e 100644 --- a/services/iotthingsgraph/pom.xml +++ b/services/iotthingsgraph/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotthingsgraph AWS Java SDK :: Services :: IoTThingsGraph diff --git a/services/iottwinmaker/pom.xml b/services/iottwinmaker/pom.xml index 55ca79272e5f..eec3e91caeb5 100644 --- a/services/iottwinmaker/pom.xml +++ b/services/iottwinmaker/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iottwinmaker AWS Java SDK :: Services :: Io T Twin Maker diff --git a/services/iotwireless/pom.xml b/services/iotwireless/pom.xml index 424b78705956..a33c542ad7fd 100644 --- a/services/iotwireless/pom.xml +++ b/services/iotwireless/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 iotwireless AWS Java SDK :: Services :: IoT Wireless diff --git a/services/ivs/pom.xml b/services/ivs/pom.xml index 9271948ba67a..08e08f87bf72 100644 --- a/services/ivs/pom.xml +++ b/services/ivs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ivs AWS Java SDK :: Services :: Ivs diff --git a/services/ivschat/pom.xml b/services/ivschat/pom.xml index 4f7a0f4e2cc7..b4dab1316318 100644 --- a/services/ivschat/pom.xml +++ b/services/ivschat/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ivschat AWS Java SDK :: Services :: Ivschat diff --git a/services/ivsrealtime/pom.xml b/services/ivsrealtime/pom.xml index 7f087ad1a56e..7ee4c87386df 100644 --- a/services/ivsrealtime/pom.xml +++ b/services/ivsrealtime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ivsrealtime AWS Java SDK :: Services :: IVS Real Time diff --git a/services/kafka/pom.xml b/services/kafka/pom.xml index efb9bcd29b40..427f3998f342 100644 --- a/services/kafka/pom.xml +++ b/services/kafka/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kafka AWS Java SDK :: Services :: Kafka diff --git a/services/kafkaconnect/pom.xml b/services/kafkaconnect/pom.xml index 85a76f5558fc..346b60f1ed1d 100644 --- a/services/kafkaconnect/pom.xml +++ b/services/kafkaconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kafkaconnect AWS Java SDK :: Services :: Kafka Connect diff --git a/services/kendra/pom.xml b/services/kendra/pom.xml index 38e892ce1a39..6517c834b07a 100644 --- a/services/kendra/pom.xml +++ b/services/kendra/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kendra AWS Java SDK :: Services :: Kendra diff --git a/services/kendraranking/pom.xml b/services/kendraranking/pom.xml index d922f3f45baa..db6ce51dbcdd 100644 --- a/services/kendraranking/pom.xml +++ b/services/kendraranking/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kendraranking AWS Java SDK :: Services :: Kendra Ranking diff --git a/services/keyspaces/pom.xml b/services/keyspaces/pom.xml index fd37ddf51ba2..432b9e547383 100644 --- a/services/keyspaces/pom.xml +++ b/services/keyspaces/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 keyspaces AWS Java SDK :: Services :: Keyspaces diff --git a/services/kinesis/pom.xml b/services/kinesis/pom.xml index 1efb7e511db6..474cc80e498b 100644 --- a/services/kinesis/pom.xml +++ b/services/kinesis/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesis AWS Java SDK :: Services :: Amazon Kinesis diff --git a/services/kinesisanalytics/pom.xml b/services/kinesisanalytics/pom.xml index 0a7b6e52cf7f..eb8c904d5de9 100644 --- a/services/kinesisanalytics/pom.xml +++ b/services/kinesisanalytics/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisanalytics AWS Java SDK :: Services :: Amazon Kinesis Analytics diff --git a/services/kinesisanalyticsv2/pom.xml b/services/kinesisanalyticsv2/pom.xml index f427a9d94a72..e54a7a97467c 100644 --- a/services/kinesisanalyticsv2/pom.xml +++ b/services/kinesisanalyticsv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisanalyticsv2 AWS Java SDK :: Services :: Kinesis Analytics V2 diff --git a/services/kinesisvideo/pom.xml b/services/kinesisvideo/pom.xml index 9ecbfd5a9e8b..43f56e5a4465 100644 --- a/services/kinesisvideo/pom.xml +++ b/services/kinesisvideo/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 kinesisvideo diff --git a/services/kinesisvideoarchivedmedia/pom.xml b/services/kinesisvideoarchivedmedia/pom.xml index f7f9e369b666..13c19b5387c4 100644 --- a/services/kinesisvideoarchivedmedia/pom.xml +++ b/services/kinesisvideoarchivedmedia/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisvideoarchivedmedia AWS Java SDK :: Services :: Kinesis Video Archived Media diff --git a/services/kinesisvideomedia/pom.xml b/services/kinesisvideomedia/pom.xml index 9a7dc59ab553..974f88e9fa39 100644 --- a/services/kinesisvideomedia/pom.xml +++ b/services/kinesisvideomedia/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisvideomedia AWS Java SDK :: Services :: Kinesis Video Media diff --git a/services/kinesisvideosignaling/pom.xml b/services/kinesisvideosignaling/pom.xml index b43ff0912827..ea89ed512753 100644 --- a/services/kinesisvideosignaling/pom.xml +++ b/services/kinesisvideosignaling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisvideosignaling AWS Java SDK :: Services :: Kinesis Video Signaling diff --git a/services/kinesisvideowebrtcstorage/pom.xml b/services/kinesisvideowebrtcstorage/pom.xml index c1ac58c1f3da..f3e24934c54a 100644 --- a/services/kinesisvideowebrtcstorage/pom.xml +++ b/services/kinesisvideowebrtcstorage/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kinesisvideowebrtcstorage AWS Java SDK :: Services :: Kinesis Video Web RTC Storage diff --git a/services/kms/pom.xml b/services/kms/pom.xml index 8b3e3a2f53dd..ed0ed36d97fc 100644 --- a/services/kms/pom.xml +++ b/services/kms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 kms AWS Java SDK :: Services :: AWS KMS diff --git a/services/lakeformation/pom.xml b/services/lakeformation/pom.xml index 218b855a79d8..9d6e14ff46d2 100644 --- a/services/lakeformation/pom.xml +++ b/services/lakeformation/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lakeformation AWS Java SDK :: Services :: LakeFormation diff --git a/services/lambda/pom.xml b/services/lambda/pom.xml index 535a36671c6d..6ecb04533d2c 100644 --- a/services/lambda/pom.xml +++ b/services/lambda/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lambda AWS Java SDK :: Services :: AWS Lambda diff --git a/services/launchwizard/pom.xml b/services/launchwizard/pom.xml index 0441945306e1..f551de818010 100644 --- a/services/launchwizard/pom.xml +++ b/services/launchwizard/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 launchwizard AWS Java SDK :: Services :: Launch Wizard diff --git a/services/lexmodelbuilding/pom.xml b/services/lexmodelbuilding/pom.xml index ec1f5cc621a6..6e68f6b3c205 100644 --- a/services/lexmodelbuilding/pom.xml +++ b/services/lexmodelbuilding/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lexmodelbuilding AWS Java SDK :: Services :: Amazon Lex Model Building diff --git a/services/lexmodelsv2/pom.xml b/services/lexmodelsv2/pom.xml index ad05963e2e9a..537495c7caa3 100644 --- a/services/lexmodelsv2/pom.xml +++ b/services/lexmodelsv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lexmodelsv2 AWS Java SDK :: Services :: Lex Models V2 diff --git a/services/lexruntime/pom.xml b/services/lexruntime/pom.xml index 3b736c8047a2..c983740f42b2 100644 --- a/services/lexruntime/pom.xml +++ b/services/lexruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lexruntime AWS Java SDK :: Services :: Amazon Lex Runtime diff --git a/services/lexruntimev2/pom.xml b/services/lexruntimev2/pom.xml index 6bf7105c5563..df5aca18e0c5 100644 --- a/services/lexruntimev2/pom.xml +++ b/services/lexruntimev2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lexruntimev2 AWS Java SDK :: Services :: Lex Runtime V2 diff --git a/services/licensemanager/pom.xml b/services/licensemanager/pom.xml index 2ee27ca481df..28385caf4e8d 100644 --- a/services/licensemanager/pom.xml +++ b/services/licensemanager/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 licensemanager AWS Java SDK :: Services :: License Manager diff --git a/services/licensemanagerlinuxsubscriptions/pom.xml b/services/licensemanagerlinuxsubscriptions/pom.xml index c9524cd2af3c..b6a5617ab50b 100644 --- a/services/licensemanagerlinuxsubscriptions/pom.xml +++ b/services/licensemanagerlinuxsubscriptions/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 licensemanagerlinuxsubscriptions AWS Java SDK :: Services :: License Manager Linux Subscriptions diff --git a/services/licensemanagerusersubscriptions/pom.xml b/services/licensemanagerusersubscriptions/pom.xml index 4122f9bc33e7..23a389ae1b3e 100644 --- a/services/licensemanagerusersubscriptions/pom.xml +++ b/services/licensemanagerusersubscriptions/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 licensemanagerusersubscriptions AWS Java SDK :: Services :: License Manager User Subscriptions diff --git a/services/lightsail/pom.xml b/services/lightsail/pom.xml index 01e9bdb54af2..88c50634dee3 100644 --- a/services/lightsail/pom.xml +++ b/services/lightsail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lightsail AWS Java SDK :: Services :: Amazon Lightsail diff --git a/services/location/pom.xml b/services/location/pom.xml index 1ff4c145142d..1c68b95a2e42 100644 --- a/services/location/pom.xml +++ b/services/location/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 location AWS Java SDK :: Services :: Location diff --git a/services/lookoutequipment/pom.xml b/services/lookoutequipment/pom.xml index d4740722a1a0..2b2fe557f181 100644 --- a/services/lookoutequipment/pom.xml +++ b/services/lookoutequipment/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lookoutequipment AWS Java SDK :: Services :: Lookout Equipment diff --git a/services/lookoutmetrics/pom.xml b/services/lookoutmetrics/pom.xml index cbc2a7c30cc5..0202d04477ef 100644 --- a/services/lookoutmetrics/pom.xml +++ b/services/lookoutmetrics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lookoutmetrics AWS Java SDK :: Services :: Lookout Metrics diff --git a/services/lookoutvision/pom.xml b/services/lookoutvision/pom.xml index 480cf1551241..59ee067c9846 100644 --- a/services/lookoutvision/pom.xml +++ b/services/lookoutvision/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 lookoutvision AWS Java SDK :: Services :: Lookout Vision diff --git a/services/m2/pom.xml b/services/m2/pom.xml index 8dd8ab09bcf4..69a4dfeafa67 100644 --- a/services/m2/pom.xml +++ b/services/m2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 m2 AWS Java SDK :: Services :: M2 diff --git a/services/machinelearning/pom.xml b/services/machinelearning/pom.xml index e4c85cb6e34e..56f7368ca489 100644 --- a/services/machinelearning/pom.xml +++ b/services/machinelearning/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 machinelearning AWS Java SDK :: Services :: Amazon Machine Learning diff --git a/services/macie2/pom.xml b/services/macie2/pom.xml index ca8f241d0c80..587c872af1c0 100644 --- a/services/macie2/pom.xml +++ b/services/macie2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 macie2 AWS Java SDK :: Services :: Macie2 diff --git a/services/mailmanager/pom.xml b/services/mailmanager/pom.xml index c575bde30501..425cc64d86b0 100644 --- a/services/mailmanager/pom.xml +++ b/services/mailmanager/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mailmanager AWS Java SDK :: Services :: Mail Manager diff --git a/services/managedblockchain/pom.xml b/services/managedblockchain/pom.xml index e288f29ad072..ba8db5327d75 100644 --- a/services/managedblockchain/pom.xml +++ b/services/managedblockchain/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 managedblockchain AWS Java SDK :: Services :: ManagedBlockchain diff --git a/services/managedblockchainquery/pom.xml b/services/managedblockchainquery/pom.xml index 33e2089e5de0..eae49c158d50 100644 --- a/services/managedblockchainquery/pom.xml +++ b/services/managedblockchainquery/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 managedblockchainquery AWS Java SDK :: Services :: Managed Blockchain Query diff --git a/services/marketplaceagreement/pom.xml b/services/marketplaceagreement/pom.xml index 6d0eeb05e9e9..4a173f3e870c 100644 --- a/services/marketplaceagreement/pom.xml +++ b/services/marketplaceagreement/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplaceagreement AWS Java SDK :: Services :: Marketplace Agreement diff --git a/services/marketplacecatalog/pom.xml b/services/marketplacecatalog/pom.xml index 088ef664b8e8..7cfd84a85468 100644 --- a/services/marketplacecatalog/pom.xml +++ b/services/marketplacecatalog/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplacecatalog AWS Java SDK :: Services :: Marketplace Catalog diff --git a/services/marketplacecommerceanalytics/pom.xml b/services/marketplacecommerceanalytics/pom.xml index f277b6cc9cc5..8544370945d8 100644 --- a/services/marketplacecommerceanalytics/pom.xml +++ b/services/marketplacecommerceanalytics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplacecommerceanalytics AWS Java SDK :: Services :: AWS Marketplace Commerce Analytics diff --git a/services/marketplacedeployment/pom.xml b/services/marketplacedeployment/pom.xml index e32846eec810..a69ff63542eb 100644 --- a/services/marketplacedeployment/pom.xml +++ b/services/marketplacedeployment/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplacedeployment AWS Java SDK :: Services :: Marketplace Deployment diff --git a/services/marketplaceentitlement/pom.xml b/services/marketplaceentitlement/pom.xml index 55141c8f583e..0f4c63513e5d 100644 --- a/services/marketplaceentitlement/pom.xml +++ b/services/marketplaceentitlement/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplaceentitlement AWS Java SDK :: Services :: AWS Marketplace Entitlement diff --git a/services/marketplacemetering/pom.xml b/services/marketplacemetering/pom.xml index c9f6ec877d70..fc253677868a 100644 --- a/services/marketplacemetering/pom.xml +++ b/services/marketplacemetering/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplacemetering AWS Java SDK :: Services :: AWS Marketplace Metering Service diff --git a/services/marketplacereporting/pom.xml b/services/marketplacereporting/pom.xml index d02a4672c2e1..1e9821f18b5a 100644 --- a/services/marketplacereporting/pom.xml +++ b/services/marketplacereporting/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 marketplacereporting AWS Java SDK :: Services :: Marketplace Reporting diff --git a/services/mediaconnect/pom.xml b/services/mediaconnect/pom.xml index e2a968b900eb..95ccd72dedff 100644 --- a/services/mediaconnect/pom.xml +++ b/services/mediaconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mediaconnect AWS Java SDK :: Services :: MediaConnect diff --git a/services/mediaconvert/pom.xml b/services/mediaconvert/pom.xml index 78aa25d6d946..c19918f7d442 100644 --- a/services/mediaconvert/pom.xml +++ b/services/mediaconvert/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 mediaconvert diff --git a/services/medialive/pom.xml b/services/medialive/pom.xml index 1dae15367786..82e3e8f3176d 100644 --- a/services/medialive/pom.xml +++ b/services/medialive/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 medialive diff --git a/services/mediapackage/pom.xml b/services/mediapackage/pom.xml index 39608922642c..952e7dee99f2 100644 --- a/services/mediapackage/pom.xml +++ b/services/mediapackage/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 mediapackage diff --git a/services/mediapackagev2/pom.xml b/services/mediapackagev2/pom.xml index 08ed5b25dfb2..4f5e7b110206 100644 --- a/services/mediapackagev2/pom.xml +++ b/services/mediapackagev2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mediapackagev2 AWS Java SDK :: Services :: Media Package V2 diff --git a/services/mediapackagevod/pom.xml b/services/mediapackagevod/pom.xml index f7c7ec56ede6..342677bb425d 100644 --- a/services/mediapackagevod/pom.xml +++ b/services/mediapackagevod/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mediapackagevod AWS Java SDK :: Services :: MediaPackage Vod diff --git a/services/mediastore/pom.xml b/services/mediastore/pom.xml index 37e6ce59cd93..39c4a495bac0 100644 --- a/services/mediastore/pom.xml +++ b/services/mediastore/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 mediastore diff --git a/services/mediastoredata/pom.xml b/services/mediastoredata/pom.xml index af51ba2d403e..00cc1485b813 100644 --- a/services/mediastoredata/pom.xml +++ b/services/mediastoredata/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 mediastoredata diff --git a/services/mediatailor/pom.xml b/services/mediatailor/pom.xml index 084e66b81c29..fb690af703bd 100644 --- a/services/mediatailor/pom.xml +++ b/services/mediatailor/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mediatailor AWS Java SDK :: Services :: MediaTailor diff --git a/services/medicalimaging/pom.xml b/services/medicalimaging/pom.xml index f6cfb9f0965d..9b66f859b467 100644 --- a/services/medicalimaging/pom.xml +++ b/services/medicalimaging/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 medicalimaging AWS Java SDK :: Services :: Medical Imaging diff --git a/services/memorydb/pom.xml b/services/memorydb/pom.xml index 8e0bd7737225..2514875fc949 100644 --- a/services/memorydb/pom.xml +++ b/services/memorydb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 memorydb AWS Java SDK :: Services :: Memory DB diff --git a/services/mgn/pom.xml b/services/mgn/pom.xml index 7f19ce54c6c4..4f304664c2d3 100644 --- a/services/mgn/pom.xml +++ b/services/mgn/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mgn AWS Java SDK :: Services :: Mgn diff --git a/services/migrationhub/pom.xml b/services/migrationhub/pom.xml index 4aa76c703706..e7106323cabf 100644 --- a/services/migrationhub/pom.xml +++ b/services/migrationhub/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 migrationhub diff --git a/services/migrationhubconfig/pom.xml b/services/migrationhubconfig/pom.xml index 8fd1d13fc82a..aeee7ba843f5 100644 --- a/services/migrationhubconfig/pom.xml +++ b/services/migrationhubconfig/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 migrationhubconfig AWS Java SDK :: Services :: MigrationHub Config diff --git a/services/migrationhuborchestrator/pom.xml b/services/migrationhuborchestrator/pom.xml index d3cef5abaf2c..90376973f371 100644 --- a/services/migrationhuborchestrator/pom.xml +++ b/services/migrationhuborchestrator/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 migrationhuborchestrator AWS Java SDK :: Services :: Migration Hub Orchestrator diff --git a/services/migrationhubrefactorspaces/pom.xml b/services/migrationhubrefactorspaces/pom.xml index 40f785b4fd2c..b160c4319d52 100644 --- a/services/migrationhubrefactorspaces/pom.xml +++ b/services/migrationhubrefactorspaces/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 migrationhubrefactorspaces AWS Java SDK :: Services :: Migration Hub Refactor Spaces diff --git a/services/migrationhubstrategy/pom.xml b/services/migrationhubstrategy/pom.xml index 3a98dddbbd44..5b4e0a3a2d34 100644 --- a/services/migrationhubstrategy/pom.xml +++ b/services/migrationhubstrategy/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 migrationhubstrategy AWS Java SDK :: Services :: Migration Hub Strategy diff --git a/services/mq/pom.xml b/services/mq/pom.xml index d290e75ce60f..0276b60f129c 100644 --- a/services/mq/pom.xml +++ b/services/mq/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 mq diff --git a/services/mturk/pom.xml b/services/mturk/pom.xml index 750d9d75863d..a65f46f14dca 100644 --- a/services/mturk/pom.xml +++ b/services/mturk/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mturk AWS Java SDK :: Services :: Amazon Mechanical Turk Requester diff --git a/services/mwaa/pom.xml b/services/mwaa/pom.xml index f290eefcb332..279db2ea26e7 100644 --- a/services/mwaa/pom.xml +++ b/services/mwaa/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 mwaa AWS Java SDK :: Services :: MWAA diff --git a/services/neptune/pom.xml b/services/neptune/pom.xml index 42d8c6582cbb..0c313ae327df 100644 --- a/services/neptune/pom.xml +++ b/services/neptune/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 neptune AWS Java SDK :: Services :: Neptune diff --git a/services/neptunedata/pom.xml b/services/neptunedata/pom.xml index 567ea35f1e1a..1e4b0cfa779a 100644 --- a/services/neptunedata/pom.xml +++ b/services/neptunedata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 neptunedata AWS Java SDK :: Services :: Neptunedata diff --git a/services/neptunegraph/pom.xml b/services/neptunegraph/pom.xml index 51f312da0c44..f6bcdd9d7c16 100644 --- a/services/neptunegraph/pom.xml +++ b/services/neptunegraph/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 neptunegraph AWS Java SDK :: Services :: Neptune Graph diff --git a/services/networkfirewall/pom.xml b/services/networkfirewall/pom.xml index 6fbf86609d54..d9a0bb174044 100644 --- a/services/networkfirewall/pom.xml +++ b/services/networkfirewall/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 networkfirewall AWS Java SDK :: Services :: Network Firewall diff --git a/services/networkmanager/pom.xml b/services/networkmanager/pom.xml index 1d80d2ab2e32..2f081c43589d 100644 --- a/services/networkmanager/pom.xml +++ b/services/networkmanager/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 networkmanager AWS Java SDK :: Services :: NetworkManager diff --git a/services/networkmonitor/pom.xml b/services/networkmonitor/pom.xml index 2afdd6f1d8c3..a8cf5f437a34 100644 --- a/services/networkmonitor/pom.xml +++ b/services/networkmonitor/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 networkmonitor AWS Java SDK :: Services :: Network Monitor diff --git a/services/oam/pom.xml b/services/oam/pom.xml index 8f706752b8ee..e0f77d67a93d 100644 --- a/services/oam/pom.xml +++ b/services/oam/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 oam AWS Java SDK :: Services :: OAM diff --git a/services/omics/pom.xml b/services/omics/pom.xml index 28d692b0c480..7c2d6418c18b 100644 --- a/services/omics/pom.xml +++ b/services/omics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 omics AWS Java SDK :: Services :: Omics diff --git a/services/opensearch/pom.xml b/services/opensearch/pom.xml index 4a097371f830..ba41b9ad9f10 100644 --- a/services/opensearch/pom.xml +++ b/services/opensearch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 opensearch AWS Java SDK :: Services :: Open Search diff --git a/services/opensearchserverless/pom.xml b/services/opensearchserverless/pom.xml index 8e70266cd230..d390900d23e2 100644 --- a/services/opensearchserverless/pom.xml +++ b/services/opensearchserverless/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 opensearchserverless AWS Java SDK :: Services :: Open Search Serverless diff --git a/services/opsworks/pom.xml b/services/opsworks/pom.xml index 09eecb6efdc6..5748e398bfc1 100644 --- a/services/opsworks/pom.xml +++ b/services/opsworks/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 opsworks AWS Java SDK :: Services :: AWS OpsWorks diff --git a/services/opsworkscm/pom.xml b/services/opsworkscm/pom.xml index cb68d3412423..afddd1d4c568 100644 --- a/services/opsworkscm/pom.xml +++ b/services/opsworkscm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 opsworkscm AWS Java SDK :: Services :: AWS OpsWorks for Chef Automate diff --git a/services/organizations/pom.xml b/services/organizations/pom.xml index f33ee06c0da4..df4f4d4ac4c3 100644 --- a/services/organizations/pom.xml +++ b/services/organizations/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 organizations AWS Java SDK :: Services :: AWS Organizations diff --git a/services/osis/pom.xml b/services/osis/pom.xml index 74a81ace4532..fcec27f55261 100644 --- a/services/osis/pom.xml +++ b/services/osis/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 osis AWS Java SDK :: Services :: OSIS diff --git a/services/outposts/pom.xml b/services/outposts/pom.xml index 0fb5bb029f53..27cecc382c39 100644 --- a/services/outposts/pom.xml +++ b/services/outposts/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 outposts AWS Java SDK :: Services :: Outposts diff --git a/services/panorama/pom.xml b/services/panorama/pom.xml index 3ca8673e1867..5154afe63398 100644 --- a/services/panorama/pom.xml +++ b/services/panorama/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 panorama AWS Java SDK :: Services :: Panorama diff --git a/services/paymentcryptography/pom.xml b/services/paymentcryptography/pom.xml index e83eef36b268..20920a60c840 100644 --- a/services/paymentcryptography/pom.xml +++ b/services/paymentcryptography/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 paymentcryptography AWS Java SDK :: Services :: Payment Cryptography diff --git a/services/paymentcryptographydata/pom.xml b/services/paymentcryptographydata/pom.xml index 57fcff0037cc..85cc6bbd8571 100644 --- a/services/paymentcryptographydata/pom.xml +++ b/services/paymentcryptographydata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 paymentcryptographydata AWS Java SDK :: Services :: Payment Cryptography Data diff --git a/services/pcaconnectorad/pom.xml b/services/pcaconnectorad/pom.xml index 2741ea0d348f..dc4d171bcd19 100644 --- a/services/pcaconnectorad/pom.xml +++ b/services/pcaconnectorad/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pcaconnectorad AWS Java SDK :: Services :: Pca Connector Ad diff --git a/services/pcaconnectorscep/pom.xml b/services/pcaconnectorscep/pom.xml index 0caa39095b27..ed71f98b266d 100644 --- a/services/pcaconnectorscep/pom.xml +++ b/services/pcaconnectorscep/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pcaconnectorscep AWS Java SDK :: Services :: Pca Connector Scep diff --git a/services/pcs/pom.xml b/services/pcs/pom.xml index 252a13b15ce0..3535a9e4b71f 100644 --- a/services/pcs/pom.xml +++ b/services/pcs/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pcs AWS Java SDK :: Services :: PCS diff --git a/services/personalize/pom.xml b/services/personalize/pom.xml index 573f5c55fc7d..9065ee9d3f33 100644 --- a/services/personalize/pom.xml +++ b/services/personalize/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 personalize AWS Java SDK :: Services :: Personalize diff --git a/services/personalizeevents/pom.xml b/services/personalizeevents/pom.xml index 84b48b1350f9..1512e957fd82 100644 --- a/services/personalizeevents/pom.xml +++ b/services/personalizeevents/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 personalizeevents AWS Java SDK :: Services :: Personalize Events diff --git a/services/personalizeruntime/pom.xml b/services/personalizeruntime/pom.xml index cf1b78065ee1..941a2dc1ac45 100644 --- a/services/personalizeruntime/pom.xml +++ b/services/personalizeruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 personalizeruntime AWS Java SDK :: Services :: Personalize Runtime diff --git a/services/pi/pom.xml b/services/pi/pom.xml index 650ebbb1b706..0adbb0fa240c 100644 --- a/services/pi/pom.xml +++ b/services/pi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pi AWS Java SDK :: Services :: PI diff --git a/services/pinpoint/pom.xml b/services/pinpoint/pom.xml index dfbbd8cb3d1f..fb47fb0f0d6f 100644 --- a/services/pinpoint/pom.xml +++ b/services/pinpoint/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pinpoint AWS Java SDK :: Services :: Amazon Pinpoint diff --git a/services/pinpointemail/pom.xml b/services/pinpointemail/pom.xml index db0e17b3c918..48f69bcf9961 100644 --- a/services/pinpointemail/pom.xml +++ b/services/pinpointemail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pinpointemail AWS Java SDK :: Services :: Pinpoint Email diff --git a/services/pinpointsmsvoice/pom.xml b/services/pinpointsmsvoice/pom.xml index 6191417dfb6b..5f6e69984854 100644 --- a/services/pinpointsmsvoice/pom.xml +++ b/services/pinpointsmsvoice/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pinpointsmsvoice AWS Java SDK :: Services :: Pinpoint SMS Voice diff --git a/services/pinpointsmsvoicev2/pom.xml b/services/pinpointsmsvoicev2/pom.xml index 54df9e0f1453..a860f02db0f7 100644 --- a/services/pinpointsmsvoicev2/pom.xml +++ b/services/pinpointsmsvoicev2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pinpointsmsvoicev2 AWS Java SDK :: Services :: Pinpoint SMS Voice V2 diff --git a/services/pipes/pom.xml b/services/pipes/pom.xml index 3f0b0ff5cbef..1d437e689f5f 100644 --- a/services/pipes/pom.xml +++ b/services/pipes/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 pipes AWS Java SDK :: Services :: Pipes diff --git a/services/polly/pom.xml b/services/polly/pom.xml index f76e1a04082e..175cc546f5e3 100644 --- a/services/polly/pom.xml +++ b/services/polly/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 polly AWS Java SDK :: Services :: Amazon Polly diff --git a/services/pom.xml b/services/pom.xml index 2b066ee4d2f2..b4372b1cb142 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 services AWS Java SDK :: Services diff --git a/services/pricing/pom.xml b/services/pricing/pom.xml index 6bb10d23a681..5bfcce8fbf43 100644 --- a/services/pricing/pom.xml +++ b/services/pricing/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 pricing diff --git a/services/privatenetworks/pom.xml b/services/privatenetworks/pom.xml index d605ba073e4f..1cf94427dfdd 100644 --- a/services/privatenetworks/pom.xml +++ b/services/privatenetworks/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 privatenetworks AWS Java SDK :: Services :: Private Networks diff --git a/services/proton/pom.xml b/services/proton/pom.xml index d72c298111ed..1c7bbd432052 100644 --- a/services/proton/pom.xml +++ b/services/proton/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 proton AWS Java SDK :: Services :: Proton diff --git a/services/qapps/pom.xml b/services/qapps/pom.xml index 9babc2d86c36..1add6d1eb08c 100644 --- a/services/qapps/pom.xml +++ b/services/qapps/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 qapps AWS Java SDK :: Services :: Q Apps diff --git a/services/qbusiness/pom.xml b/services/qbusiness/pom.xml index b255387ca745..5306dc01fdf2 100644 --- a/services/qbusiness/pom.xml +++ b/services/qbusiness/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 qbusiness AWS Java SDK :: Services :: Q Business diff --git a/services/qconnect/pom.xml b/services/qconnect/pom.xml index 751ebb3c9d13..a8b9ce2f0222 100644 --- a/services/qconnect/pom.xml +++ b/services/qconnect/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 qconnect AWS Java SDK :: Services :: Q Connect diff --git a/services/qldb/pom.xml b/services/qldb/pom.xml index 306c04f6c0e8..e850e3c8ad1d 100644 --- a/services/qldb/pom.xml +++ b/services/qldb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 qldb AWS Java SDK :: Services :: QLDB diff --git a/services/qldbsession/pom.xml b/services/qldbsession/pom.xml index 3b97708256f6..dd1f1812a2e4 100644 --- a/services/qldbsession/pom.xml +++ b/services/qldbsession/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 qldbsession AWS Java SDK :: Services :: QLDB Session diff --git a/services/quicksight/pom.xml b/services/quicksight/pom.xml index 37abdf485d5c..233432b58569 100644 --- a/services/quicksight/pom.xml +++ b/services/quicksight/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 quicksight AWS Java SDK :: Services :: QuickSight diff --git a/services/ram/pom.xml b/services/ram/pom.xml index 8de01b562fb7..afc5b0e1198a 100644 --- a/services/ram/pom.xml +++ b/services/ram/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ram AWS Java SDK :: Services :: RAM diff --git a/services/rbin/pom.xml b/services/rbin/pom.xml index 1955a180c135..52f9a2c7b746 100644 --- a/services/rbin/pom.xml +++ b/services/rbin/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rbin AWS Java SDK :: Services :: Rbin diff --git a/services/rds/pom.xml b/services/rds/pom.xml index c4edeefed3eb..087eff31446a 100644 --- a/services/rds/pom.xml +++ b/services/rds/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rds AWS Java SDK :: Services :: Amazon RDS diff --git a/services/rdsdata/pom.xml b/services/rdsdata/pom.xml index 128502aed5fb..bad7b0524e54 100644 --- a/services/rdsdata/pom.xml +++ b/services/rdsdata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rdsdata AWS Java SDK :: Services :: RDS Data diff --git a/services/redshift/pom.xml b/services/redshift/pom.xml index 01793b8e29b4..75003f4e1d22 100644 --- a/services/redshift/pom.xml +++ b/services/redshift/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 redshift AWS Java SDK :: Services :: Amazon Redshift diff --git a/services/redshiftdata/pom.xml b/services/redshiftdata/pom.xml index e1a519b17f69..f27f97229638 100644 --- a/services/redshiftdata/pom.xml +++ b/services/redshiftdata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 redshiftdata AWS Java SDK :: Services :: Redshift Data diff --git a/services/redshiftserverless/pom.xml b/services/redshiftserverless/pom.xml index 666db49bc9b7..93af89088058 100644 --- a/services/redshiftserverless/pom.xml +++ b/services/redshiftserverless/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 redshiftserverless AWS Java SDK :: Services :: Redshift Serverless diff --git a/services/rekognition/pom.xml b/services/rekognition/pom.xml index d7cbb0796790..c1ba6e7b6ac0 100644 --- a/services/rekognition/pom.xml +++ b/services/rekognition/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rekognition AWS Java SDK :: Services :: Amazon Rekognition diff --git a/services/repostspace/pom.xml b/services/repostspace/pom.xml index a26e86a4c827..52d98414e36b 100644 --- a/services/repostspace/pom.xml +++ b/services/repostspace/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 repostspace AWS Java SDK :: Services :: Repostspace diff --git a/services/resiliencehub/pom.xml b/services/resiliencehub/pom.xml index 1202e06cac1d..b54b20a65981 100644 --- a/services/resiliencehub/pom.xml +++ b/services/resiliencehub/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 resiliencehub AWS Java SDK :: Services :: Resiliencehub diff --git a/services/resourceexplorer2/pom.xml b/services/resourceexplorer2/pom.xml index df5b9239fd68..b702b3a243d3 100644 --- a/services/resourceexplorer2/pom.xml +++ b/services/resourceexplorer2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 resourceexplorer2 AWS Java SDK :: Services :: Resource Explorer 2 diff --git a/services/resourcegroups/pom.xml b/services/resourcegroups/pom.xml index 6c8df432885d..cbc97e0cd55d 100644 --- a/services/resourcegroups/pom.xml +++ b/services/resourcegroups/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 resourcegroups diff --git a/services/resourcegroupstaggingapi/pom.xml b/services/resourcegroupstaggingapi/pom.xml index cc4c4636ef1b..4e8422b4ba9b 100644 --- a/services/resourcegroupstaggingapi/pom.xml +++ b/services/resourcegroupstaggingapi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 resourcegroupstaggingapi AWS Java SDK :: Services :: AWS Resource Groups Tagging API diff --git a/services/robomaker/pom.xml b/services/robomaker/pom.xml index 4dded78c7e83..8f367d399e13 100644 --- a/services/robomaker/pom.xml +++ b/services/robomaker/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 robomaker AWS Java SDK :: Services :: RoboMaker diff --git a/services/rolesanywhere/pom.xml b/services/rolesanywhere/pom.xml index ed2af87f6c24..adbbd64dab36 100644 --- a/services/rolesanywhere/pom.xml +++ b/services/rolesanywhere/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rolesanywhere AWS Java SDK :: Services :: Roles Anywhere diff --git a/services/route53/pom.xml b/services/route53/pom.xml index 5f8ed19eb427..ecaea5a71a5c 100644 --- a/services/route53/pom.xml +++ b/services/route53/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53 AWS Java SDK :: Services :: Amazon Route53 diff --git a/services/route53domains/pom.xml b/services/route53domains/pom.xml index cd8198334587..a89705f1487a 100644 --- a/services/route53domains/pom.xml +++ b/services/route53domains/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53domains AWS Java SDK :: Services :: Amazon Route53 Domains diff --git a/services/route53profiles/pom.xml b/services/route53profiles/pom.xml index ccec9fa9af6e..c7e3c4639a8a 100644 --- a/services/route53profiles/pom.xml +++ b/services/route53profiles/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53profiles AWS Java SDK :: Services :: Route53 Profiles diff --git a/services/route53recoverycluster/pom.xml b/services/route53recoverycluster/pom.xml index da2298f733d8..18b32cc59b06 100644 --- a/services/route53recoverycluster/pom.xml +++ b/services/route53recoverycluster/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53recoverycluster AWS Java SDK :: Services :: Route53 Recovery Cluster diff --git a/services/route53recoverycontrolconfig/pom.xml b/services/route53recoverycontrolconfig/pom.xml index 1932cca83564..5918d9026986 100644 --- a/services/route53recoverycontrolconfig/pom.xml +++ b/services/route53recoverycontrolconfig/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53recoverycontrolconfig AWS Java SDK :: Services :: Route53 Recovery Control Config diff --git a/services/route53recoveryreadiness/pom.xml b/services/route53recoveryreadiness/pom.xml index 4d1a0a67c783..fffb0eb2e26e 100644 --- a/services/route53recoveryreadiness/pom.xml +++ b/services/route53recoveryreadiness/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53recoveryreadiness AWS Java SDK :: Services :: Route53 Recovery Readiness diff --git a/services/route53resolver/pom.xml b/services/route53resolver/pom.xml index f1ca8e392bf8..224d56272e49 100644 --- a/services/route53resolver/pom.xml +++ b/services/route53resolver/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 route53resolver AWS Java SDK :: Services :: Route53Resolver diff --git a/services/rum/pom.xml b/services/rum/pom.xml index ac4e2f4d7da9..7feb355d823f 100644 --- a/services/rum/pom.xml +++ b/services/rum/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 rum AWS Java SDK :: Services :: RUM diff --git a/services/s3/pom.xml b/services/s3/pom.xml index 4a3bbdaad39d..303629b8d838 100644 --- a/services/s3/pom.xml +++ b/services/s3/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 s3 AWS Java SDK :: Services :: Amazon S3 diff --git a/services/s3/src/main/resources/codegen-resources/customization.config b/services/s3/src/main/resources/codegen-resources/customization.config index 809ef3d714aa..ccb726181f1a 100644 --- a/services/s3/src/main/resources/codegen-resources/customization.config +++ b/services/s3/src/main/resources/codegen-resources/customization.config @@ -344,7 +344,7 @@ "operationName": "DeleteObjects", "operationContextParamsMap": { "DeleteObjectKeys": { - "value": "Delete.Objects[*].Key" + "path": "Delete.Objects[*].Key" } } } diff --git a/services/s3control/pom.xml b/services/s3control/pom.xml index e4cd129fc404..62faf180507f 100644 --- a/services/s3control/pom.xml +++ b/services/s3control/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 s3control AWS Java SDK :: Services :: Amazon S3 Control diff --git a/services/s3outposts/pom.xml b/services/s3outposts/pom.xml index 26c2a069db51..725645007cdf 100644 --- a/services/s3outposts/pom.xml +++ b/services/s3outposts/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 s3outposts AWS Java SDK :: Services :: S3 Outposts diff --git a/services/sagemaker/pom.xml b/services/sagemaker/pom.xml index 15aaaaae5885..4295016d5637 100644 --- a/services/sagemaker/pom.xml +++ b/services/sagemaker/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 sagemaker diff --git a/services/sagemaker/src/main/resources/codegen-resources/service-2.json b/services/sagemaker/src/main/resources/codegen-resources/service-2.json index 7307b931fe3c..7310848cdf73 100644 --- a/services/sagemaker/src/main/resources/codegen-resources/service-2.json +++ b/services/sagemaker/src/main/resources/codegen-resources/service-2.json @@ -54,6 +54,19 @@ ], "documentation":"

Associates a trial component with a trial. A trial component can be associated with multiple trials. To disassociate a trial component from a trial, call the DisassociateTrialComponent API.

" }, + "BatchDeleteClusterNodes":{ + "name":"BatchDeleteClusterNodes", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"BatchDeleteClusterNodesRequest"}, + "output":{"shape":"BatchDeleteClusterNodesResponse"}, + "errors":[ + {"shape":"ResourceNotFound"} + ], + "documentation":"

Deletes specific nodes within a SageMaker HyperPod cluster. BatchDeleteClusterNodes accepts a cluster name and a list of node IDs.

" + }, "BatchDescribeModelPackage":{ "name":"BatchDescribeModelPackage", "http":{ @@ -3670,7 +3683,7 @@ {"shape":"ResourceNotFound"}, {"shape":"ConflictException"} ], - "documentation":"

Updates the platform software of a SageMaker HyperPod cluster for security patching. To learn how to use this API, see Update the SageMaker HyperPod platform software of a cluster.

" + "documentation":"

Updates the platform software of a SageMaker HyperPod cluster for security patching. To learn how to use this API, see Update the SageMaker HyperPod platform software of a cluster.

The UpgradeClusterSoftware API call may impact your SageMaker HyperPod cluster uptime and availability. Plan accordingly to mitigate potential disruptions to your workloads.

" }, "UpdateCodeRepository":{ "name":"UpdateCodeRepository", @@ -6188,6 +6201,73 @@ }, "documentation":"

Configuration to control how SageMaker captures inference data for batch transform jobs.

" }, + "BatchDeleteClusterNodesError":{ + "type":"structure", + "required":[ + "Code", + "Message", + "NodeId" + ], + "members":{ + "Code":{ + "shape":"BatchDeleteClusterNodesErrorCode", + "documentation":"

The error code associated with the error encountered when deleting a node.

The code provides information about the specific issue encountered, such as the node not being found, the node's status being invalid for deletion, or the node ID being in use by another process.

" + }, + "Message":{ + "shape":"String", + "documentation":"

A message describing the error encountered when deleting a node.

" + }, + "NodeId":{ + "shape":"ClusterNodeId", + "documentation":"

The ID of the node that encountered an error during the deletion process.

" + } + }, + "documentation":"

Represents an error encountered when deleting a node from a SageMaker HyperPod cluster.

" + }, + "BatchDeleteClusterNodesErrorCode":{ + "type":"string", + "enum":[ + "NodeIdNotFound", + "InvalidNodeStatus", + "NodeIdInUse" + ] + }, + "BatchDeleteClusterNodesErrorList":{ + "type":"list", + "member":{"shape":"BatchDeleteClusterNodesError"}, + "max":99, + "min":1 + }, + "BatchDeleteClusterNodesRequest":{ + "type":"structure", + "required":[ + "ClusterName", + "NodeIds" + ], + "members":{ + "ClusterName":{ + "shape":"ClusterNameOrArn", + "documentation":"

The name of the SageMaker HyperPod cluster from which to delete the specified nodes.

" + }, + "NodeIds":{ + "shape":"ClusterNodeIds", + "documentation":"

A list of node IDs to be deleted from the specified cluster.

For SageMaker HyperPod clusters using the Slurm workload manager, you cannot remove instances that are configured as Slurm controller nodes.

" + } + } + }, + "BatchDeleteClusterNodesResponse":{ + "type":"structure", + "members":{ + "Failed":{ + "shape":"BatchDeleteClusterNodesErrorList", + "documentation":"

A list of errors encountered when deleting the specified nodes.

" + }, + "Successful":{ + "shape":"ClusterNodeIds", + "documentation":"

A list of node IDs that were successfully deleted from the specified cluster.

" + } + } + }, "BatchDescribeModelPackageError":{ "type":"structure", "required":[ @@ -7439,7 +7519,26 @@ "ml.t3.medium", "ml.t3.large", "ml.t3.xlarge", - "ml.t3.2xlarge" + "ml.t3.2xlarge", + "ml.g6.xlarge", + "ml.g6.2xlarge", + "ml.g6.4xlarge", + "ml.g6.8xlarge", + "ml.g6.16xlarge", + "ml.g6.12xlarge", + "ml.g6.24xlarge", + "ml.g6.48xlarge", + "ml.gr6.4xlarge", + "ml.gr6.8xlarge", + "ml.g6e.xlarge", + "ml.g6e.2xlarge", + "ml.g6e.4xlarge", + "ml.g6e.8xlarge", + "ml.g6e.16xlarge", + "ml.g6e.12xlarge", + "ml.g6e.24xlarge", + "ml.g6e.48xlarge", + "ml.p5e.48xlarge" ] }, "ClusterLifeCycleConfig":{ @@ -7533,6 +7632,12 @@ "min":1, "pattern":"^i-[a-f0-9]{8}(?:[a-f0-9]{9})?$" }, + "ClusterNodeIds":{ + "type":"list", + "member":{"shape":"ClusterNodeId"}, + "max":99, + "min":1 + }, "ClusterNodeRecovery":{ "type":"string", "enum":[ @@ -36525,6 +36630,22 @@ "ml.g5.12xlarge", "ml.g5.24xlarge", "ml.g5.48xlarge", + "ml.g6.xlarge", + "ml.g6.2xlarge", + "ml.g6.4xlarge", + "ml.g6.8xlarge", + "ml.g6.16xlarge", + "ml.g6.12xlarge", + "ml.g6.24xlarge", + "ml.g6.48xlarge", + "ml.g6e.xlarge", + "ml.g6e.2xlarge", + "ml.g6e.4xlarge", + "ml.g6e.8xlarge", + "ml.g6e.16xlarge", + "ml.g6e.12xlarge", + "ml.g6e.24xlarge", + "ml.g6e.48xlarge", "ml.trn1.2xlarge", "ml.trn1.32xlarge", "ml.trn1n.32xlarge", @@ -36862,6 +36983,10 @@ "shape":"TrainingJobStatus", "documentation":"

The status of the training job.

" }, + "SecondaryStatus":{ + "shape":"SecondaryStatus", + "documentation":"

The secondary status of the training job.

" + }, "WarmPoolStatus":{ "shape":"WarmPoolStatus", "documentation":"

The status of the warm pool associated with the training job.

" diff --git a/services/sagemakera2iruntime/pom.xml b/services/sagemakera2iruntime/pom.xml index 707f35a6d7b2..e4ab800e7157 100644 --- a/services/sagemakera2iruntime/pom.xml +++ b/services/sagemakera2iruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakera2iruntime AWS Java SDK :: Services :: SageMaker A2I Runtime diff --git a/services/sagemakeredge/pom.xml b/services/sagemakeredge/pom.xml index e34814f44479..dee8efec9111 100644 --- a/services/sagemakeredge/pom.xml +++ b/services/sagemakeredge/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakeredge AWS Java SDK :: Services :: Sagemaker Edge diff --git a/services/sagemakerfeaturestoreruntime/pom.xml b/services/sagemakerfeaturestoreruntime/pom.xml index 396f7b60efc2..00cb9619735b 100644 --- a/services/sagemakerfeaturestoreruntime/pom.xml +++ b/services/sagemakerfeaturestoreruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakerfeaturestoreruntime AWS Java SDK :: Services :: Sage Maker Feature Store Runtime diff --git a/services/sagemakergeospatial/pom.xml b/services/sagemakergeospatial/pom.xml index adf20a74c779..41717d58d8fe 100644 --- a/services/sagemakergeospatial/pom.xml +++ b/services/sagemakergeospatial/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakergeospatial AWS Java SDK :: Services :: Sage Maker Geospatial diff --git a/services/sagemakermetrics/pom.xml b/services/sagemakermetrics/pom.xml index 9f13a7faf17e..c9baf6990e9a 100644 --- a/services/sagemakermetrics/pom.xml +++ b/services/sagemakermetrics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakermetrics AWS Java SDK :: Services :: Sage Maker Metrics diff --git a/services/sagemakerruntime/pom.xml b/services/sagemakerruntime/pom.xml index 203ea4aa9479..f04bc31d4d9e 100644 --- a/services/sagemakerruntime/pom.xml +++ b/services/sagemakerruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sagemakerruntime AWS Java SDK :: Services :: SageMaker Runtime diff --git a/services/savingsplans/pom.xml b/services/savingsplans/pom.xml index c3a3bbce0699..0459d9623493 100644 --- a/services/savingsplans/pom.xml +++ b/services/savingsplans/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 savingsplans AWS Java SDK :: Services :: Savingsplans diff --git a/services/scheduler/pom.xml b/services/scheduler/pom.xml index 8ae3d0750a3b..849063ca6062 100644 --- a/services/scheduler/pom.xml +++ b/services/scheduler/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 scheduler AWS Java SDK :: Services :: Scheduler diff --git a/services/schemas/pom.xml b/services/schemas/pom.xml index 98d16729e9ab..84533fce4005 100644 --- a/services/schemas/pom.xml +++ b/services/schemas/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 schemas AWS Java SDK :: Services :: Schemas diff --git a/services/secretsmanager/pom.xml b/services/secretsmanager/pom.xml index f2d8939dab78..0a49e21b375f 100644 --- a/services/secretsmanager/pom.xml +++ b/services/secretsmanager/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 secretsmanager AWS Java SDK :: Services :: AWS Secrets Manager diff --git a/services/securityhub/pom.xml b/services/securityhub/pom.xml index 606b2a0c1001..aeff6885874b 100644 --- a/services/securityhub/pom.xml +++ b/services/securityhub/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 securityhub AWS Java SDK :: Services :: SecurityHub diff --git a/services/securitylake/pom.xml b/services/securitylake/pom.xml index 687efc16528f..ea1a6bb775ae 100644 --- a/services/securitylake/pom.xml +++ b/services/securitylake/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 securitylake AWS Java SDK :: Services :: Security Lake diff --git a/services/serverlessapplicationrepository/pom.xml b/services/serverlessapplicationrepository/pom.xml index 2d6d3d70ed38..ab3b7971c3b5 100644 --- a/services/serverlessapplicationrepository/pom.xml +++ b/services/serverlessapplicationrepository/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 serverlessapplicationrepository diff --git a/services/servicecatalog/pom.xml b/services/servicecatalog/pom.xml index 7dff366900ff..a93d03a88b24 100644 --- a/services/servicecatalog/pom.xml +++ b/services/servicecatalog/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 servicecatalog AWS Java SDK :: Services :: AWS Service Catalog diff --git a/services/servicecatalogappregistry/pom.xml b/services/servicecatalogappregistry/pom.xml index 5a37b542944e..a24c2b60f9b9 100644 --- a/services/servicecatalogappregistry/pom.xml +++ b/services/servicecatalogappregistry/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 servicecatalogappregistry AWS Java SDK :: Services :: Service Catalog App Registry diff --git a/services/servicediscovery/pom.xml b/services/servicediscovery/pom.xml index e826c676d214..5bfe19c2f960 100644 --- a/services/servicediscovery/pom.xml +++ b/services/servicediscovery/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 servicediscovery diff --git a/services/servicequotas/pom.xml b/services/servicequotas/pom.xml index b9b9414cbee1..876c83b60e74 100644 --- a/services/servicequotas/pom.xml +++ b/services/servicequotas/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 servicequotas AWS Java SDK :: Services :: Service Quotas diff --git a/services/ses/pom.xml b/services/ses/pom.xml index e8b203355b11..7a9b5aa6a6dd 100644 --- a/services/ses/pom.xml +++ b/services/ses/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ses AWS Java SDK :: Services :: Amazon SES diff --git a/services/sesv2/pom.xml b/services/sesv2/pom.xml index 149cad3231f4..4cf372f9e2f8 100644 --- a/services/sesv2/pom.xml +++ b/services/sesv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sesv2 AWS Java SDK :: Services :: SESv2 diff --git a/services/sesv2/src/main/resources/codegen-resources/service-2.json b/services/sesv2/src/main/resources/codegen-resources/service-2.json index da55b7561727..70bb197f1157 100644 --- a/services/sesv2/src/main/resources/codegen-resources/service-2.json +++ b/services/sesv2/src/main/resources/codegen-resources/service-2.json @@ -6605,6 +6605,10 @@ "shape":"AmazonResourceName", "documentation":"

The Amazon Resource Name (ARN) of the template.

" }, + "TemplateContent":{ + "shape":"EmailTemplateContent", + "documentation":"

The content of the template.

Amazon SES supports only simple substitions when you send email using the SendEmail or SendBulkEmail operations and you provide the full template content in the request.

" + }, "TemplateData":{ "shape":"EmailTemplateData", "documentation":"

An object that defines the values to use for message variables in the template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the value to use for that variable.

" @@ -6614,7 +6618,7 @@ "documentation":"

The list of message headers that will be added to the email message.

" } }, - "documentation":"

An object that defines the email template to use for an email message, and the values to use for any message variables in that template. An email template is a type of message template that contains content that you want to define, save, and reuse in email messages that you send.

" + "documentation":"

An object that defines the email template to use for an email message, and the values to use for any message variables in that template. An email template is a type of message template that contains content that you want to reuse in email messages that you send. You can specifiy the email template by providing the name or ARN of an email template previously saved in your Amazon SES account or by providing the full template content.

" }, "TemplateContent":{ "type":"string", diff --git a/services/sfn/pom.xml b/services/sfn/pom.xml index ea0574edad96..f0f60cf0664c 100644 --- a/services/sfn/pom.xml +++ b/services/sfn/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sfn AWS Java SDK :: Services :: AWS Step Functions diff --git a/services/shield/pom.xml b/services/shield/pom.xml index 907f4fd4ac32..a1d4039e3538 100644 --- a/services/shield/pom.xml +++ b/services/shield/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 shield AWS Java SDK :: Services :: AWS Shield diff --git a/services/signer/pom.xml b/services/signer/pom.xml index 49a2fd693535..6168841220ed 100644 --- a/services/signer/pom.xml +++ b/services/signer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 signer AWS Java SDK :: Services :: Signer diff --git a/services/simspaceweaver/pom.xml b/services/simspaceweaver/pom.xml index afec8c709201..613ca7547900 100644 --- a/services/simspaceweaver/pom.xml +++ b/services/simspaceweaver/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 simspaceweaver AWS Java SDK :: Services :: Sim Space Weaver diff --git a/services/sms/pom.xml b/services/sms/pom.xml index 3451295ab923..340bd72d7dec 100644 --- a/services/sms/pom.xml +++ b/services/sms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sms AWS Java SDK :: Services :: AWS Server Migration diff --git a/services/snowball/pom.xml b/services/snowball/pom.xml index 5955f7f09492..22c46601ef13 100644 --- a/services/snowball/pom.xml +++ b/services/snowball/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 snowball AWS Java SDK :: Services :: Amazon Snowball diff --git a/services/snowdevicemanagement/pom.xml b/services/snowdevicemanagement/pom.xml index 4f557ad179b8..7d93c6748833 100644 --- a/services/snowdevicemanagement/pom.xml +++ b/services/snowdevicemanagement/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 snowdevicemanagement AWS Java SDK :: Services :: Snow Device Management diff --git a/services/sns/pom.xml b/services/sns/pom.xml index c4370f4b4d4b..b77e69037880 100644 --- a/services/sns/pom.xml +++ b/services/sns/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sns AWS Java SDK :: Services :: Amazon SNS diff --git a/services/socialmessaging/pom.xml b/services/socialmessaging/pom.xml index 46e3f87bd4d5..a01fe3f60eb2 100644 --- a/services/socialmessaging/pom.xml +++ b/services/socialmessaging/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 socialmessaging AWS Java SDK :: Services :: Social Messaging diff --git a/services/sqs/pom.xml b/services/sqs/pom.xml index fe1dfef6cc32..c61e093e4b4f 100644 --- a/services/sqs/pom.xml +++ b/services/sqs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sqs AWS Java SDK :: Services :: Amazon SQS diff --git a/services/ssm/pom.xml b/services/ssm/pom.xml index 7c54b0738420..c53f2f9387df 100644 --- a/services/ssm/pom.xml +++ b/services/ssm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssm AWS Java SDK :: Services :: AWS Simple Systems Management (SSM) diff --git a/services/ssmcontacts/pom.xml b/services/ssmcontacts/pom.xml index 60e27f5a79c0..0f997cad652d 100644 --- a/services/ssmcontacts/pom.xml +++ b/services/ssmcontacts/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssmcontacts AWS Java SDK :: Services :: SSM Contacts diff --git a/services/ssmincidents/pom.xml b/services/ssmincidents/pom.xml index 2013953becbc..f55b6800ea1a 100644 --- a/services/ssmincidents/pom.xml +++ b/services/ssmincidents/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssmincidents AWS Java SDK :: Services :: SSM Incidents diff --git a/services/ssmquicksetup/pom.xml b/services/ssmquicksetup/pom.xml index ff4063247701..e63b07975a91 100644 --- a/services/ssmquicksetup/pom.xml +++ b/services/ssmquicksetup/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssmquicksetup AWS Java SDK :: Services :: SSM Quick Setup diff --git a/services/ssmsap/pom.xml b/services/ssmsap/pom.xml index 66e6117393aa..5eccf8693cd9 100644 --- a/services/ssmsap/pom.xml +++ b/services/ssmsap/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssmsap AWS Java SDK :: Services :: Ssm Sap diff --git a/services/sso/pom.xml b/services/sso/pom.xml index 2528edcea4c6..d8bb191aac6f 100644 --- a/services/sso/pom.xml +++ b/services/sso/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sso AWS Java SDK :: Services :: SSO diff --git a/services/ssoadmin/pom.xml b/services/ssoadmin/pom.xml index 11415d505b3b..09e680e43994 100644 --- a/services/ssoadmin/pom.xml +++ b/services/ssoadmin/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssoadmin AWS Java SDK :: Services :: SSO Admin diff --git a/services/ssooidc/pom.xml b/services/ssooidc/pom.xml index de6b6b91d03c..1e2d40311301 100644 --- a/services/ssooidc/pom.xml +++ b/services/ssooidc/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 ssooidc AWS Java SDK :: Services :: SSO OIDC diff --git a/services/storagegateway/pom.xml b/services/storagegateway/pom.xml index 51927594a51a..01bd5d05b9a8 100644 --- a/services/storagegateway/pom.xml +++ b/services/storagegateway/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 storagegateway AWS Java SDK :: Services :: AWS Storage Gateway diff --git a/services/sts/pom.xml b/services/sts/pom.xml index c7266d889ded..d91891877ee8 100644 --- a/services/sts/pom.xml +++ b/services/sts/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 sts AWS Java SDK :: Services :: AWS STS diff --git a/services/supplychain/pom.xml b/services/supplychain/pom.xml index 2e9360131d32..8541c3b84da4 100644 --- a/services/supplychain/pom.xml +++ b/services/supplychain/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 supplychain AWS Java SDK :: Services :: Supply Chain diff --git a/services/support/pom.xml b/services/support/pom.xml index 8cfd5495c840..ab4f0e8f8ce1 100644 --- a/services/support/pom.xml +++ b/services/support/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 support AWS Java SDK :: Services :: AWS Support diff --git a/services/supportapp/pom.xml b/services/supportapp/pom.xml index 3a93c7c2615f..bda50fa75475 100644 --- a/services/supportapp/pom.xml +++ b/services/supportapp/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 supportapp AWS Java SDK :: Services :: Support App diff --git a/services/swf/pom.xml b/services/swf/pom.xml index 407ffac95100..f948c7759bf6 100644 --- a/services/swf/pom.xml +++ b/services/swf/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 swf AWS Java SDK :: Services :: Amazon SWF diff --git a/services/synthetics/pom.xml b/services/synthetics/pom.xml index 53f6f1926038..1eef9d6f3296 100644 --- a/services/synthetics/pom.xml +++ b/services/synthetics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 synthetics AWS Java SDK :: Services :: Synthetics diff --git a/services/taxsettings/pom.xml b/services/taxsettings/pom.xml index 1e96e13f3d74..14e2fb22e05f 100644 --- a/services/taxsettings/pom.xml +++ b/services/taxsettings/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 taxsettings AWS Java SDK :: Services :: Tax Settings diff --git a/services/textract/pom.xml b/services/textract/pom.xml index a05f18b5f6ca..ae62a9a91e32 100644 --- a/services/textract/pom.xml +++ b/services/textract/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 textract AWS Java SDK :: Services :: Textract diff --git a/services/timestreaminfluxdb/pom.xml b/services/timestreaminfluxdb/pom.xml index 764087b40973..c10db83d5077 100644 --- a/services/timestreaminfluxdb/pom.xml +++ b/services/timestreaminfluxdb/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 timestreaminfluxdb AWS Java SDK :: Services :: Timestream Influx DB diff --git a/services/timestreamquery/pom.xml b/services/timestreamquery/pom.xml index b0cee6bb9f46..f33ba732fd2f 100644 --- a/services/timestreamquery/pom.xml +++ b/services/timestreamquery/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 timestreamquery AWS Java SDK :: Services :: Timestream Query diff --git a/services/timestreamwrite/pom.xml b/services/timestreamwrite/pom.xml index d1200d096449..2a5d577d646d 100644 --- a/services/timestreamwrite/pom.xml +++ b/services/timestreamwrite/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 timestreamwrite AWS Java SDK :: Services :: Timestream Write diff --git a/services/tnb/pom.xml b/services/tnb/pom.xml index ce454935ae62..f35b62ac4fc9 100644 --- a/services/tnb/pom.xml +++ b/services/tnb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 tnb AWS Java SDK :: Services :: Tnb diff --git a/services/transcribe/pom.xml b/services/transcribe/pom.xml index 10b2ea91ca5d..a40da5859d4b 100644 --- a/services/transcribe/pom.xml +++ b/services/transcribe/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 transcribe AWS Java SDK :: Services :: Transcribe diff --git a/services/transcribestreaming/pom.xml b/services/transcribestreaming/pom.xml index e2b2b4a465fb..6bc502964bfd 100644 --- a/services/transcribestreaming/pom.xml +++ b/services/transcribestreaming/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 transcribestreaming AWS Java SDK :: Services :: AWS Transcribe Streaming diff --git a/services/transfer/pom.xml b/services/transfer/pom.xml index 2facb13962ad..cee4d1f14ffa 100644 --- a/services/transfer/pom.xml +++ b/services/transfer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 transfer AWS Java SDK :: Services :: Transfer diff --git a/services/translate/pom.xml b/services/translate/pom.xml index 1db5b2186197..458e99513ffe 100644 --- a/services/translate/pom.xml +++ b/services/translate/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 translate diff --git a/services/trustedadvisor/pom.xml b/services/trustedadvisor/pom.xml index dac15993d3ca..7d0d753cd6fa 100644 --- a/services/trustedadvisor/pom.xml +++ b/services/trustedadvisor/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 trustedadvisor AWS Java SDK :: Services :: Trusted Advisor diff --git a/services/verifiedpermissions/pom.xml b/services/verifiedpermissions/pom.xml index 6a98ff48b0cd..60dcc445d00d 100644 --- a/services/verifiedpermissions/pom.xml +++ b/services/verifiedpermissions/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 verifiedpermissions AWS Java SDK :: Services :: Verified Permissions diff --git a/services/voiceid/pom.xml b/services/voiceid/pom.xml index 2a6fb9732f57..b54c7936f0c7 100644 --- a/services/voiceid/pom.xml +++ b/services/voiceid/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 voiceid AWS Java SDK :: Services :: Voice ID diff --git a/services/vpclattice/pom.xml b/services/vpclattice/pom.xml index d0eb03c732d8..ecdf3156587b 100644 --- a/services/vpclattice/pom.xml +++ b/services/vpclattice/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 vpclattice AWS Java SDK :: Services :: VPC Lattice diff --git a/services/waf/pom.xml b/services/waf/pom.xml index 221687b40323..d7eb4df5cbff 100644 --- a/services/waf/pom.xml +++ b/services/waf/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 waf AWS Java SDK :: Services :: AWS WAF diff --git a/services/wafv2/pom.xml b/services/wafv2/pom.xml index dab98d1634b9..3f0e94c32720 100644 --- a/services/wafv2/pom.xml +++ b/services/wafv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 wafv2 AWS Java SDK :: Services :: WAFV2 diff --git a/services/wellarchitected/pom.xml b/services/wellarchitected/pom.xml index f026a3baaf8a..3790f7f4fda6 100644 --- a/services/wellarchitected/pom.xml +++ b/services/wellarchitected/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 wellarchitected AWS Java SDK :: Services :: Well Architected diff --git a/services/wisdom/pom.xml b/services/wisdom/pom.xml index 414c1e029df4..42598adb5226 100644 --- a/services/wisdom/pom.xml +++ b/services/wisdom/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 wisdom AWS Java SDK :: Services :: Wisdom diff --git a/services/workdocs/pom.xml b/services/workdocs/pom.xml index 881771b22b02..17de8f1fc2e0 100644 --- a/services/workdocs/pom.xml +++ b/services/workdocs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 workdocs AWS Java SDK :: Services :: Amazon WorkDocs diff --git a/services/workmail/pom.xml b/services/workmail/pom.xml index 0f9cbe9b99ea..534e9b1af03c 100644 --- a/services/workmail/pom.xml +++ b/services/workmail/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 workmail diff --git a/services/workmailmessageflow/pom.xml b/services/workmailmessageflow/pom.xml index 9694588dc405..71d116fefeed 100644 --- a/services/workmailmessageflow/pom.xml +++ b/services/workmailmessageflow/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 workmailmessageflow AWS Java SDK :: Services :: WorkMailMessageFlow diff --git a/services/workspaces/pom.xml b/services/workspaces/pom.xml index 317cdc7bcca6..a2dc77b44b2a 100644 --- a/services/workspaces/pom.xml +++ b/services/workspaces/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 workspaces AWS Java SDK :: Services :: Amazon WorkSpaces diff --git a/services/workspacesthinclient/pom.xml b/services/workspacesthinclient/pom.xml index 65838a77ebbf..6d79e8d522f3 100644 --- a/services/workspacesthinclient/pom.xml +++ b/services/workspacesthinclient/pom.xml @@ -17,7 +17,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 workspacesthinclient AWS Java SDK :: Services :: Work Spaces Thin Client diff --git a/services/workspacesweb/pom.xml b/services/workspacesweb/pom.xml index 2b4c05e5679c..cb0067c07d9d 100644 --- a/services/workspacesweb/pom.xml +++ b/services/workspacesweb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 workspacesweb AWS Java SDK :: Services :: Work Spaces Web diff --git a/services/xray/pom.xml b/services/xray/pom.xml index 2bf54130f4df..6dd8120c4dd4 100644 --- a/services/xray/pom.xml +++ b/services/xray/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.29.4 + 2.29.5 xray AWS Java SDK :: Services :: AWS X-Ray diff --git a/test/auth-tests/pom.xml b/test/auth-tests/pom.xml index f2b0073f30f7..1b17e384467b 100644 --- a/test/auth-tests/pom.xml +++ b/test/auth-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/bundle-logging-bridge-binding-test/pom.xml b/test/bundle-logging-bridge-binding-test/pom.xml index 2e6552e711d1..6d9c903f64c4 100644 --- a/test/bundle-logging-bridge-binding-test/pom.xml +++ b/test/bundle-logging-bridge-binding-test/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/bundle-shading-tests/pom.xml b/test/bundle-shading-tests/pom.xml index b893d9a7429f..1d2daffecdbf 100644 --- a/test/bundle-shading-tests/pom.xml +++ b/test/bundle-shading-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/codegen-generated-classes-test/pom.xml b/test/codegen-generated-classes-test/pom.xml index 24184a8f599d..c78484bd654d 100644 --- a/test/codegen-generated-classes-test/pom.xml +++ b/test/codegen-generated-classes-test/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml diff --git a/test/codegen-generated-classes-test/src/main/resources/codegen-resources/customresponsemetadata/customization.config b/test/codegen-generated-classes-test/src/main/resources/codegen-resources/customresponsemetadata/customization.config index 3d81323039db..b23341dbf867 100644 --- a/test/codegen-generated-classes-test/src/main/resources/codegen-resources/customresponsemetadata/customization.config +++ b/test/codegen-generated-classes-test/src/main/resources/codegen-resources/customresponsemetadata/customization.config @@ -35,7 +35,7 @@ "operationName": "GetOperationWithMapEndpointParam", "operationContextParamsMap": { "Tables": { - "value" : "keys(MapOfStrings)" + "path" : "keys(MapOfStrings)" } } } diff --git a/test/codegen-generated-classes-test/src/main/resources/codegen-resources/endpointproviders/customization.config b/test/codegen-generated-classes-test/src/main/resources/codegen-resources/endpointproviders/customization.config index 2b452d3b12a3..341d2bca3aa5 100644 --- a/test/codegen-generated-classes-test/src/main/resources/codegen-resources/endpointproviders/customization.config +++ b/test/codegen-generated-classes-test/src/main/resources/codegen-resources/endpointproviders/customization.config @@ -34,19 +34,19 @@ "operationName": "NestedContainersOperation", "operationContextParamsMap": { "PojoString": { - "value": "Nested.StringMember" + "path": "Nested.StringMember" }, "BasicListOfString": { - "value": "ListOfString" + "path": "ListOfString" }, "WildcardKeyListOfString": { - "value": "Nested.ListOfNested[*].StringMember" + "path": "Nested.ListOfNested[*].StringMember" }, "KeysListOfString": { - "value": "keys(PojoKeys)" + "path": "keys(PojoKeys)" }, "MissingRequestValuesListOfString": { - "value": "Nested.ListOfString" + "path": "Nested.ListOfString" } } } diff --git a/test/crt-unavailable-tests/pom.xml b/test/crt-unavailable-tests/pom.xml index 2e722408a052..ea588ef4de97 100644 --- a/test/crt-unavailable-tests/pom.xml +++ b/test/crt-unavailable-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/http-client-tests/pom.xml b/test/http-client-tests/pom.xml index ea585aea4c8b..b84187d59480 100644 --- a/test/http-client-tests/pom.xml +++ b/test/http-client-tests/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml http-client-tests diff --git a/test/module-path-tests/pom.xml b/test/module-path-tests/pom.xml index 1ffdea0422bc..875eb1d460fe 100644 --- a/test/module-path-tests/pom.xml +++ b/test/module-path-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/old-client-version-compatibility-test/pom.xml b/test/old-client-version-compatibility-test/pom.xml index 7e9430fe6fff..acb69fa0052e 100644 --- a/test/old-client-version-compatibility-test/pom.xml +++ b/test/old-client-version-compatibility-test/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml diff --git a/test/protocol-tests-core/pom.xml b/test/protocol-tests-core/pom.xml index 85ca2d6be75d..bcf434b4aa91 100644 --- a/test/protocol-tests-core/pom.xml +++ b/test/protocol-tests-core/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/protocol-tests/pom.xml b/test/protocol-tests/pom.xml index 6204420f2103..466346501926 100644 --- a/test/protocol-tests/pom.xml +++ b/test/protocol-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 @@ -255,6 +255,52 @@ ${awsjavasdk.version} test + + io.netty + netty-codec-http + test + + + io.netty + netty-codec-http2 + test + + + io.netty + netty-transport + test + + + io.netty + netty-common + test + + + io.netty + netty-buffer + test + + + io.netty + netty-handler + test + + + io.netty + netty-tcnative-boringssl-static + test + + + org.bouncycastle + bcpkix-jdk15on + 1.70 + test + + + software.amazon.eventstream + eventstream + test + diff --git a/test/protocol-tests/src/main/resources/codegen-resources/restjson/service-2.json b/test/protocol-tests/src/main/resources/codegen-resources/restjson/service-2.json index 144f38b9a771..1ddadd6f392e 100644 --- a/test/protocol-tests/src/main/resources/codegen-resources/restjson/service-2.json +++ b/test/protocol-tests/src/main/resources/codegen-resources/restjson/service-2.json @@ -925,6 +925,9 @@ }, "EventTwo": { "shape": "EventTwo" + }, + "errorOne": { + "shape": "EmptyModeledException" } }, "eventstream": true diff --git a/test/protocol-tests/src/test/java/software/amazon/awssdk/protocol/tests/EventStreamExceptionUnmarshallingTest.java b/test/protocol-tests/src/test/java/software/amazon/awssdk/protocol/tests/EventStreamExceptionUnmarshallingTest.java new file mode 100644 index 000000000000..45bb245c679f --- /dev/null +++ b/test/protocol-tests/src/test/java/software/amazon/awssdk/protocol/tests/EventStreamExceptionUnmarshallingTest.java @@ -0,0 +1,232 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.protocol.tests; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static software.amazon.awssdk.http.SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.buffer.Unpooled; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.ServerSocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.handler.codec.http2.DefaultHttp2DataFrame; +import io.netty.handler.codec.http2.DefaultHttp2Headers; +import io.netty.handler.codec.http2.DefaultHttp2HeadersFrame; +import io.netty.handler.codec.http2.Http2DataFrame; +import io.netty.handler.codec.http2.Http2Frame; +import io.netty.handler.codec.http2.Http2FrameCodec; +import io.netty.handler.codec.http2.Http2FrameCodecBuilder; +import io.netty.handler.codec.http2.Http2Headers; +import io.netty.handler.codec.http2.Http2MultiplexHandler; +import io.netty.handler.codec.http2.Http2Settings; +import io.netty.handler.ssl.SslContext; +import io.netty.handler.ssl.SslContextBuilder; +import io.netty.handler.ssl.util.SelfSignedCertificate; +import io.reactivex.Flowable; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicReference; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.core.async.SdkPublisher; +import software.amazon.awssdk.http.Protocol; +import software.amazon.awssdk.http.async.SdkAsyncHttpClient; +import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; +import software.amazon.awssdk.http.nio.netty.SdkEventLoopGroup; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.retries.DefaultRetryStrategy; +import software.amazon.awssdk.services.protocolrestjson.ProtocolRestJsonAsyncClient; +import software.amazon.awssdk.services.protocolrestjson.model.EmptyModeledException; +import software.amazon.awssdk.services.protocolrestjson.model.EventStream; +import software.amazon.awssdk.services.protocolrestjson.model.EventStreamOperationResponse; +import software.amazon.awssdk.services.protocolrestjson.model.EventStreamOperationResponseHandler; +import software.amazon.awssdk.utils.AttributeMap; +import software.amazon.eventstream.HeaderValue; +import software.amazon.eventstream.Message; + +public class EventStreamExceptionUnmarshallingTest { + private static final AwsCredentialsProvider TEST_CREDENTIALS = StaticCredentialsProvider.create( + AwsBasicCredentials.create("akid", "skid")); + private static Server server; + private static ProtocolRestJsonAsyncClient client; + + @BeforeAll + public static void setup() throws Exception { + server = new Server(); + server.init(); + + SdkAsyncHttpClient netty = NettyNioAsyncHttpClient.builder() + .eventLoopGroup(SdkEventLoopGroup.builder().numberOfThreads(3).build()) + .protocol(Protocol.HTTP2) + .buildWithDefaults(AttributeMap.builder() + .put(TRUST_ALL_CERTIFICATES, + true) + .build()); + + client = ProtocolRestJsonAsyncClient.builder() + .overrideConfiguration(o -> o.retryStrategy(DefaultRetryStrategy.doNotRetry())) + .endpointOverride(URI.create("https://localhost:" + server.port())) + .region(Region.US_WEST_2) + .credentialsProvider(TEST_CREDENTIALS) + .httpClient(netty) + .build(); + } + + @AfterAll + public static void teardown() throws InterruptedException { + client.close(); + server.shutdown(); + } + + @Test + public void eventstreamOperation_errorMemberEvent_unmarshalledToCorrectClass() { + AtomicReference eventstreamException = new AtomicReference<>(); + + CompletableFuture operationFuture = client.eventStreamOperation(r -> { + }, Flowable.empty(), new EventStreamOperationResponseHandler() { + @Override + public void responseReceived(EventStreamOperationResponse response) { + } + + @Override + public void onEventStream(SdkPublisher publisher) { + publisher.subscribe(new Subscriber() { + @Override + public void onSubscribe(Subscription s) { + s.request(Long.MAX_VALUE); + } + + @Override + public void onNext(EventStream eventStream) { + } + + @Override + public void onError(Throwable t) { + eventstreamException.set(t); + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + public void exceptionOccurred(Throwable throwable) { + } + + @Override + public void complete() { + + } + }); + + assertThatThrownBy(operationFuture::join).hasCauseInstanceOf(EmptyModeledException.class); + assertThat(eventstreamException.get()).isInstanceOf(EmptyModeledException.class); + } + + private static class Server extends ChannelInitializer { + private ServerBootstrap bootstrap; + private ServerSocketChannel serverSock; + private final NioEventLoopGroup group = new NioEventLoopGroup(); + private SslContext sslCtx; + + void init() throws Exception { + SelfSignedCertificate ssc = new SelfSignedCertificate(); + sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build(); + + bootstrap = new ServerBootstrap() + .channel(NioServerSocketChannel.class) + .group(group) + .childHandler(this); + + serverSock = (ServerSocketChannel) bootstrap.bind(0).sync().channel(); + } + + @Override + protected void initChannel(Channel ch) { + ChannelPipeline pipeline = ch.pipeline(); + pipeline.addLast(sslCtx.newHandler(ch.alloc())); + + Http2FrameCodec http2Codec = Http2FrameCodecBuilder.forServer() + .autoAckPingFrame(true) + .initialSettings(Http2Settings.defaultSettings().maxConcurrentStreams(1)) + .build(); + + Http2MultiplexHandler http2Handler = new Http2MultiplexHandler(new ChannelInitializer() { + @Override + protected void initChannel(Channel ch) throws Exception { + ch.pipeline().addLast(new ResponseHandler()); + } + }); + + pipeline.addLast(http2Codec); + pipeline.addLast(http2Handler); + } + + public void shutdown() throws InterruptedException { + group.shutdownGracefully().await(); + serverSock.close(); + } + + public int port() { + return serverSock.localAddress().getPort(); + } + + private class ResponseHandler extends SimpleChannelInboundHandler { + + @Override + protected void channelRead0(ChannelHandlerContext ctx, Http2Frame frame) { + if ("DATA".equals(frame.name())) { + Http2DataFrame data = (Http2DataFrame) frame; + + if (data.isEndStream()) { + Http2Headers headers = new DefaultHttp2Headers(); + headers.status(HttpResponseStatus.OK.codeAsText()); + ctx.writeAndFlush(new DefaultHttp2HeadersFrame(headers)); + + Map eventHeaders = new HashMap<>(); + eventHeaders.put(":message-type", HeaderValue.fromString("exception")); + eventHeaders.put(":exception-type", HeaderValue.fromString("errorOne")); + Message errorEvent = new Message(eventHeaders, "{}".getBytes(StandardCharsets.UTF_8)); + DefaultHttp2DataFrame responseData = + new DefaultHttp2DataFrame(Unpooled.wrappedBuffer(errorEvent.toByteBuffer()), true); + ctx.writeAndFlush(responseData); + ctx.close(); + } + } + } + } + } +} diff --git a/test/region-testing/pom.xml b/test/region-testing/pom.xml index 613d90da1587..6667e7b5deeb 100644 --- a/test/region-testing/pom.xml +++ b/test/region-testing/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/ruleset-testing-core/pom.xml b/test/ruleset-testing-core/pom.xml index e91c1d7602e1..f657ea8b5383 100644 --- a/test/ruleset-testing-core/pom.xml +++ b/test/ruleset-testing-core/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/s3-benchmarks/pom.xml b/test/s3-benchmarks/pom.xml index 5075c7eba21a..f0df39303b11 100644 --- a/test/s3-benchmarks/pom.xml +++ b/test/s3-benchmarks/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/sdk-benchmarks/pom.xml b/test/sdk-benchmarks/pom.xml index af7f07690be2..96c4d87df211 100644 --- a/test/sdk-benchmarks/pom.xml +++ b/test/sdk-benchmarks/pom.xml @@ -19,7 +19,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml diff --git a/test/sdk-native-image-test/pom.xml b/test/sdk-native-image-test/pom.xml index 5c90759afe94..69f3f354cccf 100644 --- a/test/sdk-native-image-test/pom.xml +++ b/test/sdk-native-image-test/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/service-test-utils/pom.xml b/test/service-test-utils/pom.xml index a1f603b634f2..83c88cb56920 100644 --- a/test/service-test-utils/pom.xml +++ b/test/service-test-utils/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml service-test-utils diff --git a/test/stability-tests/pom.xml b/test/stability-tests/pom.xml index 6e6f4b11af5c..adb2026618f4 100644 --- a/test/stability-tests/pom.xml +++ b/test/stability-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/test-utils/pom.xml b/test/test-utils/pom.xml index 087c23fbb20d..c23f25801c4a 100644 --- a/test/test-utils/pom.xml +++ b/test/test-utils/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../../pom.xml test-utils diff --git a/test/tests-coverage-reporting/pom.xml b/test/tests-coverage-reporting/pom.xml index ee523277adae..bdc053ca2c18 100644 --- a/test/tests-coverage-reporting/pom.xml +++ b/test/tests-coverage-reporting/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 ../../pom.xml 4.0.0 diff --git a/test/v2-migration-tests/pom.xml b/test/v2-migration-tests/pom.xml index dda7e7ff21fb..8ee36508bbff 100644 --- a/test/v2-migration-tests/pom.xml +++ b/test/v2-migration-tests/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../.. diff --git a/third-party/pom.xml b/third-party/pom.xml index bd8dc782fce5..0e57f3688d88 100644 --- a/third-party/pom.xml +++ b/third-party/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 third-party diff --git a/third-party/third-party-jackson-core/pom.xml b/third-party/third-party-jackson-core/pom.xml index 5e2bde6a2dc8..4383404550b3 100644 --- a/third-party/third-party-jackson-core/pom.xml +++ b/third-party/third-party-jackson-core/pom.xml @@ -20,7 +20,7 @@ third-party software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/third-party/third-party-jackson-dataformat-cbor/pom.xml b/third-party/third-party-jackson-dataformat-cbor/pom.xml index cb9277458199..459092bb6bd4 100644 --- a/third-party/third-party-jackson-dataformat-cbor/pom.xml +++ b/third-party/third-party-jackson-dataformat-cbor/pom.xml @@ -20,7 +20,7 @@ third-party software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/third-party/third-party-slf4j-api/pom.xml b/third-party/third-party-slf4j-api/pom.xml index 1f642dde2d92..8126c0c07931 100644 --- a/third-party/third-party-slf4j-api/pom.xml +++ b/third-party/third-party-slf4j-api/pom.xml @@ -20,7 +20,7 @@ third-party software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/utils/pom.xml b/utils/pom.xml index 445b59e86a3d..807345ea2775 100644 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.29.4 + 2.29.5 4.0.0 diff --git a/v2-migration/pom.xml b/v2-migration/pom.xml index 88f3f749ed0c..65f1665aadc0 100644 --- a/v2-migration/pom.xml +++ b/v2-migration/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.29.4 + 2.29.5 ../pom.xml diff --git a/v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml b/v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml index 953cd369dee7..ae27263482c3 100644 --- a/v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml +++ b/v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml @@ -21,2297 +21,2297 @@ recipeList: - org.openrewrite.java.dependencies.AddDependency: groupId: software.amazon.awssdk artifactId: apache-client - version: 2.29.3 + version: 2.29.4 onlyIfUsing: com.amazonaws.ClientConfiguration - org.openrewrite.java.dependencies.AddDependency: groupId: software.amazon.awssdk artifactId: netty-nio-client - version: 2.29.3 + version: 2.29.4 onlyIfUsing: com.amazonaws.ClientConfiguration - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-core newGroupId: software.amazon.awssdk newArtifactId: aws-core - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bom newGroupId: software.amazon.awssdk newArtifactId: bom - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iot newGroupId: software.amazon.awssdk newArtifactId: iotdataplane - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-oam newGroupId: software.amazon.awssdk newArtifactId: oam - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotwireless newGroupId: software.amazon.awssdk newArtifactId: iotwireless - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-forecast newGroupId: software.amazon.awssdk newArtifactId: forecast - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-licensemanagerlinuxsubscriptions newGroupId: software.amazon.awssdk newArtifactId: licensemanagerlinuxsubscriptions - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-docdbelastic newGroupId: software.amazon.awssdk newArtifactId: docdbelastic - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-emrcontainers newGroupId: software.amazon.awssdk newArtifactId: emrcontainers - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-timestreamwrite newGroupId: software.amazon.awssdk newArtifactId: timestreamwrite - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codebuild newGroupId: software.amazon.awssdk newArtifactId: codebuild - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotdeviceadvisor newGroupId: software.amazon.awssdk newArtifactId: iotdeviceadvisor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssmcontacts newGroupId: software.amazon.awssdk newArtifactId: ssmcontacts - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iot1clickdevices newGroupId: software.amazon.awssdk newArtifactId: iot1clickdevices - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pcaconnectorscep newGroupId: software.amazon.awssdk newArtifactId: pcaconnectorscep - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-paymentcryptographydata newGroupId: software.amazon.awssdk newArtifactId: paymentcryptographydata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codeguruprofiler newGroupId: software.amazon.awssdk newArtifactId: codeguruprofiler - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesis newGroupId: software.amazon.awssdk newArtifactId: kinesis - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesisvideo newGroupId: software.amazon.awssdk newArtifactId: kinesisvideo - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pinpoint newGroupId: software.amazon.awssdk newArtifactId: pinpoint - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chime newGroupId: software.amazon.awssdk newArtifactId: chime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iottwinmaker newGroupId: software.amazon.awssdk newArtifactId: iottwinmaker - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-organizations newGroupId: software.amazon.awssdk newArtifactId: organizations - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-licensemanager newGroupId: software.amazon.awssdk newArtifactId: licensemanager - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-shield newGroupId: software.amazon.awssdk newArtifactId: shield - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssm newGroupId: software.amazon.awssdk newArtifactId: ssm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediastoredata newGroupId: software.amazon.awssdk newArtifactId: mediastoredata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemakerruntime newGroupId: software.amazon.awssdk newArtifactId: sagemakerruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-signer newGroupId: software.amazon.awssdk newArtifactId: signer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-servicecatalog newGroupId: software.amazon.awssdk newArtifactId: servicecatalog - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-timestreaminfluxdb newGroupId: software.amazon.awssdk newArtifactId: timestreaminfluxdb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lakeformation newGroupId: software.amazon.awssdk newArtifactId: lakeformation - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pcs newGroupId: software.amazon.awssdk newArtifactId: pcs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-licensemanagerusersubscriptions newGroupId: software.amazon.awssdk newArtifactId: licensemanagerusersubscriptions - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-secretsmanager newGroupId: software.amazon.awssdk newArtifactId: secretsmanager - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediaconnect newGroupId: software.amazon.awssdk newArtifactId: mediaconnect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mwaa newGroupId: software.amazon.awssdk newArtifactId: mwaa - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kms newGroupId: software.amazon.awssdk newArtifactId: kms - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-quicksight newGroupId: software.amazon.awssdk newArtifactId: quicksight - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workmail newGroupId: software.amazon.awssdk newArtifactId: workmail - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-eventbridge newGroupId: software.amazon.awssdk newArtifactId: eventbridge - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemakergeospatial newGroupId: software.amazon.awssdk newArtifactId: sagemakergeospatial - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-frauddetector newGroupId: software.amazon.awssdk newArtifactId: frauddetector - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elastictranscoder newGroupId: software.amazon.awssdk newArtifactId: elastictranscoder - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticinference newGroupId: software.amazon.awssdk newArtifactId: elasticinference - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lookoutequipment newGroupId: software.amazon.awssdk newArtifactId: lookoutequipment - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pcaconnectorad newGroupId: software.amazon.awssdk newArtifactId: pcaconnectorad - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pinpointsmsvoice newGroupId: software.amazon.awssdk newArtifactId: pinpointsmsvoice - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-securitylake newGroupId: software.amazon.awssdk newArtifactId: securitylake - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudwatch newGroupId: software.amazon.awssdk newArtifactId: cloudwatch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudwatchmetrics newGroupId: software.amazon.awssdk newArtifactId: cloudwatch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-glue newGroupId: software.amazon.awssdk newArtifactId: glue - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-costoptimizationhub newGroupId: software.amazon.awssdk newArtifactId: costoptimizationhub - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-servicequotas newGroupId: software.amazon.awssdk newArtifactId: servicequotas - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-s3 newGroupId: software.amazon.awssdk newArtifactId: s3 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appintegrations newGroupId: software.amazon.awssdk newArtifactId: appintegrations - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sesv2 newGroupId: software.amazon.awssdk newArtifactId: sesv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-arczonalshift newGroupId: software.amazon.awssdk newArtifactId: arczonalshift - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-emr newGroupId: software.amazon.awssdk newArtifactId: emr - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-controltower newGroupId: software.amazon.awssdk newArtifactId: controltower - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotfleethub newGroupId: software.amazon.awssdk newArtifactId: iotfleethub - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-personalize newGroupId: software.amazon.awssdk newArtifactId: personalize - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-outposts newGroupId: software.amazon.awssdk newArtifactId: outposts - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workdocs newGroupId: software.amazon.awssdk newArtifactId: workdocs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-networkmanager newGroupId: software.amazon.awssdk newArtifactId: networkmanager - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-omics newGroupId: software.amazon.awssdk newArtifactId: omics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediapackage newGroupId: software.amazon.awssdk newArtifactId: mediapackage - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-medialive newGroupId: software.amazon.awssdk newArtifactId: medialive - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediaconvert newGroupId: software.amazon.awssdk newArtifactId: mediaconvert - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplaceagreement newGroupId: software.amazon.awssdk newArtifactId: marketplaceagreement - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cognitosync newGroupId: software.amazon.awssdk newArtifactId: cognitosync - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sns newGroupId: software.amazon.awssdk newArtifactId: sns - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-datasync newGroupId: software.amazon.awssdk newArtifactId: datasync - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemakeredgemanager newGroupId: software.amazon.awssdk newArtifactId: sagemakeredge - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-greengrassv2 newGroupId: software.amazon.awssdk newArtifactId: greengrassv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pinpointemail newGroupId: software.amazon.awssdk newArtifactId: pinpointemail - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cleanroomsml newGroupId: software.amazon.awssdk newArtifactId: cleanroomsml - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-augmentedairuntime newGroupId: software.amazon.awssdk newArtifactId: sagemakera2iruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-neptunedata newGroupId: software.amazon.awssdk newArtifactId: neptunedata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-b2bi newGroupId: software.amazon.awssdk newArtifactId: b2bi - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotanalytics newGroupId: software.amazon.awssdk newArtifactId: iotanalytics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-inspector2 newGroupId: software.amazon.awssdk newArtifactId: inspector2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-groundstation newGroupId: software.amazon.awssdk newArtifactId: groundstation - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-fis newGroupId: software.amazon.awssdk newArtifactId: fis - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-proton newGroupId: software.amazon.awssdk newArtifactId: proton - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-voiceid newGroupId: software.amazon.awssdk newArtifactId: voiceid - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudhsm newGroupId: software.amazon.awssdk newArtifactId: cloudhsm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ecrpublic newGroupId: software.amazon.awssdk newArtifactId: ecrpublic - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-servermigration newGroupId: software.amazon.awssdk newArtifactId: sms - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudtraildata newGroupId: software.amazon.awssdk newArtifactId: cloudtraildata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cognitoidentity newGroupId: software.amazon.awssdk newArtifactId: cognitoidentity - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-config newGroupId: software.amazon.awssdk newArtifactId: config - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-osis newGroupId: software.amazon.awssdk newArtifactId: osis - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-private5g newGroupId: software.amazon.awssdk newArtifactId: privatenetworks - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-memorydb newGroupId: software.amazon.awssdk newArtifactId: memorydb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-inspector newGroupId: software.amazon.awssdk newArtifactId: inspector - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-translate newGroupId: software.amazon.awssdk newArtifactId: translate - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mailmanager newGroupId: software.amazon.awssdk newArtifactId: mailmanager - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-paymentcryptography newGroupId: software.amazon.awssdk newArtifactId: paymentcryptography - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chatbot newGroupId: software.amazon.awssdk newArtifactId: chatbot - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-fms newGroupId: software.amazon.awssdk newArtifactId: fms - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssmincidents newGroupId: software.amazon.awssdk newArtifactId: ssmincidents - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-vpclattice newGroupId: software.amazon.awssdk newArtifactId: vpclattice - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-s3control newGroupId: software.amazon.awssdk newArtifactId: s3control - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-qapps newGroupId: software.amazon.awssdk newArtifactId: qapps - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-rdsdata newGroupId: software.amazon.awssdk newArtifactId: rdsdata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesisanalyticsv2 newGroupId: software.amazon.awssdk newArtifactId: kinesisanalyticsv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-qbusiness newGroupId: software.amazon.awssdk newArtifactId: qbusiness - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplacecommerceanalytics newGroupId: software.amazon.awssdk newArtifactId: marketplacecommerceanalytics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-synthetics newGroupId: software.amazon.awssdk newArtifactId: synthetics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-apptest newGroupId: software.amazon.awssdk newArtifactId: apptest - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-costexplorer newGroupId: software.amazon.awssdk newArtifactId: costexplorer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotsecuretunneling newGroupId: software.amazon.awssdk newArtifactId: iotsecuretunneling - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudfront newGroupId: software.amazon.awssdk newArtifactId: cloudfront - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-location newGroupId: software.amazon.awssdk newArtifactId: location - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-wafv2 newGroupId: software.amazon.awssdk newArtifactId: wafv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-opensearch newGroupId: software.amazon.awssdk newArtifactId: opensearch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ec2instanceconnect newGroupId: software.amazon.awssdk newArtifactId: ec2instanceconnect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotthingsgraph newGroupId: software.amazon.awssdk newArtifactId: iotthingsgraph - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-repostspace newGroupId: software.amazon.awssdk newArtifactId: repostspace - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53recoveryreadiness newGroupId: software.amazon.awssdk newArtifactId: route53recoveryreadiness - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-health newGroupId: software.amazon.awssdk newArtifactId: health - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workmailmessageflow newGroupId: software.amazon.awssdk newArtifactId: workmailmessageflow - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-comprehendmedical newGroupId: software.amazon.awssdk newArtifactId: comprehendmedical - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotfleetwise newGroupId: software.amazon.awssdk newArtifactId: iotfleetwise - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53profiles newGroupId: software.amazon.awssdk newArtifactId: route53profiles - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bcmdataexports newGroupId: software.amazon.awssdk newArtifactId: bcmdataexports - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-accessanalyzer newGroupId: software.amazon.awssdk newArtifactId: accessanalyzer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-glacier newGroupId: software.amazon.awssdk newArtifactId: glacier - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lightsail newGroupId: software.amazon.awssdk newArtifactId: lightsail - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudwatchrum newGroupId: software.amazon.awssdk newArtifactId: rum - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-inspectorscan newGroupId: software.amazon.awssdk newArtifactId: inspectorscan - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-imagebuilder newGroupId: software.amazon.awssdk newArtifactId: imagebuilder - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemakermetrics newGroupId: software.amazon.awssdk newArtifactId: sagemakermetrics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bedrockagent newGroupId: software.amazon.awssdk newArtifactId: bedrockagent - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-migrationhub newGroupId: software.amazon.awssdk newArtifactId: migrationhub - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-simspaceweaver newGroupId: software.amazon.awssdk newArtifactId: simspaceweaver - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticbeanstalk newGroupId: software.amazon.awssdk newArtifactId: elasticbeanstalk - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-freetier newGroupId: software.amazon.awssdk newArtifactId: freetier - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudsearch newGroupId: software.amazon.awssdk newArtifactId: cloudsearchdomain - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-neptune newGroupId: software.amazon.awssdk newArtifactId: neptune - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-supportapp newGroupId: software.amazon.awssdk newArtifactId: supportapp - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-transfer newGroupId: software.amazon.awssdk newArtifactId: transfer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-deadline newGroupId: software.amazon.awssdk newArtifactId: deadline - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-braket newGroupId: software.amazon.awssdk newArtifactId: braket - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-verifiedpermissions newGroupId: software.amazon.awssdk newArtifactId: verifiedpermissions - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-scheduler newGroupId: software.amazon.awssdk newArtifactId: scheduler - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplacedeployment newGroupId: software.amazon.awssdk newArtifactId: marketplacedeployment - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-resourcegroups newGroupId: software.amazon.awssdk newArtifactId: resourcegroups - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-qldb newGroupId: software.amazon.awssdk newArtifactId: qldb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-dms newGroupId: software.amazon.awssdk newArtifactId: databasemigration - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ecr newGroupId: software.amazon.awssdk newArtifactId: ecr - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-dynamodb newGroupId: software.amazon.awssdk newArtifactId: dynamodb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-resiliencehub newGroupId: software.amazon.awssdk newArtifactId: resiliencehub - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-qldbsession newGroupId: software.amazon.awssdk newArtifactId: qldbsession - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53 newGroupId: software.amazon.awssdk newArtifactId: route53domains - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-macie2 newGroupId: software.amazon.awssdk newArtifactId: macie2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chimesdkmeetings newGroupId: software.amazon.awssdk newArtifactId: chimesdkmeetings - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-applicationautoscaling newGroupId: software.amazon.awssdk newArtifactId: applicationautoscaling - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-entityresolution newGroupId: software.amazon.awssdk newArtifactId: entityresolution - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-s3outposts newGroupId: software.amazon.awssdk newArtifactId: s3outposts - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-managedgrafana newGroupId: software.amazon.awssdk newArtifactId: grafana - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-storagegateway newGroupId: software.amazon.awssdk newArtifactId: storagegateway - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-recyclebin newGroupId: software.amazon.awssdk newArtifactId: rbin - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ioteventsdata newGroupId: software.amazon.awssdk newArtifactId: ioteventsdata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53recoverycluster newGroupId: software.amazon.awssdk newArtifactId: route53recoverycluster - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ecs newGroupId: software.amazon.awssdk newArtifactId: ecs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticloadbalancing newGroupId: software.amazon.awssdk newArtifactId: elasticloadbalancing - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connectcontactlens newGroupId: software.amazon.awssdk newArtifactId: connectcontactlens - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chimesdkmediapipelines newGroupId: software.amazon.awssdk newArtifactId: chimesdkmediapipelines - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesisvideosignalingchannels newGroupId: software.amazon.awssdk newArtifactId: kinesisvideosignaling - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-qconnect newGroupId: software.amazon.awssdk newArtifactId: qconnect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kendraranking newGroupId: software.amazon.awssdk newArtifactId: kendraranking - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudsearch newGroupId: software.amazon.awssdk newArtifactId: cloudsearch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-logs newGroupId: software.amazon.awssdk newArtifactId: cloudwatchlogs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appfabric newGroupId: software.amazon.awssdk newArtifactId: appfabric - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lookoutforvision newGroupId: software.amazon.awssdk newArtifactId: lookoutvision - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53resolver newGroupId: software.amazon.awssdk newArtifactId: route53resolver - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workspaces newGroupId: software.amazon.awssdk newArtifactId: workspaces - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-machinelearning newGroupId: software.amazon.awssdk newArtifactId: machinelearning - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-costandusagereport newGroupId: software.amazon.awssdk newArtifactId: costandusagereport - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-taxsettings newGroupId: software.amazon.awssdk newArtifactId: taxsettings - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-fsx newGroupId: software.amazon.awssdk newArtifactId: fsx - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codepipeline newGroupId: software.amazon.awssdk newArtifactId: codepipeline - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticloadbalancingv2 newGroupId: software.amazon.awssdk newArtifactId: elasticloadbalancingv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-directory newGroupId: software.amazon.awssdk newArtifactId: directory - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bedrockruntime newGroupId: software.amazon.awssdk newArtifactId: bedrockruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codestarnotifications newGroupId: software.amazon.awssdk newArtifactId: codestarnotifications - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-schemas newGroupId: software.amazon.awssdk newArtifactId: schemas - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sqs newGroupId: software.amazon.awssdk newArtifactId: sqs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appregistry newGroupId: software.amazon.awssdk newArtifactId: servicecatalogappregistry - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appmesh newGroupId: software.amazon.awssdk newArtifactId: appmesh - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-migrationhuborchestrator newGroupId: software.amazon.awssdk newArtifactId: migrationhuborchestrator - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-discovery newGroupId: software.amazon.awssdk newArtifactId: applicationdiscovery - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iot newGroupId: software.amazon.awssdk newArtifactId: iot - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesisvideowebrtcstorage newGroupId: software.amazon.awssdk newArtifactId: kinesisvideowebrtcstorage - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ebs newGroupId: software.amazon.awssdk newArtifactId: ebs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-amplify newGroupId: software.amazon.awssdk newArtifactId: amplify - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudcontrolapi newGroupId: software.amazon.awssdk newArtifactId: cloudcontrol - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-wellarchitected newGroupId: software.amazon.awssdk newArtifactId: wellarchitected - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplaceentitlement newGroupId: software.amazon.awssdk newArtifactId: marketplaceentitlement - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bedrock newGroupId: software.amazon.awssdk newArtifactId: bedrock - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-redshift newGroupId: software.amazon.awssdk newArtifactId: redshift - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connectcases newGroupId: software.amazon.awssdk newArtifactId: connectcases - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appflow newGroupId: software.amazon.awssdk newArtifactId: appflow - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-gamelift newGroupId: software.amazon.awssdk newArtifactId: gamelift - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudtrail newGroupId: software.amazon.awssdk newArtifactId: cloudtrail - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-supplychain newGroupId: software.amazon.awssdk newArtifactId: supplychain - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pipes newGroupId: software.amazon.awssdk newArtifactId: pipes - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudwatchevidently newGroupId: software.amazon.awssdk newArtifactId: evidently - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-amplifyuibuilder newGroupId: software.amazon.awssdk newArtifactId: amplifyuibuilder - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-managedblockchainquery newGroupId: software.amazon.awssdk newArtifactId: managedblockchainquery - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-applicationinsights newGroupId: software.amazon.awssdk newArtifactId: applicationinsights - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chimesdkmessaging newGroupId: software.amazon.awssdk newArtifactId: chimesdkmessaging - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediatailor newGroupId: software.amazon.awssdk newArtifactId: mediatailor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediapackagev2 newGroupId: software.amazon.awssdk newArtifactId: mediapackagev2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-resourceexplorer2 newGroupId: software.amazon.awssdk newArtifactId: resourceexplorer2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pi newGroupId: software.amazon.awssdk newArtifactId: pi - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-emrserverless newGroupId: software.amazon.awssdk newArtifactId: emrserverless - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appconfig newGroupId: software.amazon.awssdk newArtifactId: appconfig - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-networkmonitor newGroupId: software.amazon.awssdk newArtifactId: networkmonitor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemakerfeaturestoreruntime newGroupId: software.amazon.awssdk newArtifactId: sagemakerfeaturestoreruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chimesdkidentity newGroupId: software.amazon.awssdk newArtifactId: chimesdkidentity - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-computeoptimizer newGroupId: software.amazon.awssdk newArtifactId: computeoptimizer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connectparticipant newGroupId: software.amazon.awssdk newArtifactId: connectparticipant - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mgn newGroupId: software.amazon.awssdk newArtifactId: mgn - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-applicationcostprofiler newGroupId: software.amazon.awssdk newArtifactId: applicationcostprofiler - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-new-service-template newGroupId: software.amazon.awssdk newArtifactId: new-service-template - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-keyspaces newGroupId: software.amazon.awssdk newArtifactId: keyspaces - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iam newGroupId: software.amazon.awssdk newArtifactId: iam - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-networkfirewall newGroupId: software.amazon.awssdk newArtifactId: networkfirewall - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-redshiftdataapi newGroupId: software.amazon.awssdk newArtifactId: redshiftdata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediastore newGroupId: software.amazon.awssdk newArtifactId: mediastore - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloud9 newGroupId: software.amazon.awssdk newArtifactId: cloud9 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connectwisdom newGroupId: software.amazon.awssdk newArtifactId: wisdom - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sso newGroupId: software.amazon.awssdk newArtifactId: sso - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-auditmanager newGroupId: software.amazon.awssdk newArtifactId: auditmanager - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-snowball newGroupId: software.amazon.awssdk newArtifactId: snowball - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesis newGroupId: software.amazon.awssdk newArtifactId: kinesisanalytics - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53recoverycontrolconfig newGroupId: software.amazon.awssdk newArtifactId: route53recoverycontrolconfig - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-opsworks newGroupId: software.amazon.awssdk newArtifactId: opsworks - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-identitystore newGroupId: software.amazon.awssdk newArtifactId: identitystore - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connectcampaign newGroupId: software.amazon.awssdk newArtifactId: connectcampaigns - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-textract newGroupId: software.amazon.awssdk newArtifactId: textract - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-redshiftserverless newGroupId: software.amazon.awssdk newArtifactId: redshiftserverless - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-eks newGroupId: software.amazon.awssdk newArtifactId: eks - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-support newGroupId: software.amazon.awssdk newArtifactId: support - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mechanicalturkrequester newGroupId: software.amazon.awssdk newArtifactId: mturk - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-apigatewayv2 newGroupId: software.amazon.awssdk newArtifactId: apigatewayv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-devopsguru newGroupId: software.amazon.awssdk newArtifactId: devopsguru - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-prometheus newGroupId: software.amazon.awssdk newArtifactId: amp - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-drs newGroupId: software.amazon.awssdk newArtifactId: drs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-migrationhubconfig newGroupId: software.amazon.awssdk newArtifactId: migrationhubconfig - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kafkaconnect newGroupId: software.amazon.awssdk newArtifactId: kafkaconnect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kafka newGroupId: software.amazon.awssdk newArtifactId: kafka - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-gluedatabrew newGroupId: software.amazon.awssdk newArtifactId: databrew - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codedeploy newGroupId: software.amazon.awssdk newArtifactId: codedeploy - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudhsmv2 newGroupId: software.amazon.awssdk newArtifactId: cloudhsmv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-batch newGroupId: software.amazon.awssdk newArtifactId: batch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iot1clickprojects newGroupId: software.amazon.awssdk newArtifactId: iot1clickprojects - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-savingsplans newGroupId: software.amazon.awssdk newArtifactId: savingsplans - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-migrationhubstrategyrecommendations newGroupId: software.amazon.awssdk newArtifactId: migrationhubstrategy - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appsync newGroupId: software.amazon.awssdk newArtifactId: appsync - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-backupgateway newGroupId: software.amazon.awssdk newArtifactId: backupgateway - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-dlm newGroupId: software.amazon.awssdk newArtifactId: dlm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-amplifybackend newGroupId: software.amazon.awssdk newArtifactId: amplifybackend - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-datazoneexternal newGroupId: software.amazon.awssdk newArtifactId: datazone - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-billingconductor newGroupId: software.amazon.awssdk newArtifactId: billingconductor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workspacesthinclient newGroupId: software.amazon.awssdk newArtifactId: workspacesthinclient - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssmsap newGroupId: software.amazon.awssdk newArtifactId: ssmsap - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-budgets newGroupId: software.amazon.awssdk newArtifactId: budgets - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mainframemodernization newGroupId: software.amazon.awssdk newArtifactId: m2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-finspace newGroupId: software.amazon.awssdk newArtifactId: finspace - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-detective newGroupId: software.amazon.awssdk newArtifactId: detective - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lambda newGroupId: software.amazon.awssdk newArtifactId: lambda - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssooidc newGroupId: software.amazon.awssdk newArtifactId: ssooidc - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-panorama newGroupId: software.amazon.awssdk newArtifactId: panorama - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotevents newGroupId: software.amazon.awssdk newArtifactId: iotevents - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-managedblockchain newGroupId: software.amazon.awssdk newArtifactId: managedblockchain - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-servicediscovery newGroupId: software.amazon.awssdk newArtifactId: servicediscovery - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-waf newGroupId: software.amazon.awssdk newArtifactId: waf - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ivs newGroupId: software.amazon.awssdk newArtifactId: ivs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-directconnect newGroupId: software.amazon.awssdk newArtifactId: directconnect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mq newGroupId: software.amazon.awssdk newArtifactId: mq - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pinpointsmsvoicev2 newGroupId: software.amazon.awssdk newArtifactId: pinpointsmsvoicev2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-internetmonitor newGroupId: software.amazon.awssdk newArtifactId: internetmonitor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-artifact newGroupId: software.amazon.awssdk newArtifactId: artifact - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotsitewise newGroupId: software.amazon.awssdk newArtifactId: iotsitewise - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lexmodelsv2 newGroupId: software.amazon.awssdk newArtifactId: lexmodelsv2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lexruntimev2 newGroupId: software.amazon.awssdk newArtifactId: lexruntimev2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-serverlessapplicationrepository newGroupId: software.amazon.awssdk newArtifactId: serverlessapplicationrepository - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-eksauth newGroupId: software.amazon.awssdk newArtifactId: eksauth - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-snowdevicemanagement newGroupId: software.amazon.awssdk newArtifactId: snowdevicemanagement - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-clouddirectory newGroupId: software.amazon.awssdk newArtifactId: clouddirectory - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-mediapackagevod newGroupId: software.amazon.awssdk newArtifactId: mediapackagevod - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codestarconnections newGroupId: software.amazon.awssdk newArtifactId: codestarconnections - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codeartifact newGroupId: software.amazon.awssdk newArtifactId: codeartifact - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-guardduty newGroupId: software.amazon.awssdk newArtifactId: guardduty - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-worklink newGroupId: software.amazon.awssdk newArtifactId: worklink - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cleanrooms newGroupId: software.amazon.awssdk newArtifactId: cleanrooms - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-customerprofiles newGroupId: software.amazon.awssdk newArtifactId: customerprofiles - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-trustedadvisor newGroupId: software.amazon.awssdk newArtifactId: trustedadvisor - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-dax newGroupId: software.amazon.awssdk newArtifactId: dax - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-opsworkscm newGroupId: software.amazon.awssdk newArtifactId: opsworkscm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-docdb newGroupId: software.amazon.awssdk newArtifactId: docdb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-acmpca newGroupId: software.amazon.awssdk newArtifactId: acmpca - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kinesis newGroupId: software.amazon.awssdk newArtifactId: firehose - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ivschat newGroupId: software.amazon.awssdk newArtifactId: ivschat - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-globalaccelerator newGroupId: software.amazon.awssdk newArtifactId: globalaccelerator - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ses newGroupId: software.amazon.awssdk newArtifactId: ses - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codegurureviewer newGroupId: software.amazon.awssdk newArtifactId: codegurureviewer - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lexmodelbuilding newGroupId: software.amazon.awssdk newArtifactId: lexmodelbuilding - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-medicalimaging newGroupId: software.amazon.awssdk newArtifactId: medicalimaging - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-account newGroupId: software.amazon.awssdk newArtifactId: account - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-robomaker newGroupId: software.amazon.awssdk newArtifactId: robomaker - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lex newGroupId: software.amazon.awssdk newArtifactId: lexruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-autoscaling newGroupId: software.amazon.awssdk newArtifactId: autoscaling - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-nimblestudio newGroupId: software.amazon.awssdk newArtifactId: nimble - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iotjobsdataplane newGroupId: software.amazon.awssdk newArtifactId: iotjobsdataplane - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appconfigdata newGroupId: software.amazon.awssdk newArtifactId: appconfigdata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-controlcatalog newGroupId: software.amazon.awssdk newArtifactId: controlcatalog - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-greengrass newGroupId: software.amazon.awssdk newArtifactId: greengrass - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-securityhub newGroupId: software.amazon.awssdk newArtifactId: securityhub - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-timestreamquery newGroupId: software.amazon.awssdk newArtifactId: timestreamquery - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-backup newGroupId: software.amazon.awssdk newArtifactId: backup - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-opensearchserverless newGroupId: software.amazon.awssdk newArtifactId: opensearchserverless - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cloudformation newGroupId: software.amazon.awssdk newArtifactId: cloudformation - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-kendra newGroupId: software.amazon.awssdk newArtifactId: kendra - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-connect newGroupId: software.amazon.awssdk newArtifactId: connect - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticache newGroupId: software.amazon.awssdk newArtifactId: elasticache - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-stepfunctions newGroupId: software.amazon.awssdk newArtifactId: sfn - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-cognitoidp newGroupId: software.amazon.awssdk newArtifactId: cognitoidentityprovider - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-chimesdkvoice newGroupId: software.amazon.awssdk newArtifactId: chimesdkvoice - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-workspacesweb newGroupId: software.amazon.awssdk newArtifactId: workspacesweb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-comprehend newGroupId: software.amazon.awssdk newArtifactId: comprehend - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-applicationsignals newGroupId: software.amazon.awssdk newArtifactId: applicationsignals - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplacemeteringservice newGroupId: software.amazon.awssdk newArtifactId: marketplacemetering - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-devicefarm newGroupId: software.amazon.awssdk newArtifactId: devicefarm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-rekognition newGroupId: software.amazon.awssdk newArtifactId: rekognition - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-appstream newGroupId: software.amazon.awssdk newArtifactId: appstream - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-polly newGroupId: software.amazon.awssdk newArtifactId: polly - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-rds newGroupId: software.amazon.awssdk newArtifactId: rds - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-pricing newGroupId: software.amazon.awssdk newArtifactId: pricing - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-simpleworkflow newGroupId: software.amazon.awssdk newArtifactId: swf - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-events newGroupId: software.amazon.awssdk newArtifactId: cloudwatchevents - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssmquicksetup newGroupId: software.amazon.awssdk newArtifactId: ssmquicksetup - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-autoscalingplans newGroupId: software.amazon.awssdk newArtifactId: autoscalingplans - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-datapipeline newGroupId: software.amazon.awssdk newArtifactId: datapipeline - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-transcribe newGroupId: software.amazon.awssdk newArtifactId: transcribe - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ivsrealtime newGroupId: software.amazon.awssdk newArtifactId: ivsrealtime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-personalizeruntime newGroupId: software.amazon.awssdk newArtifactId: personalizeruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-elasticsearch newGroupId: software.amazon.awssdk newArtifactId: elasticsearch - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codecommit newGroupId: software.amazon.awssdk newArtifactId: codecommit - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-resourcegroupstaggingapi newGroupId: software.amazon.awssdk newArtifactId: resourcegroupstaggingapi - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-forecastquery newGroupId: software.amazon.awssdk newArtifactId: forecastquery - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-healthlake newGroupId: software.amazon.awssdk newArtifactId: healthlake - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-iamrolesanywhere newGroupId: software.amazon.awssdk newArtifactId: rolesanywhere - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-personalizeevents newGroupId: software.amazon.awssdk newArtifactId: personalizeevents - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-apigatewaymanagementapi newGroupId: software.amazon.awssdk newArtifactId: apigatewaymanagementapi - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-launchwizard newGroupId: software.amazon.awssdk newArtifactId: launchwizard - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-xray newGroupId: software.amazon.awssdk newArtifactId: xray - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ssoadmin newGroupId: software.amazon.awssdk newArtifactId: ssoadmin - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-api-gateway newGroupId: software.amazon.awssdk newArtifactId: apigateway - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-migrationhubrefactorspaces newGroupId: software.amazon.awssdk newArtifactId: migrationhubrefactorspaces - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ram newGroupId: software.amazon.awssdk newArtifactId: ram - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codeconnections newGroupId: software.amazon.awssdk newArtifactId: codeconnections - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-efs newGroupId: software.amazon.awssdk newArtifactId: efs - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-bedrockagentruntime newGroupId: software.amazon.awssdk newArtifactId: bedrockagentruntime - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-dataexchange newGroupId: software.amazon.awssdk newArtifactId: dataexchange - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sts newGroupId: software.amazon.awssdk newArtifactId: sts - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-sagemaker newGroupId: software.amazon.awssdk newArtifactId: sagemaker - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-finspacedata newGroupId: software.amazon.awssdk newArtifactId: finspacedata - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-marketplacecatalog newGroupId: software.amazon.awssdk newArtifactId: marketplacecatalog - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-acm newGroupId: software.amazon.awssdk newArtifactId: acm - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-athena newGroupId: software.amazon.awssdk newArtifactId: athena - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-route53 newGroupId: software.amazon.awssdk newArtifactId: route53 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-codegurusecurity newGroupId: software.amazon.awssdk newArtifactId: codegurusecurity - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-tnb newGroupId: software.amazon.awssdk newArtifactId: tnb - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-ec2 newGroupId: software.amazon.awssdk newArtifactId: ec2 - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-apprunner newGroupId: software.amazon.awssdk newArtifactId: apprunner - newVersion: 2.29.3 + newVersion: 2.29.4 - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: com.amazonaws oldArtifactId: aws-java-sdk-lookoutmetrics newGroupId: software.amazon.awssdk newArtifactId: lookoutmetrics - newVersion: 2.29.3 \ No newline at end of file + newVersion: 2.29.4 \ No newline at end of file