diff --git a/java-storage/samples/snippets/src/main/java/com/example/storage/control/v2/DeleteFolderRecursive.java b/java-storage/samples/snippets/src/main/java/com/example/storage/control/v2/DeleteFolderRecursive.java new file mode 100644 index 000000000000..ff65aa145412 --- /dev/null +++ b/java-storage/samples/snippets/src/main/java/com/example/storage/control/v2/DeleteFolderRecursive.java @@ -0,0 +1,48 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.storage.control.v2; + +// [START storage_control_delete_folder_recursive] + +import com.google.storage.control.v2.DeleteFolderRecursiveRequest; +import com.google.storage.control.v2.FolderName; +import com.google.storage.control.v2.StorageControlClient; + +public final class DeleteFolderRecursive { + + public static void deleteFolderRecursive(String bucketName, String folderName) + throws Exception { + // The name of the bucket + // String bucketName = "your-unique-bucket-name"; + + // The name of the folder within the bucket + // String folderName = "your-unique-folder-name"; + + try (StorageControlClient storageControl = StorageControlClient.create()) { + + // Set project to "_" to signify globally scoped bucket + String folderResourceName = FolderName.format("_", bucketName, folderName); + DeleteFolderRecursiveRequest request = + DeleteFolderRecursiveRequest.newBuilder().setName(folderResourceName).build(); + + storageControl.deleteFolderRecursiveAsync(request).get(); + + System.out.printf("Deleted folder recursively: %s%n", folderResourceName); + } + } +} +// [END storage_control_delete_folder_recursive] diff --git a/java-storage/samples/snippets/src/test/java/com/example/storage/control/v2/FoldersTest.java b/java-storage/samples/snippets/src/test/java/com/example/storage/control/v2/FoldersTest.java index a677614a9a7c..d3ae78252d05 100644 --- a/java-storage/samples/snippets/src/test/java/com/example/storage/control/v2/FoldersTest.java +++ b/java-storage/samples/snippets/src/test/java/com/example/storage/control/v2/FoldersTest.java @@ -88,8 +88,7 @@ public void createFolder() throws IOException { @Test public void getFolder() throws IOException { FolderName folderName = FolderName.of("_", bucket.getName(), UUID.randomUUID().toString()); - Folder gen1 = - storageControl.createFolder( + storageControl.createFolder( BucketName.of("_", bucket.getName()), Folder.getDefaultInstance(), folderName.getFolder()); @@ -106,8 +105,7 @@ public void getFolder() throws IOException { public void renameFolder() throws IOException, ExecutionException, InterruptedException, TimeoutException { FolderName srcFolderName = FolderName.of("_", bucket.getName(), UUID.randomUUID().toString()); - Folder gen1 = - storageControl.createFolder( + storageControl.createFolder( BucketName.of("_", bucket.getName()), Folder.getDefaultInstance(), srcFolderName.getFolder()); @@ -128,8 +126,7 @@ public void renameFolder() @Test public void deleteFolder() throws IOException { FolderName folderName = FolderName.of("_", bucket.getName(), UUID.randomUUID().toString()); - Folder gen1 = - storageControl.createFolder( + storageControl.createFolder( BucketName.of("_", bucket.getName()), Folder.getDefaultInstance(), folderName.getFolder()); @@ -139,11 +136,23 @@ public void deleteFolder() throws IOException { assertThrows(NotFoundException.class, () -> storageControl.getFolder(folderName)); } + @Test + public void deleteFolderRecursive() throws Exception { + FolderName folderName = FolderName.of("_", bucket.getName(), UUID.randomUUID().toString()); + storageControl.createFolder( + BucketName.of("_", bucket.getName()), + Folder.getDefaultInstance(), + folderName.getFolder()); + + DeleteFolderRecursive.deleteFolderRecursive(bucket.getName(), folderName.getFolder()); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains(folderName.toString()); + assertThrows(NotFoundException.class, () -> storageControl.getFolder(folderName)); + } + @Test public void listFolder() throws IOException { FolderName folderName = FolderName.of("_", bucket.getName(), UUID.randomUUID().toString()); - Folder gen1 = - storageControl.createFolder( + storageControl.createFolder( BucketName.of("_", bucket.getName()), Folder.getDefaultInstance(), folderName.getFolder());