File tree Expand file tree Collapse file tree 4 files changed +23
-5
lines changed
java/software/amazon/awssdk/services/s3/internal/handlers
resources/codegen-resources
test/java/software/amazon/awssdk/services/s3/internal/handlers Expand file tree Collapse file tree 4 files changed +23
-5
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "type" : " bugfix" ,
3
+ "category" : " Amazon S3" ,
4
+ "contributor" : " " ,
5
+ "description" : " Add `Expect: 100-continue` header for `UploadPartRequest` so that a upload part request can fail faster if there is a server error."
6
+ }
Original file line number Diff line number Diff line change 21
21
import software .amazon .awssdk .core .interceptor .ExecutionInterceptor ;
22
22
import software .amazon .awssdk .http .SdkHttpRequest ;
23
23
import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
24
+ import software .amazon .awssdk .services .s3 .model .UploadPartRequest ;
24
25
25
26
/**
26
27
* Interceptor to add an 'Expect: 100-continue' header to the HTTP Request if it represents a PUT Object request.
27
28
*/
28
29
@ SdkInternalApi
29
30
//TODO: This should be generalized for all streaming requests
30
- public final class PutObjectInterceptor implements ExecutionInterceptor {
31
+ public final class StreamingRequestInterceptor implements ExecutionInterceptor {
31
32
@ Override
32
33
public SdkHttpRequest modifyHttpRequest (Context .ModifyHttpRequest context ,
33
34
ExecutionAttributes executionAttributes ) {
34
- if (context .request () instanceof PutObjectRequest ) {
35
+ if (context .request () instanceof PutObjectRequest || context . request () instanceof UploadPartRequest ) {
35
36
return context .httpRequest ().toBuilder ().putHeader ("Expect" , "100-continue" ).build ();
36
37
}
37
38
return context .httpRequest ();
Original file line number Diff line number Diff line change 237
237
"asyncClientDecorator": "software.amazon.awssdk.services.s3.internal.client.S3AsyncClientDecorator",
238
238
"useGlobalEndpoint": true,
239
239
"interceptors": [
240
- "software.amazon.awssdk.services.s3.internal.handlers.PutObjectInterceptor ",
240
+ "software.amazon.awssdk.services.s3.internal.handlers.StreamingRequestInterceptor ",
241
241
"software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor",
242
242
"software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor",
243
243
"software.amazon.awssdk.services.s3.internal.handlers.EnableChunkedEncodingInterceptor",
Original file line number Diff line number Diff line change 23
23
import software .amazon .awssdk .http .SdkHttpRequest ;
24
24
import software .amazon .awssdk .services .s3 .model .GetObjectRequest ;
25
25
import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
26
+ import software .amazon .awssdk .services .s3 .model .UploadPartRequest ;
26
27
27
- public class PutObjectInterceptorTest {
28
- private final PutObjectInterceptor interceptor = new PutObjectInterceptor ();
28
+ public class StreamingRequestInterceptorTest {
29
+ private final StreamingRequestInterceptor interceptor = new StreamingRequestInterceptor ();
29
30
30
31
@ Test
31
32
public void modifyHttpRequest_setsExpect100Continue_whenSdkRequestIsPutObject () {
@@ -36,6 +37,16 @@ public void modifyHttpRequest_setsExpect100Continue_whenSdkRequestIsPutObject()
36
37
assertThat (modifiedRequest .firstMatchingHeader ("Expect" )).hasValue ("100-continue" );
37
38
}
38
39
40
+ @ Test
41
+ public void modifyHttpRequest_setsExpect100Continue_whenSdkRequestIsUploadPart () {
42
+
43
+ final SdkHttpRequest modifiedRequest =
44
+ interceptor .modifyHttpRequest (modifyHttpRequestContext (UploadPartRequest .builder ().build ()),
45
+ new ExecutionAttributes ());
46
+
47
+ assertThat (modifiedRequest .firstMatchingHeader ("Expect" )).hasValue ("100-continue" );
48
+ }
49
+
39
50
@ Test
40
51
public void modifyHttpRequest_doesNotSetExpect_whenSdkRequestIsNotPutObject () {
41
52
You can’t perform that action at this time.
0 commit comments