Skip to content

Commit 71af9cf

Browse files
committed
Add support for tagging builder in createMultipartUploadRequest
1 parent 576c49d commit 71af9cf

File tree

3 files changed

+49
-10
lines changed

3 files changed

+49
-10
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"category": "Amazon S3",
3+
"type": "feature",
4+
"description": "Add support for Tagging builder in `CreateMultipartUploadRequest`. See [#1440](https://github.com/aws/aws-sdk-java-v2/issues/1440)"
5+
}

services/s3/src/it/java/software/amazon/awssdk/services/s3/ObjectTaggingIntegrationTest.java

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020

2121
import java.util.ArrayList;
2222
import java.util.List;
23+
import org.apache.commons.lang3.RandomStringUtils;
2324
import org.junit.AfterClass;
2425
import org.junit.BeforeClass;
2526
import org.junit.Test;
2627
import software.amazon.awssdk.core.sync.RequestBody;
2728
import software.amazon.awssdk.services.s3.model.BucketVersioningStatus;
29+
import software.amazon.awssdk.services.s3.model.CompletedMultipartUpload;
2830
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
2931
import software.amazon.awssdk.services.s3.model.DeleteObjectTaggingRequest;
3032
import software.amazon.awssdk.services.s3.model.GetObjectTaggingRequest;
@@ -33,6 +35,7 @@
3335
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
3436
import software.amazon.awssdk.services.s3.model.Tag;
3537
import software.amazon.awssdk.services.s3.model.Tagging;
38+
import software.amazon.awssdk.services.s3.model.UploadPartResponse;
3639
import software.amazon.awssdk.services.s3.model.VersioningConfiguration;
3740

3841
/**
@@ -95,10 +98,7 @@ public void putObject_WithTagging_Succeeds() {
9598

9699
@Test
97100
public void getObjectTagging_Succeeds() {
98-
List<Tag> tagSet = new ArrayList<>();
99-
tagSet.add(Tag.builder().key("foo").value("1").build());
100-
tagSet.add(Tag.builder().key("bar").value("2").build());
101-
tagSet.add(Tag.builder().key("baz").value("3").build());
101+
List<Tag> tagSet = tags();
102102

103103
Tagging tags = Tagging.builder().tagSet(tagSet).build();
104104

@@ -147,10 +147,7 @@ public void putObjectTagging_Succeeds_WithUrlEncodedTags() {
147147

148148
@Test
149149
public void copyObject_Succeeds_WithNewTags() {
150-
List<Tag> tagSet = new ArrayList<>();
151-
tagSet.add(Tag.builder().key("foo").value("1").build());
152-
tagSet.add(Tag.builder().key("bar").value("2").build());
153-
tagSet.add(Tag.builder().key("baz").value("3").build());
150+
List<Tag> tagSet = tags();
154151

155152
Tagging tags = Tagging.builder().tagSet(tagSet).build();
156153

@@ -183,12 +180,43 @@ public void copyObject_Succeeds_WithNewTags() {
183180
assertThat(getTaggingResult).containsExactlyInAnyOrder(tagsCopy.tagSet().toArray(new Tag[tagsCopy.tagSet().size()]));
184181
}
185182

186-
@Test
187-
public void testDeleteObjectTagging() {
183+
private List<Tag> tags() {
188184
List<Tag> tagSet = new ArrayList<>();
189185
tagSet.add(Tag.builder().key("foo").value("1").build());
190186
tagSet.add(Tag.builder().key("bar").value("2").build());
191187
tagSet.add(Tag.builder().key("baz").value("3").build());
188+
return tagSet;
189+
}
190+
191+
@Test
192+
public void multipartUploadWithNewTags_shouldSucceed() {
193+
List<Tag> tagSet = tags();
194+
195+
Tagging tags = Tagging.builder().tagSet(tagSet).build();
196+
197+
String key = makeNewKey();
198+
String uploadId =
199+
s3.createMultipartUpload(b -> b.tagging(tags).bucket(BUCKET).key(key)).uploadId();
200+
201+
UploadPartResponse uploadPartResponse = s3.uploadPart(b -> b.bucket(BUCKET).key(key).partNumber(1).uploadId(uploadId),
202+
RequestBody.fromString(RandomStringUtils.random(1000)));
203+
CompletedMultipartUpload parts =
204+
CompletedMultipartUpload.builder().parts(p -> p.partNumber(1).eTag(uploadPartResponse.eTag()).build()).build();
205+
206+
s3.completeMultipartUpload(b -> b.bucket(BUCKET).key(key).multipartUpload(parts).uploadId(uploadId).build());
207+
208+
List<Tag> getTaggingResult = s3.getObjectTagging(GetObjectTaggingRequest.builder()
209+
.bucket(BUCKET)
210+
.key(key)
211+
.build())
212+
.tagSet();
213+
214+
assertThat(getTaggingResult).containsExactlyInAnyOrder(tags.tagSet().toArray(new Tag[0]));
215+
}
216+
217+
@Test
218+
public void testDeleteObjectTagging() {
219+
List<Tag> tagSet = tags();
192220

193221
Tagging tags = Tagging.builder().tagSet(tagSet).build();
194222

services/s3/src/main/resources/codegen-resources/customization.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@
7575
"memberName": "Tagging",
7676
"convenienceType": "software.amazon.awssdk.services.s3.model.Tagging",
7777
"typeAdapterFqcn": "software.amazon.awssdk.services.s3.internal.TaggingAdapter"
78+
},
79+
{
80+
"shapeName": "CreateMultipartUploadRequest",
81+
"memberName": "Tagging",
82+
"convenienceType": "software.amazon.awssdk.services.s3.model.Tagging",
83+
"typeAdapterFqcn": "software.amazon.awssdk.services.s3.internal.TaggingAdapter"
7884
}
7985
],
8086
"customResponseMetadata": {

0 commit comments

Comments
 (0)