Skip to content

Commit 50a8658

Browse files
nidhiii-27Dhriti07
andauthored
feat(storage): update compose sample to support deleteSourceObjects option (#13493)
Update composeObject snippet to support deleteSourceObjects option. Add corresponding system integration tests. [Generated-by: AI] Co-authored-by: Dhriti07 <56169283+Dhriti07@users.noreply.github.com>
1 parent 6908dee commit 50a8658

2 files changed

Lines changed: 34 additions & 3 deletions

File tree

java-storage/samples/snippets/src/main/java/com/example/storage/object/ComposeObject.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public static void composeObject(
2828
String firstObjectName,
2929
String secondObjectName,
3030
String targetObjectName,
31-
String projectId) {
31+
String projectId,
32+
boolean deleteSourceObjects) {
3233
// The ID of your GCP project
3334
// String projectId = "your-project-id";
3435

@@ -70,17 +71,20 @@ public static void composeObject(
7071
.addSource(firstObjectName, secondObjectName)
7172
.setTarget(BlobInfo.newBuilder(bucketName, targetObjectName).build())
7273
.setTargetOptions(precondition)
74+
.setDeleteSourceObjects(deleteSourceObjects)
7375
.build();
7476

7577
Blob compositeObject = storage.compose(composeRequest);
7678

79+
String deletionMessage = deleteSourceObjects ? " and the source objects were deleted." : ".";
7780
System.out.println(
7881
"New composite object "
7982
+ compositeObject.getName()
8083
+ " was created by combining "
8184
+ firstObjectName
8285
+ " and "
83-
+ secondObjectName);
86+
+ secondObjectName
87+
+ deletionMessage);
8488
}
8589
}
8690
// [END storage_compose_file]

java-storage/samples/snippets/src/test/java/com/example/storage/ITObjectSnippets.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,12 +468,39 @@ public void testComposeObject() {
468468
BlobInfo.newBuilder(bucket.getName(), secondObject).build(), secondObject.getBytes(UTF_8));
469469

470470
ComposeObject.composeObject(
471-
bucket.getName(), firstObject, secondObject, targetObject, GOOGLE_CLOUD_PROJECT);
471+
bucket.getName(), firstObject, secondObject, targetObject, GOOGLE_CLOUD_PROJECT, false);
472472

473473
String got = stdOut.getCapturedOutputAsUtf8String();
474474
assertThat(got).contains(firstObject);
475475
assertThat(got).contains(secondObject);
476476
assertThat(got).contains(targetObject);
477+
// Verify source objects still exist
478+
assertThat(storage.get(bucket.getName(), firstObject)).isNotNull();
479+
assertThat(storage.get(bucket.getName(), secondObject)).isNotNull();
480+
}
481+
482+
@Test
483+
public void testComposeObjectWithDeleteSources() {
484+
String firstObject = generator.randomObjectName();
485+
String secondObject = generator.randomObjectName();
486+
String targetObject = generator.randomObjectName();
487+
storage.create(
488+
BlobInfo.newBuilder(bucket.getName(), firstObject).build(), firstObject.getBytes(UTF_8));
489+
storage.create(
490+
BlobInfo.newBuilder(bucket.getName(), secondObject).build(), secondObject.getBytes(UTF_8));
491+
492+
ComposeObject.composeObject(
493+
bucket.getName(), firstObject, secondObject, targetObject, GOOGLE_CLOUD_PROJECT, true);
494+
495+
String got = stdOut.getCapturedOutputAsUtf8String();
496+
assertThat(got).contains(firstObject);
497+
assertThat(got).contains(secondObject);
498+
assertThat(got).contains(targetObject);
499+
assertThat(got).contains("and the source objects were deleted");
500+
501+
// Verify source objects are deleted
502+
assertThat(storage.get(bucket.getName(), firstObject)).isNull();
503+
assertThat(storage.get(bucket.getName(), secondObject)).isNull();
477504
}
478505

479506
@Test

0 commit comments

Comments
 (0)