From 25fc1ca850e655013e6c613ddec21e666e70f962 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 19 May 2026 15:58:58 -0700 Subject: [PATCH 1/6] Update codegen fixture files --- .../client/test-aws-json-async-client-class.java | 12 +++++++++--- ...ws-query-compatible-json-async-client-class.java | 12 +++++++++--- ...aws-query-compatible-json-sync-client-class.java | 12 +++++++++--- .../poet/client/test-batchmanager-async.java | 12 +++++++++--- .../poet/client/test-cbor-async-client-class.java | 12 +++++++++--- .../codegen/poet/client/test-cbor-client-class.java | 12 +++++++++--- ...est-custom-context-params-sync-client-class.java | 11 ++++++++--- .../poet/client/test-custompackage-async.java | 13 +++++++++---- .../poet/client/test-custompackage-sync.java | 13 +++++++++---- .../client/test-customservicemetadata-async.java | 13 +++++++++---- .../client/test-customservicemetadata-sync.java | 13 +++++++++---- .../poet/client/test-endpoint-discovery-async.java | 12 +++++++++--- .../poet/client/test-endpoint-discovery-sync.java | 12 +++++++++--- .../poet/client/test-json-async-client-class.java | 12 +++++++++--- .../codegen/poet/client/test-json-client-class.java | 12 +++++++++--- .../poet/client/test-query-async-client-class.java | 11 ++++++++--- .../poet/client/test-rpcv2-async-client-class.java | 12 +++++++++--- .../awssdk/codegen/poet/client/test-rpcv2-sync.java | 12 +++++++++--- ...t-unsigned-payload-trait-async-client-class.java | 11 ++++++++--- ...st-unsigned-payload-trait-sync-client-class.java | 11 ++++++++--- .../poet/client/test-xml-async-client-class.java | 5 ++++- .../codegen/poet/client/test-xml-client-class.java | 5 ++++- 22 files changed, 184 insertions(+), 66 deletions(-) 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 0c9eb9d0326..361fa3c4eaf 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 @@ -1483,9 +1483,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - JsonAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(JsonAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of JsonAuthSchemeProvider"); + JsonAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate + .isInstanceOf(JsonAuthSchemeProvider.class, p, "Expected an instance of JsonAuthSchemeProvider")) + .orElse(null); + JsonAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(JsonAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of JsonAuthSchemeProvider"); JsonAuthSchemeParams.Builder paramsBuilder = JsonAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); 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 04eb7325e08..3c18fc5229d 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 @@ -205,9 +205,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - QueryToJsonCompatibleAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - QueryToJsonCompatibleAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider"); + QueryToJsonCompatibleAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(QueryToJsonCompatibleAuthSchemeProvider.class, p, + "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider")).orElse(null); + QueryToJsonCompatibleAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(QueryToJsonCompatibleAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider"); QueryToJsonCompatibleAuthSchemeParams.Builder paramsBuilder = QueryToJsonCompatibleAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-sync-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-sync-client-class.java index 605351f3612..851eb27f0f3 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-sync-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-aws-query-compatible-json-sync-client-class.java @@ -175,9 +175,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - QueryToJsonCompatibleAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - QueryToJsonCompatibleAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider"); + QueryToJsonCompatibleAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(QueryToJsonCompatibleAuthSchemeProvider.class, p, + "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider")).orElse(null); + QueryToJsonCompatibleAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(QueryToJsonCompatibleAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of QueryToJsonCompatibleAuthSchemeProvider"); QueryToJsonCompatibleAuthSchemeParams.Builder paramsBuilder = QueryToJsonCompatibleAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); 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 5ede080c6e5..fd0a2f5e8ed 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 @@ -197,9 +197,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - BatchManagerTestAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(BatchManagerTestAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of BatchManagerTestAuthSchemeProvider"); + BatchManagerTestAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(BatchManagerTestAuthSchemeProvider.class, p, + "Expected an instance of BatchManagerTestAuthSchemeProvider")).orElse(null); + BatchManagerTestAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(BatchManagerTestAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of BatchManagerTestAuthSchemeProvider"); BatchManagerTestAuthSchemeParams.Builder paramsBuilder = BatchManagerTestAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); 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 4f1b4180cdc..881fa55f2c8 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 @@ -1487,9 +1487,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - JsonAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(JsonAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of JsonAuthSchemeProvider"); + JsonAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate + .isInstanceOf(JsonAuthSchemeProvider.class, p, "Expected an instance of JsonAuthSchemeProvider")) + .orElse(null); + JsonAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(JsonAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of JsonAuthSchemeProvider"); JsonAuthSchemeParams.Builder paramsBuilder = JsonAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-client-class.java index a7e8c5ce9fa..55f7aeaf5c3 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-cbor-client-class.java @@ -983,9 +983,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - JsonAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(JsonAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of JsonAuthSchemeProvider"); + JsonAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate + .isInstanceOf(JsonAuthSchemeProvider.class, p, "Expected an instance of JsonAuthSchemeProvider")) + .orElse(null); + JsonAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(JsonAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of JsonAuthSchemeProvider"); JsonAuthSchemeParams.Builder paramsBuilder = JsonAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custom-context-params-sync-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custom-context-params-sync-client-class.java index a8fa677a405..2355b277425 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custom-context-params-sync-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custom-context-params-sync-client-class.java @@ -168,9 +168,14 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - FooBarAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(FooBarAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of FooBarAuthSchemeProvider"); + FooBarAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(FooBarAuthSchemeProvider.class, p, + "Expected an instance of FooBarAuthSchemeProvider")).orElse(null); + FooBarAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(FooBarAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of FooBarAuthSchemeProvider"); FooBarAuthSchemeParams.Builder paramsBuilder = FooBarAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); 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 949b5fa5e92..7ef35cc63e3 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 @@ -191,10 +191,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - ProtocolRestJsonWithCustomPackageAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider"); + ProtocolRestJsonWithCustomPackageAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, p, + "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider")).orElse(null); + ProtocolRestJsonWithCustomPackageAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider"); ProtocolRestJsonWithCustomPackageAuthSchemeParams.Builder paramsBuilder = ProtocolRestJsonWithCustomPackageAuthSchemeParams .builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-sync.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-sync.java index 62fa8305f07..7762181fb6f 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-sync.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-custompackage-sync.java @@ -165,10 +165,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - ProtocolRestJsonWithCustomPackageAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider"); + ProtocolRestJsonWithCustomPackageAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, p, + "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider")).orElse(null); + ProtocolRestJsonWithCustomPackageAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(ProtocolRestJsonWithCustomPackageAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of ProtocolRestJsonWithCustomPackageAuthSchemeProvider"); ProtocolRestJsonWithCustomPackageAuthSchemeParams.Builder paramsBuilder = ProtocolRestJsonWithCustomPackageAuthSchemeParams .builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); 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 0c905d1b77b..d20f340c6c8 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 @@ -191,10 +191,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider"); + ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, p, + "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider")).orElse(null); + ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider"); ProtocolRestJsonWithCustomContentTypeAuthSchemeParams.Builder paramsBuilder = ProtocolRestJsonWithCustomContentTypeAuthSchemeParams .builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-sync.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-sync.java index dc7df15efd3..f0998862d03 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-sync.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-customservicemetadata-sync.java @@ -165,10 +165,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider"); + ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, p, + "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider")).orElse(null); + ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of ProtocolRestJsonWithCustomContentTypeAuthSchemeProvider"); ProtocolRestJsonWithCustomContentTypeAuthSchemeParams.Builder paramsBuilder = ProtocolRestJsonWithCustomContentTypeAuthSchemeParams .builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); 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 c123a078601..38705c3d035 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 @@ -503,9 +503,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - EndpointDiscoveryTestAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - EndpointDiscoveryTestAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider"); + EndpointDiscoveryTestAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(EndpointDiscoveryTestAuthSchemeProvider.class, p, + "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider")).orElse(null); + EndpointDiscoveryTestAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(EndpointDiscoveryTestAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider"); EndpointDiscoveryTestAuthSchemeParams.Builder paramsBuilder = EndpointDiscoveryTestAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-sync.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-sync.java index f494d60f136..cd2feebca17 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-sync.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-endpoint-discovery-sync.java @@ -425,9 +425,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - EndpointDiscoveryTestAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - EndpointDiscoveryTestAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider"); + EndpointDiscoveryTestAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(EndpointDiscoveryTestAuthSchemeProvider.class, p, + "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider")).orElse(null); + EndpointDiscoveryTestAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(EndpointDiscoveryTestAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of EndpointDiscoveryTestAuthSchemeProvider"); EndpointDiscoveryTestAuthSchemeParams.Builder paramsBuilder = EndpointDiscoveryTestAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); 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 db9913412e2..d3d886b2d98 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 @@ -1689,9 +1689,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - JsonAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(JsonAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of JsonAuthSchemeProvider"); + JsonAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate + .isInstanceOf(JsonAuthSchemeProvider.class, p, "Expected an instance of JsonAuthSchemeProvider")) + .orElse(null); + JsonAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(JsonAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of JsonAuthSchemeProvider"); JsonAuthSchemeParams.Builder paramsBuilder = JsonAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-client-class.java index b737870efec..457086251a1 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-client-class.java @@ -1136,9 +1136,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - JsonAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(JsonAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of JsonAuthSchemeProvider"); + JsonAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate + .isInstanceOf(JsonAuthSchemeProvider.class, p, "Expected an instance of JsonAuthSchemeProvider")) + .orElse(null); + JsonAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(JsonAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of JsonAuthSchemeProvider"); JsonAuthSchemeParams.Builder paramsBuilder = JsonAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-query-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-query-async-client-class.java index 7da95a5d40c..5935fe03c46 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-query-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-query-async-client-class.java @@ -1286,9 +1286,14 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - QueryAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(QueryAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of QueryAuthSchemeProvider"); + QueryAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(QueryAuthSchemeProvider.class, p, + "Expected an instance of QueryAuthSchemeProvider")).orElse(null); + QueryAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(QueryAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of QueryAuthSchemeProvider"); QueryAuthSchemeParams.Builder paramsBuilder = QueryAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); List options = authSchemeProvider.resolveAuthScheme(paramsBuilder.build()); 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 f91dfa34ce1..d941e4301ef 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 @@ -1214,9 +1214,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - SmithyRpcV2ProtocolAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - SmithyRpcV2ProtocolAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider"); + SmithyRpcV2ProtocolAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(SmithyRpcV2ProtocolAuthSchemeProvider.class, p, + "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider")).orElse(null); + SmithyRpcV2ProtocolAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(SmithyRpcV2ProtocolAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider"); SmithyRpcV2ProtocolAuthSchemeParams.Builder paramsBuilder = SmithyRpcV2ProtocolAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-sync.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-sync.java index fa3c0f0eaec..d2b53fe52c5 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-sync.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-rpcv2-sync.java @@ -1028,9 +1028,15 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - SmithyRpcV2ProtocolAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf( - SmithyRpcV2ProtocolAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider"); + SmithyRpcV2ProtocolAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(SmithyRpcV2ProtocolAuthSchemeProvider.class, p, + "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider")).orElse(null); + SmithyRpcV2ProtocolAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider + : Validate.isInstanceOf(SmithyRpcV2ProtocolAuthSchemeProvider.class, + clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of SmithyRpcV2ProtocolAuthSchemeProvider"); SmithyRpcV2ProtocolAuthSchemeParams.Builder paramsBuilder = SmithyRpcV2ProtocolAuthSchemeParams.builder().operation( operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-async-client-class.java index b0fdf65bb35..3e76e9b1526 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-async-client-class.java @@ -1038,9 +1038,14 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - DatabaseAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(DatabaseAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of DatabaseAuthSchemeProvider"); + DatabaseAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(DatabaseAuthSchemeProvider.class, p, + "Expected an instance of DatabaseAuthSchemeProvider")).orElse(null); + DatabaseAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(DatabaseAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of DatabaseAuthSchemeProvider"); DatabaseAuthSchemeParams.Builder paramsBuilder = DatabaseAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); Set sigv4aRegionSet = clientConfiguration.option(AwsClientOption.AWS_SIGV4A_SIGNING_REGION_SET); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-sync-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-sync-client-class.java index e7c9da6f9d7..4d7ce7f0f45 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-sync-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-unsigned-payload-trait-sync-client-class.java @@ -923,9 +923,14 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - DatabaseAuthSchemeProvider authSchemeProvider = Validate.isInstanceOf(DatabaseAuthSchemeProvider.class, - clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), - "Expected an instance of DatabaseAuthSchemeProvider"); + DatabaseAuthSchemeProvider requestAuthSchemeProvider = request + .overrideConfiguration() + .flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(DatabaseAuthSchemeProvider.class, p, + "Expected an instance of DatabaseAuthSchemeProvider")).orElse(null); + DatabaseAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate + .isInstanceOf(DatabaseAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), + "Expected an instance of DatabaseAuthSchemeProvider"); DatabaseAuthSchemeParams.Builder paramsBuilder = DatabaseAuthSchemeParams.builder().operation(operationName); paramsBuilder.region(clientConfiguration.option(AwsClientOption.AWS_REGION)); Set sigv4aRegionSet = clientConfiguration.option(AwsClientOption.AWS_SIGV4A_SIGNING_REGION_SET); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-async-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-async-client-class.java index a60d2b04556..9ccbb39a445 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-async-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-async-client-class.java @@ -971,7 +971,10 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - XmlAuthSchemeProvider authSchemeProvider = Validate + XmlAuthSchemeProvider requestAuthSchemeProvider = request.overrideConfiguration().flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(XmlAuthSchemeProvider.class, p, "Expected an instance of XmlAuthSchemeProvider")) + .orElse(null); + XmlAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate .isInstanceOf(XmlAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), "Expected an instance of XmlAuthSchemeProvider"); XmlAuthSchemeParams.Builder paramsBuilder = XmlAuthSchemeParams.builder().operation(operationName); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-client-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-client-class.java index 9706ee65f07..b9b92d71bfc 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-client-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-xml-client-class.java @@ -726,7 +726,10 @@ private static List resolveMetricPublishers(SdkClientConfigurat private List resolveAuthSchemeOptions(SdkRequest request, String operationName, SdkClientConfiguration clientConfiguration) { - XmlAuthSchemeProvider authSchemeProvider = Validate + XmlAuthSchemeProvider requestAuthSchemeProvider = request.overrideConfiguration().flatMap(c -> c.authSchemeProvider()) + .map(p -> Validate.isInstanceOf(XmlAuthSchemeProvider.class, p, "Expected an instance of XmlAuthSchemeProvider")) + .orElse(null); + XmlAuthSchemeProvider authSchemeProvider = requestAuthSchemeProvider != null ? requestAuthSchemeProvider : Validate .isInstanceOf(XmlAuthSchemeProvider.class, clientConfiguration.option(SdkClientOption.AUTH_SCHEME_PROVIDER), "Expected an instance of XmlAuthSchemeProvider"); XmlAuthSchemeParams.Builder paramsBuilder = XmlAuthSchemeParams.builder().operation(operationName); From 263fd5f65be782b22b2e307ce0664067e0cdfa15 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 19 May 2026 17:38:28 -0700 Subject: [PATCH 2/6] Fix test failure --- .../internal/crt/DefaultS3CrtAsyncClient.java | 3 ++- .../s3/internal/s3express/S3ExpressUtils.java | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java index 3447356cde6..45d2e5e0044 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java @@ -430,7 +430,8 @@ public void afterMarshalling(Context.AfterMarshalling context, .put(S3InternalSdkHttpExecutionAttribute.OBJECT_FILE_PATH, executionAttributes.getAttribute(OBJECT_FILE_PATH)) .put(USE_S3_EXPRESS_AUTH, S3ExpressUtils.isS3ExpressAuthRequest(context.request(), executionAttributes)) - .put(SIGNING_NAME, executionAttributes.getAttribute(SERVICE_SIGNING_NAME)) + .put(SIGNING_NAME, S3ExpressUtils.resolveSigningName(context.request(), executionAttributes, + executionAttributes.getAttribute(SERVICE_SIGNING_NAME))) .put(REQUEST_CHECKSUM_CALCULATION, executionAttributes.getAttribute(SdkInternalExecutionAttribute.REQUEST_CHECKSUM_CALCULATION)) .put(RESPONSE_CHECKSUM_VALIDATION, diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java index 42c7928db43..1d160e65144 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java @@ -26,6 +26,7 @@ import software.amazon.awssdk.core.spi.identity.AuthSchemeOptionsResolver; import software.amazon.awssdk.core.useragent.BusinessMetricFeatureId; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner; import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption; import software.amazon.awssdk.services.s3.endpoints.internal.KnownS3ExpressEndpointProperty; import software.amazon.awssdk.services.s3.s3express.S3ExpressAuthScheme; @@ -73,6 +74,26 @@ private static boolean useS3ExpressAuthScheme(ExecutionAttributes executionAttri return false; } + /** + * Resolves the signing service name from the auth scheme options. This is needed because the endpoint rules may + * specify a different signing name (e.g., "s3express" for S3Express control plane APIs) than the client-level + * default ("s3"). Returns the fallback value if the signing name cannot be resolved from auth scheme options. + */ + public static String resolveSigningName(SdkRequest request, ExecutionAttributes executionAttributes, String fallback) { + AuthSchemeOptionsResolver resolver = + executionAttributes.getAttribute(SdkInternalExecutionAttribute.AUTH_SCHEME_OPTIONS_RESOLVER); + if (resolver != null) { + List options = resolver.resolve(request); + if (!options.isEmpty()) { + String name = options.get(0).signerProperty(AwsV4HttpSigner.SERVICE_SIGNING_NAME); + if (name != null) { + return name; + } + } + } + return fallback; + } + /** * Adds S3 Express business metric if applicable for the current operation. */ From 1783c2d144e29509e95cfa5ee101a9b7f83096df Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 19 May 2026 19:04:35 -0700 Subject: [PATCH 3/6] Fix test failure --- .../internal/crt/DefaultS3CrtAsyncClient.java | 10 +++- .../s3/internal/s3express/S3ExpressUtils.java | 60 ++++++++++++++++--- 2 files changed, 58 insertions(+), 12 deletions(-) diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java index 45d2e5e0044..c6c18c4b2c4 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java @@ -423,15 +423,19 @@ public void afterMarshalling(Context.AfterMarshalling context, existingHttpAttributes.toBuilder() : SdkHttpExecutionAttributes.builder(); + Region signingRegion = S3ExpressUtils.resolveSigningRegion(context.request(), executionAttributes, + executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)); + String signingName = S3ExpressUtils.resolveSigningName(context.request(), executionAttributes, + executionAttributes.getAttribute(SERVICE_SIGNING_NAME)); + builder.put(OPERATION_NAME, executionAttributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME)) .put(HTTP_CHECKSUM, executionAttributes.getAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM)) - .put(SIGNING_REGION, executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)) + .put(SIGNING_REGION, signingRegion) .put(S3InternalSdkHttpExecutionAttribute.OBJECT_FILE_PATH, executionAttributes.getAttribute(OBJECT_FILE_PATH)) .put(USE_S3_EXPRESS_AUTH, S3ExpressUtils.isS3ExpressAuthRequest(context.request(), executionAttributes)) - .put(SIGNING_NAME, S3ExpressUtils.resolveSigningName(context.request(), executionAttributes, - executionAttributes.getAttribute(SERVICE_SIGNING_NAME))) + .put(SIGNING_NAME, signingName) .put(REQUEST_CHECKSUM_CALCULATION, executionAttributes.getAttribute(SdkInternalExecutionAttribute.REQUEST_CHECKSUM_CALCULATION)) .put(RESPONSE_CHECKSUM_VALIDATION, diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java index 1d160e65144..20174b0207c 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java @@ -19,6 +19,9 @@ import java.util.List; import software.amazon.awssdk.annotations.SdkInternalApi; +import software.amazon.awssdk.awscore.endpoints.AwsEndpointAttribute; +import software.amazon.awssdk.awscore.endpoints.authscheme.EndpointAuthScheme; +import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4AuthScheme; import software.amazon.awssdk.core.SdkRequest; import software.amazon.awssdk.core.SelectedAuthScheme; import software.amazon.awssdk.core.interceptor.ExecutionAttributes; @@ -26,9 +29,13 @@ import software.amazon.awssdk.core.spi.identity.AuthSchemeOptionsResolver; import software.amazon.awssdk.core.useragent.BusinessMetricFeatureId; import software.amazon.awssdk.endpoints.Endpoint; -import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner; +import software.amazon.awssdk.endpoints.EndpointProvider; import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.s3.endpoints.S3EndpointParams; +import software.amazon.awssdk.services.s3.endpoints.S3EndpointProvider; import software.amazon.awssdk.services.s3.endpoints.internal.KnownS3ExpressEndpointProperty; +import software.amazon.awssdk.services.s3.endpoints.internal.S3EndpointResolverUtils; import software.amazon.awssdk.services.s3.s3express.S3ExpressAuthScheme; @SdkInternalApi @@ -80,20 +87,55 @@ private static boolean useS3ExpressAuthScheme(ExecutionAttributes executionAttri * default ("s3"). Returns the fallback value if the signing name cannot be resolved from auth scheme options. */ public static String resolveSigningName(SdkRequest request, ExecutionAttributes executionAttributes, String fallback) { - AuthSchemeOptionsResolver resolver = - executionAttributes.getAttribute(SdkInternalExecutionAttribute.AUTH_SCHEME_OPTIONS_RESOLVER); - if (resolver != null) { - List options = resolver.resolve(request); - if (!options.isEmpty()) { - String name = options.get(0).signerProperty(AwsV4HttpSigner.SERVICE_SIGNING_NAME); - if (name != null) { - return name; + Endpoint endpoint = resolveEndpoint(request, executionAttributes); + if (endpoint != null) { + List authSchemes = endpoint.attribute(AwsEndpointAttribute.AUTH_SCHEMES); + if (authSchemes != null && !authSchemes.isEmpty()) { + EndpointAuthScheme authScheme = authSchemes.get(0); + if (authScheme instanceof SigV4AuthScheme) { + return ((SigV4AuthScheme) authScheme).signingName(); + } + } + } + return fallback; + } + + /** + * Resolves the signing region from the endpoint resolution. This is needed because the endpoint rules may + * specify a different region (e.g., for cross-region access) than the client-level default. + * Returns the fallback value if the region cannot be resolved. + */ + public static Region resolveSigningRegion(SdkRequest request, ExecutionAttributes executionAttributes, Region fallback) { + Endpoint endpoint = resolveEndpoint(request, executionAttributes); + if (endpoint != null) { + List authSchemes = endpoint.attribute(AwsEndpointAttribute.AUTH_SCHEMES); + if (authSchemes != null && !authSchemes.isEmpty()) { + EndpointAuthScheme authScheme = authSchemes.get(0); + if (authScheme instanceof SigV4AuthScheme) { + String region = ((SigV4AuthScheme) authScheme).signingRegion(); + if (region != null) { + return Region.of(region); + } } } } return fallback; } + private static Endpoint resolveEndpoint(SdkRequest request, ExecutionAttributes executionAttributes) { + EndpointProvider endpointProvider = + executionAttributes.getAttribute(SdkInternalExecutionAttribute.ENDPOINT_PROVIDER); + if (endpointProvider instanceof S3EndpointProvider) { + try { + S3EndpointParams endpointParams = S3EndpointResolverUtils.ruleParams(request, executionAttributes); + return ((S3EndpointProvider) endpointProvider).resolveEndpoint(endpointParams).join(); + } catch (Exception e) { + // If resolution fails, fall back to defaults + } + } + return null; + } + /** * Adds S3 Express business metric if applicable for the current operation. */ From d20ca622c753bcce04f282dca70f1608e8247f16 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Wed, 20 May 2026 09:07:44 -0700 Subject: [PATCH 4/6] Fix test failures --- .../internal/crt/DefaultS3CrtAsyncClient.java | 22 ++++--- .../s3/internal/s3express/S3ExpressUtils.java | 63 ------------------- 2 files changed, 15 insertions(+), 70 deletions(-) diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java index c6c18c4b2c4..4f3cbb57cbf 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java @@ -423,19 +423,14 @@ public void afterMarshalling(Context.AfterMarshalling context, existingHttpAttributes.toBuilder() : SdkHttpExecutionAttributes.builder(); - Region signingRegion = S3ExpressUtils.resolveSigningRegion(context.request(), executionAttributes, - executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)); - String signingName = S3ExpressUtils.resolveSigningName(context.request(), executionAttributes, - executionAttributes.getAttribute(SERVICE_SIGNING_NAME)); - builder.put(OPERATION_NAME, executionAttributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME)) .put(HTTP_CHECKSUM, executionAttributes.getAttribute(SdkInternalExecutionAttribute.HTTP_CHECKSUM)) - .put(SIGNING_REGION, signingRegion) + .put(SIGNING_REGION, executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)) .put(S3InternalSdkHttpExecutionAttribute.OBJECT_FILE_PATH, executionAttributes.getAttribute(OBJECT_FILE_PATH)) .put(USE_S3_EXPRESS_AUTH, S3ExpressUtils.isS3ExpressAuthRequest(context.request(), executionAttributes)) - .put(SIGNING_NAME, signingName) + .put(SIGNING_NAME, executionAttributes.getAttribute(SERVICE_SIGNING_NAME)) .put(REQUEST_CHECKSUM_CALCULATION, executionAttributes.getAttribute(SdkInternalExecutionAttribute.REQUEST_CHECKSUM_CALCULATION)) .put(RESPONSE_CHECKSUM_VALIDATION, @@ -467,6 +462,19 @@ public void afterMarshalling(Context.AfterMarshalling context, executionAttributes.putAttribute(SDK_HTTP_EXECUTION_ATTRIBUTES, attributes); } + + @Override + public void beforeTransmission(Context.BeforeTransmission context, + ExecutionAttributes executionAttributes) { + SdkHttpExecutionAttributes httpAttributes = executionAttributes.getAttribute(SDK_HTTP_EXECUTION_ATTRIBUTES); + if (httpAttributes != null) { + executionAttributes.putAttribute(SDK_HTTP_EXECUTION_ATTRIBUTES, + httpAttributes.toBuilder() + .put(SIGNING_REGION, executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)) + .put(SIGNING_NAME, executionAttributes.getAttribute(SERVICE_SIGNING_NAME)) + .build()); + } + } } private static final class ValidateRequestInterceptor implements ExecutionInterceptor { diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java index 20174b0207c..42c7928db43 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressUtils.java @@ -19,9 +19,6 @@ import java.util.List; import software.amazon.awssdk.annotations.SdkInternalApi; -import software.amazon.awssdk.awscore.endpoints.AwsEndpointAttribute; -import software.amazon.awssdk.awscore.endpoints.authscheme.EndpointAuthScheme; -import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4AuthScheme; import software.amazon.awssdk.core.SdkRequest; import software.amazon.awssdk.core.SelectedAuthScheme; import software.amazon.awssdk.core.interceptor.ExecutionAttributes; @@ -29,13 +26,8 @@ import software.amazon.awssdk.core.spi.identity.AuthSchemeOptionsResolver; import software.amazon.awssdk.core.useragent.BusinessMetricFeatureId; import software.amazon.awssdk.endpoints.Endpoint; -import software.amazon.awssdk.endpoints.EndpointProvider; import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption; -import software.amazon.awssdk.regions.Region; -import software.amazon.awssdk.services.s3.endpoints.S3EndpointParams; -import software.amazon.awssdk.services.s3.endpoints.S3EndpointProvider; import software.amazon.awssdk.services.s3.endpoints.internal.KnownS3ExpressEndpointProperty; -import software.amazon.awssdk.services.s3.endpoints.internal.S3EndpointResolverUtils; import software.amazon.awssdk.services.s3.s3express.S3ExpressAuthScheme; @SdkInternalApi @@ -81,61 +73,6 @@ private static boolean useS3ExpressAuthScheme(ExecutionAttributes executionAttri return false; } - /** - * Resolves the signing service name from the auth scheme options. This is needed because the endpoint rules may - * specify a different signing name (e.g., "s3express" for S3Express control plane APIs) than the client-level - * default ("s3"). Returns the fallback value if the signing name cannot be resolved from auth scheme options. - */ - public static String resolveSigningName(SdkRequest request, ExecutionAttributes executionAttributes, String fallback) { - Endpoint endpoint = resolveEndpoint(request, executionAttributes); - if (endpoint != null) { - List authSchemes = endpoint.attribute(AwsEndpointAttribute.AUTH_SCHEMES); - if (authSchemes != null && !authSchemes.isEmpty()) { - EndpointAuthScheme authScheme = authSchemes.get(0); - if (authScheme instanceof SigV4AuthScheme) { - return ((SigV4AuthScheme) authScheme).signingName(); - } - } - } - return fallback; - } - - /** - * Resolves the signing region from the endpoint resolution. This is needed because the endpoint rules may - * specify a different region (e.g., for cross-region access) than the client-level default. - * Returns the fallback value if the region cannot be resolved. - */ - public static Region resolveSigningRegion(SdkRequest request, ExecutionAttributes executionAttributes, Region fallback) { - Endpoint endpoint = resolveEndpoint(request, executionAttributes); - if (endpoint != null) { - List authSchemes = endpoint.attribute(AwsEndpointAttribute.AUTH_SCHEMES); - if (authSchemes != null && !authSchemes.isEmpty()) { - EndpointAuthScheme authScheme = authSchemes.get(0); - if (authScheme instanceof SigV4AuthScheme) { - String region = ((SigV4AuthScheme) authScheme).signingRegion(); - if (region != null) { - return Region.of(region); - } - } - } - } - return fallback; - } - - private static Endpoint resolveEndpoint(SdkRequest request, ExecutionAttributes executionAttributes) { - EndpointProvider endpointProvider = - executionAttributes.getAttribute(SdkInternalExecutionAttribute.ENDPOINT_PROVIDER); - if (endpointProvider instanceof S3EndpointProvider) { - try { - S3EndpointParams endpointParams = S3EndpointResolverUtils.ruleParams(request, executionAttributes); - return ((S3EndpointProvider) endpointProvider).resolveEndpoint(endpointParams).join(); - } catch (Exception e) { - // If resolution fails, fall back to defaults - } - } - return null; - } - /** * Adds S3 Express business metric if applicable for the current operation. */ From 65429c8e5869d34003bf53fe3767c851583cb988 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Wed, 20 May 2026 09:22:59 -0700 Subject: [PATCH 5/6] Fix checkstyle --- .../services/s3/internal/crt/DefaultS3CrtAsyncClient.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java index 4f3cbb57cbf..8a7bfebbff4 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java @@ -470,7 +470,8 @@ public void beforeTransmission(Context.BeforeTransmission context, if (httpAttributes != null) { executionAttributes.putAttribute(SDK_HTTP_EXECUTION_ATTRIBUTES, httpAttributes.toBuilder() - .put(SIGNING_REGION, executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNING_REGION)) + .put(SIGNING_REGION, executionAttributes.getAttribute( + AwsSignerExecutionAttribute.SIGNING_REGION)) .put(SIGNING_NAME, executionAttributes.getAttribute(SERVICE_SIGNING_NAME)) .build()); } From 57a38d26bb14cd9851d50823987efaa310c1ec1c Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Wed, 20 May 2026 12:17:22 -0700 Subject: [PATCH 6/6] Fix S3Express WireMock tests --- .../s3/functionaltests/S3ExpressCreateSessionTest.java | 6 ++++-- .../awssdk/services/s3/functionaltests/S3ExpressTest.java | 6 ++++-- .../s3/internal/s3express/S3ExpressCacheFunctionalTest.java | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressCreateSessionTest.java b/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressCreateSessionTest.java index 45c1f05f65e..d7e1a31e728 100644 --- a/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressCreateSessionTest.java +++ b/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressCreateSessionTest.java @@ -71,8 +71,10 @@ public class S3ExpressCreateSessionTest extends BaseRuleSetClientTest { private static final Logger log = Logger.loggerFor(S3ExpressCreateSessionTest.class); - private static final Function WM_HTTP_ENDPOINT = wm -> URI.create(wm.getHttpBaseUrl()); - private static final Function WM_HTTPS_ENDPOINT = wm -> URI.create(wm.getHttpsBaseUrl()); + private static final Function WM_HTTP_ENDPOINT = + wm -> URI.create("http://127.0.0.1:" + wm.getHttpPort()); + private static final Function WM_HTTPS_ENDPOINT = + wm -> URI.create("https://127.0.0.1:" + wm.getHttpsPort()); private static final AwsCredentialsProvider CREDENTIALS_PROVIDER = StaticCredentialsProvider.create(AwsBasicCredentials.create("akid", "skid")); private static final PathStyleEnforcingInterceptor PATH_STYLE_INTERCEPTOR = new PathStyleEnforcingInterceptor(); diff --git a/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressTest.java b/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressTest.java index 8c4a782f4e0..9d138286ea8 100644 --- a/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressTest.java +++ b/services/s3/src/test/java/software/amazon/awssdk/services/s3/functionaltests/S3ExpressTest.java @@ -76,8 +76,10 @@ @WireMockTest(httpsEnabled = true) public class S3ExpressTest extends BaseRuleSetClientTest { private static final Logger log = Logger.loggerFor(S3ExpressTest.class); - private static final Function WM_HTTP_ENDPOINT = wm -> URI.create(wm.getHttpBaseUrl()); - private static final Function WM_HTTPS_ENDPOINT = wm -> URI.create(wm.getHttpsBaseUrl()); + private static final Function WM_HTTP_ENDPOINT = + wm -> URI.create("http://127.0.0.1:" + wm.getHttpPort()); + private static final Function WM_HTTPS_ENDPOINT = + wm -> URI.create("https://127.0.0.1:" + wm.getHttpsPort()); private static final AwsCredentialsProvider CREDENTIALS_PROVIDER = StaticCredentialsProvider.create(AwsBasicCredentials.create("akid", "skid")); private static final PathStyleEnforcingInterceptor PATH_STYLE_INTERCEPTOR = new PathStyleEnforcingInterceptor(); diff --git a/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressCacheFunctionalTest.java b/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressCacheFunctionalTest.java index a91887cb8de..32e0a4fdc61 100644 --- a/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressCacheFunctionalTest.java +++ b/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/s3express/S3ExpressCacheFunctionalTest.java @@ -69,7 +69,8 @@ @WireMockTest(httpsEnabled = true) public class S3ExpressCacheFunctionalTest { - private static final Function WM_HTTPS_ENDPOINT = wm -> URI.create(wm.getHttpsBaseUrl()); + private static final Function WM_HTTPS_ENDPOINT = + wm -> URI.create("https://127.0.0.1:" + wm.getHttpsPort()); private static final PathStyleEnforcingInterceptor PATH_STYLE_INTERCEPTOR = new PathStyleEnforcingInterceptor(); private static final String S3EXPRESS_BUCKET_1 = "s3express-cache-1--use1-az1--x-s3"; private static final String S3EXPRESS_BUCKET_2 = "s3express-cache-2--use1-az1--x-s3";