Skip to content

Commit efa994b

Browse files
committed
Review comments
1 parent acc4e6c commit efa994b

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/AwsChunkedV4PayloadSigner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.X_AMZ_CONTENT_SHA256;
2626
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.X_AMZ_DECODED_CONTENT_LENGTH;
2727
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.X_AMZ_TRAILER;
28-
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerUtils.computeAndMoveContentLength;
28+
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerUtils.moveContentLength;
2929

3030
import java.nio.ByteBuffer;
3131
import java.nio.charset.StandardCharsets;
@@ -173,7 +173,7 @@ public void beforeSigning(SdkHttpRequest.Builder request, ContentStreamProvider
173173
@Override
174174
public CompletableFuture<Pair<SdkHttpRequest.Builder, Optional<Publisher<ByteBuffer>>>> beforeSigningAsync(
175175
SdkHttpRequest.Builder request, Publisher<ByteBuffer> payload) {
176-
return computeAndMoveContentLength(request, payload)
176+
return moveContentLength(request, payload)
177177
.thenApply(p -> {
178178
SdkHttpRequest.Builder requestBuilder = p.left();
179179
setupPreExistingTrailers(requestBuilder);

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/util/SignerUtils.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,13 @@ public static long computeAndMoveContentLength(SdkHttpRequest.Builder request, C
225225
}
226226

227227
/**
228-
* Move `Content-Length` to `x-amz-decoded-content-length` if not already present. If `Content-Length` is not present, then
229-
* the payload is read in its entirety to calculate the length.
228+
* Move Content-Length` to `x-amz-decoded-content-length` if not already present. If `Content-Length` is not present, the
229+
* future is completed exceptionally. Note: this behavior differs from the sync version
230+
* {@link #computeAndMoveContentLength(SdkHttpRequest.Builder, ContentStreamProvider)} as the sync version reads the entire
231+
* stream to compute the length if the header is not present. The async version was introduced after the sync version; moving
232+
* forward, requests that have an unknown content length should be done through chunked transfer encoding.
230233
*/
231-
public static CompletableFuture<Pair<SdkHttpRequest.Builder, Optional<Publisher<ByteBuffer>>>> computeAndMoveContentLength(
234+
public static CompletableFuture<Pair<SdkHttpRequest.Builder, Optional<Publisher<ByteBuffer>>>> moveContentLength(
232235
SdkHttpRequest.Builder request, Publisher<ByteBuffer> contentPublisher) {
233236
Optional<String> decodedContentLength = request.firstMatchingHeader(X_AMZ_DECODED_CONTENT_LENGTH);
234237

core/http-auth-aws/src/test/java/software/amazon/awssdk/http/auth/aws/internal/signer/util/SignerUtilsTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,42 +81,42 @@ void computeAndMoveContentLength_contentLengthNotPresent_shouldInvokeNewStream(I
8181
}
8282

8383
@Test
84-
void computeAndMoveContentLength_async_decodedContentLengthPresent_shouldNotSubscribeToPublisher() {
84+
void moveContentLength_async_decodedContentLengthPresent_shouldNotSubscribeToPublisher() {
8585

8686
SdkHttpRequest.Builder request = SdkHttpRequest.builder()
8787
.appendHeader(X_AMZ_DECODED_CONTENT_LENGTH, "10")
8888
.appendHeader(CONTENT_LENGTH, "10");
8989

9090
Publisher<ByteBuffer> contentPublisher = Mockito.spy(Flowable.empty());
9191

92-
SignerUtils.computeAndMoveContentLength(request, contentPublisher).join();
92+
SignerUtils.moveContentLength(request, contentPublisher).join();
9393
Mockito.verify(contentPublisher, Mockito.never()).subscribe(Mockito.any(Subscriber.class));
9494

9595
assertThat(request.firstMatchingHeader(CONTENT_LENGTH)).isEmpty();
9696
assertThat(request.firstMatchingHeader(X_AMZ_DECODED_CONTENT_LENGTH)).contains("10");
9797
}
9898

9999
@Test
100-
void computeAndMoveContentLength_async_contentLengthPresent_shouldNotSubscribeToPublisher() {
100+
void moveContentLength_async_contentLengthPresent_shouldNotSubscribeToPublisher() {
101101
SdkHttpRequest.Builder request = SdkHttpRequest.builder()
102102
.appendHeader(CONTENT_LENGTH, "10");
103103

104104
Publisher<ByteBuffer> contentPublisher = Mockito.spy(Flowable.empty());
105105

106-
SignerUtils.computeAndMoveContentLength(request, contentPublisher).join();
106+
SignerUtils.moveContentLength(request, contentPublisher).join();
107107
Mockito.verify(contentPublisher, Mockito.never()).subscribe(Mockito.any(Subscriber.class));
108108

109109
assertThat(request.firstMatchingHeader(CONTENT_LENGTH)).isEmpty();
110110
assertThat(request.firstMatchingHeader(X_AMZ_DECODED_CONTENT_LENGTH)).contains("10");
111111
}
112112

113113
@Test
114-
void computeAndMoveContentLength_contentLengthNotPresent_throws() {
114+
void moveContentLength_contentLengthNotPresent_throws() {
115115
SdkHttpRequest.Builder request = SdkHttpRequest.builder();
116116

117117
Publisher<ByteBuffer> contentPublisher = Flowable.just(ByteBuffer.wrap("content".getBytes(StandardCharsets.UTF_8)));
118118

119-
assertThatThrownBy(() -> SignerUtils.computeAndMoveContentLength(request, contentPublisher).join())
119+
assertThatThrownBy(() -> SignerUtils.moveContentLength(request, contentPublisher).join())
120120
.isInstanceOf(UnsupportedOperationException.class)
121121
.hasMessage("Content-Length header must be specified");
122122

0 commit comments

Comments
 (0)