diff --git a/core/http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer/BaseSignRequest.java b/core/http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer/BaseSignRequest.java index ec8214c1bc02..6f9f12c123df 100644 --- a/core/http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer/BaseSignRequest.java +++ b/core/http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer/BaseSignRequest.java @@ -70,7 +70,7 @@ default boolean hasProperty(SignerProperty property) { * The value, {@link T}, is return when present, and an exception is thrown otherwise. */ default T requireProperty(SignerProperty property) { - return Validate.notNull(property(property), property.toString() + " must not be null!"); + return Validate.notNull(property(property), "%s must not be null!", property); } /** diff --git a/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/SigningStage.java b/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/SigningStage.java index 2399c39cab58..d92628c2bba2 100644 --- a/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/SigningStage.java +++ b/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/SigningStage.java @@ -117,6 +117,18 @@ private SdkHttpFullRequest doSraSign(SdkHttpFullRequest req private SdkHttpFullRequest toSdkHttpFullRequest(SignedRequest signedRequest) { SdkHttpRequest request = signedRequest.request(); + // Optimization: don't do any conversion if we can avoid it. + if (request instanceof SdkHttpFullRequest) { + SdkHttpFullRequest fullRequest = (SdkHttpFullRequest) request; + if (signedRequest.payload().orElse(null) == fullRequest.contentStreamProvider().orElse(null)) { + return fullRequest; + } + + return fullRequest.toBuilder() + .contentStreamProvider(signedRequest.payload().orElse(null)) + .build(); + } + return SdkHttpFullRequest.builder() .contentStreamProvider(signedRequest.payload().orElse(null)) .protocol(request.protocol())