From 527541aebcbaa352671da442a3c329aa22391bb1 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 13:23:27 -0400 Subject: [PATCH 1/7] samples(bigtable): migrate admin snippets to modern V2 clients --- .../java/com/example/bigtable/HelloWorld.java | 31 ++++--- .../bigtable/InstanceAdminExample.java | 38 +++++--- .../example/bigtable/TableAdminExample.java | 53 ++++++----- .../com/example/bigtable/HelloWorldTest.java | 58 ++++++++---- .../bigtable/InstanceAdminExampleTest.java | 88 +++++++++++++------ .../bigtable/TableAdminExampleTest.java | 79 +++++++++++------ 6 files changed, 229 insertions(+), 118 deletions(-) diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java index 02a568f615ed..56359330399c 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java @@ -22,8 +22,8 @@ import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.ServerStream; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.cloud.bigtable.data.v2.models.Filters.Filter; @@ -63,7 +63,7 @@ public class HelloWorld { private final String instanceId; private final String tableId; private final BigtableDataClient dataClient; - private final BigtableTableAdminClient adminClient; + private final BigtableTableAdminClientV2 adminClient; public static void main(String[] args) throws Exception { @@ -92,14 +92,11 @@ public HelloWorld(String projectId, String instanceId, String tableId) throws IO dataClient = BigtableDataClient.create(settings); // Creates the settings to configure a bigtable table admin client. - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); // Creates a bigtable table admin client. - adminClient = BigtableTableAdminClient.create(adminSettings); + adminClient = BigtableTableAdminClientV2.create(adminSettings); // [END bigtable_hw_connect] } @@ -123,7 +120,17 @@ public void close() { public void createTable() { // [START bigtable_hw_create_table] // Checks if table exists, creates table if does not exist. - if (!adminClient.exists(tableId)) { + boolean exists = false; + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + exists = true; + } catch (NotFoundException e) { + // ignore + } + if (!exists) { System.out.println("Creating table: " + tableId); String parent = "projects/" + projectId + "/instances/" + instanceId; com.google.bigtable.admin.v2.CreateTableRequest request = @@ -137,7 +144,7 @@ public void createTable() { com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) .build()) .build(); - adminClient.getBaseClient().createTable(request); + adminClient.createTable(request); System.out.printf("Table %s created successfully%n", tableId); } // [END bigtable_hw_create_table] @@ -270,7 +277,7 @@ public void deleteTable() { try { String tableName = "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId; - adminClient.getBaseClient().deleteTable(tableName); + adminClient.deleteTable(tableName); System.out.printf("Table %s deleted successfully%n", tableId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent table: " + e.getMessage()); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java index 05a54224792c..51bd11564d24 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java @@ -29,8 +29,8 @@ import com.google.bigtable.admin.v2.ListInstancesRequest; import com.google.bigtable.admin.v2.ListInstancesResponse; import com.google.bigtable.admin.v2.StorageType; -import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; +import com.google.cloud.bigtable.admin.v2.BaseBigtableInstanceAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClientV2; import java.io.IOException; import java.util.Map; @@ -56,7 +56,7 @@ public class InstanceAdminExample { private final String projectId; private final String clusterId; private final String instanceId; - private final BigtableInstanceAdminClient adminClient; + private final BigtableInstanceAdminClientV2 adminClient; public static void main(String[] args) throws IOException { @@ -85,11 +85,11 @@ public InstanceAdminExample(String projectId, String instanceId, String clusterI this.clusterId = clusterId; // Creates the settings to configure a bigtable instance admin client. - BigtableInstanceAdminSettings instanceAdminSettings = - BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId).build(); + BaseBigtableInstanceAdminSettings instanceAdminSettings = + BaseBigtableInstanceAdminSettings.newBuilder().build(); // Creates a bigtable instance admin client. - adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); + adminClient = BigtableInstanceAdminClientV2.create(instanceAdminSettings); } public void run(boolean createWithTags) { @@ -121,7 +121,17 @@ void close() { */ public void createProdInstance(boolean createWithTags) { // Checks if instance exists, creates instance if does not exists. - if (!adminClient.exists(instanceId)) { + boolean exists = false; + try { + adminClient.getInstance( + com.google.bigtable.admin.v2.GetInstanceRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId) + .build()); + exists = true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + // ignore + } + if (!exists) { System.out.println("Instance does not exist, creating a PRODUCTION instance"); // [START bigtable_create_prod_instance] // Creates a Production Instance with the ID "ssd-instance", @@ -157,7 +167,7 @@ public void createProdInstance(boolean createWithTags) { .build(); // Creates a production instance with the given request. try { - Instance instance = adminClient.getBaseClient().createInstanceAsync(request).get(); + Instance instance = adminClient.createInstanceAsync(request).get(); System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getName()); } catch (Exception e) { System.err.println("Failed to create instance: " + e.getMessage()); @@ -174,7 +184,7 @@ public void listInstances() { try { String parent = "projects/" + projectId; ListInstancesRequest request = ListInstancesRequest.newBuilder().setParent(parent).build(); - ListInstancesResponse response = adminClient.getBaseClient().listInstances(request); + ListInstancesResponse response = adminClient.listInstances(request); for (Instance instance : response.getInstancesList()) { System.out.println(instance.getName()); } @@ -192,7 +202,7 @@ public Instance getInstance() { try { String name = "projects/" + projectId + "/instances/" + instanceId; GetInstanceRequest request = GetInstanceRequest.newBuilder().setName(name).build(); - instance = adminClient.getBaseClient().getInstance(request); + instance = adminClient.getInstance(request); System.out.println("Instance ID: " + instance.getName()); System.out.println("Display Name: " + instance.getDisplayName()); System.out.print("Labels: "); @@ -216,7 +226,7 @@ public void listClusters() { try { String parent = "projects/" + projectId + "/instances/" + instanceId; ListClustersRequest request = ListClustersRequest.newBuilder().setParent(parent).build(); - ListClustersResponse response = adminClient.getBaseClient().listClusters(request); + ListClustersResponse response = adminClient.listClusters(request); for (Cluster cluster : response.getClustersList()) { System.out.println(cluster.getName()); } @@ -233,7 +243,7 @@ public void deleteInstance() { try { String name = "projects/" + projectId + "/instances/" + instanceId; DeleteInstanceRequest request = DeleteInstanceRequest.newBuilder().setName(name).build(); - adminClient.getBaseClient().deleteInstance(request); + adminClient.deleteInstance(request); System.out.println("Instance deleted: " + instanceId); } catch (NotFoundException e) { System.err.println("Failed to delete non-existent instance: " + e.getMessage()); @@ -259,7 +269,7 @@ public void addCluster() { .setClusterId(CLUSTER) .setCluster(clusterObj) .build(); - adminClient.getBaseClient().createClusterAsync(request).get(); + adminClient.createClusterAsync(request).get(); System.out.printf("Cluster: %s created successfully%n", CLUSTER); } catch (Exception e) { System.err.println("Failed to add cluster: " + e.getMessage()); @@ -274,7 +284,7 @@ public void deleteCluster() { try { String name = "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER; DeleteClusterRequest request = DeleteClusterRequest.newBuilder().setName(name).build(); - adminClient.getBaseClient().deleteCluster(request); + adminClient.deleteCluster(request); System.out.printf("Cluster: %s deleted successfully%n", CLUSTER); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent cluster: " + e.getMessage()); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java index 009fef39105a..eb02fff5f0a7 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java @@ -24,8 +24,8 @@ import com.google.bigtable.admin.v2.ListTablesRequest; import com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest; import com.google.bigtable.admin.v2.Table; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.admin.v2.models.GcRuleBuilder; import java.io.IOException; import java.time.Duration; @@ -62,7 +62,7 @@ public class TableAdminExample { private final String projectId; private final String instanceId; private final String tableId; - private final BigtableTableAdminClient adminClient; + private final BigtableTableAdminClientV2 adminClient; public static void main(String[] args) throws IOException { @@ -83,14 +83,11 @@ public TableAdminExample(String projectId, String instanceId, String tableId) th this.tableId = tableId; // Creates the settings to configure a bigtable table admin client. - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); // Creates a bigtable table admin client. - adminClient = BigtableTableAdminClient.create(adminSettings); + adminClient = BigtableTableAdminClientV2.create(adminSettings); } public void run() { @@ -119,7 +116,17 @@ void close() { public void createTable() { // [START bigtable_create_table] // Checks if table exists, creates table if does not exist. - if (!adminClient.exists(tableId)) { + boolean exists = false; + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + exists = true; + } catch (NotFoundException e) { + // ignore + } + if (!exists) { System.out.println("Table does not exist, creating table: " + tableId); String parent = "projects/" + projectId + "/instances/" + instanceId; CreateTableRequest createTableRequest = @@ -131,7 +138,7 @@ public void createTable() { .putColumnFamilies("cf", ColumnFamily.getDefaultInstance()) .build()) .build(); - Table table = adminClient.getBaseClient().createTable(createTableRequest); + Table table = adminClient.createTable(createTableRequest); System.out.printf("Table: %s created successfully%n", table.getName()); } // [END bigtable_create_table] @@ -145,7 +152,7 @@ public void listAllTables() { try { String parent = "projects/" + projectId + "/instances/" + instanceId; ListTablesRequest request = ListTablesRequest.newBuilder().setParent(parent).build(); - for (Table table : adminClient.getBaseClient().listTables(request).iterateAll()) { + for (Table table : adminClient.listTables(request).iterateAll()) { System.out.println(table.getName()); } } catch (NotFoundException e) { @@ -162,7 +169,7 @@ public void getTableMeta() { try { String tableName = "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId; - Table table = adminClient.getBaseClient().getTable(tableName); + Table table = adminClient.getTable(tableName); System.out.println("Table: " + table.getName()); for (java.util.Map.Entry entry : table.getColumnFamiliesMap().entrySet()) { @@ -198,7 +205,7 @@ public void addFamilyWithMaxAgeRule() { .setId(COLUMN_FAMILY_1) .setCreate(ColumnFamily.newBuilder().setGcRule(maxAgeRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.println("Created column family: " + COLUMN_FAMILY_1); } catch (AlreadyExistsException e) { System.err.println( @@ -229,7 +236,7 @@ public void addFamilyWithMaxVersionsRule() { .setId(COLUMN_FAMILY_2) .setCreate(ColumnFamily.newBuilder().setGcRule(versionRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.println("Created column family: " + COLUMN_FAMILY_2); } catch (AlreadyExistsException e) { System.err.println( @@ -264,7 +271,7 @@ public void addFamilyWithUnionRule() { .setId(COLUMN_FAMILY_3) .setCreate(ColumnFamily.newBuilder().setGcRule(unionRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.println("Created column family: " + COLUMN_FAMILY_3); } catch (AlreadyExistsException e) { System.err.println( @@ -298,7 +305,7 @@ public void addFamilyWithIntersectionRule() { .setId(COLUMN_FAMILY_4) .setCreate(ColumnFamily.newBuilder().setGcRule(intersectionRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.println("Created column family: " + COLUMN_FAMILY_4); } catch (AlreadyExistsException e) { System.err.println( @@ -335,7 +342,7 @@ public void addFamilyWithNestedRule() { .setId(COLUMN_FAMILY_5) .setCreate(ColumnFamily.newBuilder().setGcRule(unionRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.println("Created column family: " + COLUMN_FAMILY_5); } catch (AlreadyExistsException e) { System.err.println( @@ -352,7 +359,7 @@ public void listColumnFamilies() { try { String tableName = "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId; - Table table = adminClient.getBaseClient().getTable(tableName); + Table table = adminClient.getTable(tableName); for (java.util.Map.Entry entry : table.getColumnFamiliesMap().entrySet()) { System.out.printf( @@ -383,7 +390,7 @@ public void modifyColumnFamilyRule() { .setId(COLUMN_FAMILY_1) .setUpdate(ColumnFamily.newBuilder().setGcRule(versionRule))) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.printf("Column family %s GC rule updated%n", COLUMN_FAMILY_1); } catch (NotFoundException e) { System.err.println("Failed to modify a non-existent column family: " + e.getMessage()); @@ -398,7 +405,7 @@ public void printModifiedColumnFamily() { try { String tableName = "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId; - Table table = adminClient.getBaseClient().getTable(tableName); + Table table = adminClient.getTable(tableName); if (table.containsColumnFamilies(COLUMN_FAMILY_1)) { System.out.printf( "Column family: %s%nGC Rule: %s%n", @@ -426,7 +433,7 @@ public void deleteColumnFamily() { .setId(COLUMN_FAMILY_2) .setDrop(true)) .build(); - adminClient.getBaseClient().modifyColumnFamilies(request); + adminClient.modifyColumnFamilies(request); System.out.printf("Column family %s deleted successfully%n", COLUMN_FAMILY_2); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent column family: " + e.getMessage()); @@ -442,7 +449,7 @@ public void deleteTable() { try { String tableName = "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId; - adminClient.getBaseClient().deleteTable(tableName); + adminClient.deleteTable(tableName); System.out.printf("Table: %s deleted successfully%n", tableId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent table: " + e.getMessage()); diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java index ead4d6c3fde7..0af0384af430 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java @@ -21,9 +21,8 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.cloud.bigtable.data.v2.models.TableId; @@ -44,7 +43,7 @@ public class HelloWorldTest extends BigtableBaseTest { private static final String TABLE_PREFIX = "table"; private static String tableId; private static BigtableDataClient dataClient; - private static BigtableTableAdminClient adminClient; + private static BigtableTableAdminClientV2 adminClient; private HelloWorld helloWorld; @BeforeClass @@ -53,12 +52,21 @@ public static void beforeClass() throws IOException { BigtableDataSettings settings = BigtableDataSettings.newBuilder().setProjectId(projectId).setInstanceId(instanceId).build(); dataClient = BigtableDataClient.create(settings); - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); - adminClient = BigtableTableAdminClient.create(adminSettings); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private static boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } @AfterClass @@ -72,13 +80,24 @@ public static void afterClass() throws Exception { public void setup() throws IOException { tableId = generateTableId(); helloWorld = new HelloWorld(projectId, instanceId, tableId); - adminClient.createTable(CreateTableRequest.of(tableId).addFamily("cf1")); + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + "cf1", com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + adminClient.createTable(request); } @After public void teardown() { - if (adminClient.exists(tableId)) { - adminClient.deleteTable(tableId); + if (exists(tableId)) { + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); } helloWorld.close(); } @@ -89,11 +108,11 @@ public void testCreateAndDeleteTable() throws IOException { String testTable = generateTableId(); HelloWorld testHelloWorld = new HelloWorld(projectId, instanceId, testTable); testHelloWorld.createTable(); - assertTrue(adminClient.exists(testTable)); + assertTrue(exists(testTable)); // Deletes a table. testHelloWorld.deleteTable(); - assertTrue(!adminClient.exists(testTable)); + assertTrue(!exists(testTable)); testHelloWorld.close(); } @@ -127,7 +146,12 @@ private String generateTableId() { private static void garbageCollect() { Pattern timestampPattern = Pattern.compile(TABLE_PREFIX + "-([0-9a-f]+)-([0-9a-f]+)"); - for (String tableId : adminClient.listTables()) { + com.google.bigtable.admin.v2.ListTablesRequest request = + com.google.bigtable.admin.v2.ListTablesRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .build(); + for (com.google.bigtable.admin.v2.Table table : adminClient.listTables(request).iterateAll()) { + String tableId = table.getName().substring(table.getName().lastIndexOf("/") + 1); Matcher matcher = timestampPattern.matcher(tableId); if (!matcher.matches()) { continue; @@ -138,7 +162,7 @@ private static void garbageCollect() { continue; } System.out.println("\nGarbage collecting orphaned table: " + tableId); - adminClient.deleteTable(tableId); + adminClient.deleteTable(table.getName()); } } } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java index 9539a27bf7c5..d5b965317d60 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java @@ -21,11 +21,12 @@ import static org.junit.Assert.assertTrue; import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest; -import com.google.cloud.bigtable.admin.v2.models.Instance.Type; -import com.google.cloud.bigtable.admin.v2.models.StorageType; +import com.google.bigtable.admin.v2.Cluster; +import com.google.bigtable.admin.v2.CreateInstanceRequest; +import com.google.bigtable.admin.v2.Instance; +import com.google.bigtable.admin.v2.StorageType; +import com.google.cloud.bigtable.admin.v2.BaseBigtableInstanceAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClientV2; import java.io.IOException; import java.util.Random; import java.util.regex.Matcher; @@ -41,16 +42,28 @@ public class InstanceAdminExampleTest extends BigtableBaseTest { private static final String ID_PREFIX = "instanceadmin"; private static final String CLUSTER = "cluster"; - private static BigtableInstanceAdminClient adminClient; + private static BigtableInstanceAdminClientV2 adminClient; private String clusterId; private InstanceAdminExample instanceAdmin; @BeforeClass public static void beforeClass() throws IOException { initializeVariables(); - BigtableInstanceAdminSettings instanceAdminSettings = - BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId).build(); - adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); + BaseBigtableInstanceAdminSettings instanceAdminSettings = + BaseBigtableInstanceAdminSettings.newBuilder().build(); + adminClient = BigtableInstanceAdminClientV2.create(instanceAdminSettings); + } + + private static boolean exists(String instanceId) { + try { + adminClient.getInstance( + com.google.bigtable.admin.v2.GetInstanceRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } @AfterClass @@ -60,21 +73,36 @@ public static void afterClass() { } @Before - public void setup() throws IOException { + public void setup() throws Exception { instanceId = generateId(); clusterId = generateId(); instanceAdmin = new InstanceAdminExample(projectId, instanceId, clusterId); - adminClient.createInstance( - CreateInstanceRequest.of(instanceId) - .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) - .setType(Type.PRODUCTION) - .addLabel("example", "instance_admin")); + Instance instanceObj = + Instance.newBuilder() + .setDisplayName(instanceId) + .setType(Instance.Type.PRODUCTION) + .putLabels("example", "instance_admin") + .build(); + Cluster clusterObj = + Cluster.newBuilder() + .setLocation("projects/" + projectId + "/locations/us-central1-f") + .setServeNodes(3) + .setDefaultStorageType(StorageType.SSD) + .build(); + CreateInstanceRequest request = + CreateInstanceRequest.newBuilder() + .setParent("projects/" + projectId) + .setInstanceId(instanceId) + .setInstance(instanceObj) + .putClusters(clusterId, clusterObj) + .build(); + adminClient.createInstanceAsync(request).get(); } @After public void after() { - if (adminClient.exists(instanceId)) { - adminClient.deleteInstance(instanceId); + if (exists(instanceId)) { + adminClient.deleteInstance("projects/" + projectId + "/instances/" + instanceId); } if (instanceAdmin != null) { instanceAdmin.close(); @@ -89,11 +117,11 @@ public void testCreateAndDeleteInstance() throws IOException { InstanceAdminExample testInstanceAdmin = new InstanceAdminExample(projectId, testInstance, testCluster); testInstanceAdmin.createProdInstance(false); - assertTrue(adminClient.exists(testInstance)); + assertTrue(exists(testInstance)); // Deletes an instance. testInstanceAdmin.deleteInstance(); - assertFalse(adminClient.exists(testInstance)); + assertFalse(exists(testInstance)); } @Test @@ -107,13 +135,15 @@ public void testGetInstance() { public void testAddAndDeleteCluster() { // Adds a cluster. instanceAdmin.addCluster(); - com.google.cloud.bigtable.admin.v2.models.Cluster cluster = - adminClient.getCluster(instanceId, CLUSTER); + Cluster cluster = + adminClient.getCluster( + "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER); assertNotNull(cluster); // Deletes a cluster. instanceAdmin.deleteCluster(); - adminClient.getCluster(instanceId, CLUSTER); + adminClient.getCluster( + "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER); } // TODO: add test for instanceAdmin.listInstances() @@ -131,14 +161,18 @@ private static String generateId() { private static void garbageCollect() { Pattern timestampPattern = Pattern.compile(ID_PREFIX + "-([0-9a-f]+)"); System.out.println(); - for (com.google.cloud.bigtable.admin.v2.models.Instance instance : - adminClient.listInstances()) { - Matcher matcher = timestampPattern.matcher(instance.getId()); + com.google.bigtable.admin.v2.ListInstancesRequest request = + com.google.bigtable.admin.v2.ListInstancesRequest.newBuilder() + .setParent("projects/" + projectId) + .build(); + for (Instance instance : adminClient.listInstances(request).getInstancesList()) { + String id = instance.getName().substring(instance.getName().lastIndexOf("/") + 1); + Matcher matcher = timestampPattern.matcher(id); if (!matcher.matches()) { continue; } - System.out.println("Garbage collecting orphaned table: " + instance); - adminClient.deleteInstance(instance.getId()); + System.out.println("Garbage collecting orphaned table: " + instance.getName()); + adminClient.deleteInstance(instance.getName()); } } } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java index d4fd4de3049f..5a967858d3a3 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java @@ -20,17 +20,14 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.ColumnFamily; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.admin.v2.models.GCRules.DurationRule; import com.google.cloud.bigtable.admin.v2.models.GCRules.GCRule; import com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule; import com.google.cloud.bigtable.admin.v2.models.GCRules.UnionRule; import com.google.cloud.bigtable.admin.v2.models.GCRules.VersionRule; import java.io.IOException; -import java.util.List; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -44,19 +41,28 @@ public class TableAdminExampleTest extends BigtableBaseTest { private static final String TABLE_PREFIX = "table"; - private static BigtableTableAdminClient adminClient; + private static BigtableTableAdminClientV2 adminClient; private String tableId; private TableAdminExample tableAdmin; @BeforeClass public static void beforeClass() throws IOException { initializeVariables(); - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setInstanceId(instanceId) - .setProjectId(projectId) - .build(); - adminClient = BigtableTableAdminClient.create(adminSettings); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private static boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } @AfterClass @@ -69,13 +75,24 @@ public static void afterClass() { public void setup() throws IOException { tableId = generateResourceId(TABLE_PREFIX); tableAdmin = new TableAdminExample(projectId, instanceId, tableId); - adminClient.createTable(CreateTableRequest.of(tableId).addFamily("cf")); + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + "cf", com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + adminClient.createTable(request); } @After public void after() { - if (adminClient.exists(tableId)) { - adminClient.deleteTable(tableId); + if (exists(tableId)) { + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); } if (tableAdmin != null) { tableAdmin.close(); @@ -88,11 +105,11 @@ public void testCreateAndDeleteTable() throws IOException { String testTable = generateResourceId(TABLE_PREFIX); TableAdminExample testTableAdmin = new TableAdminExample(projectId, instanceId, testTable); testTableAdmin.createTable(); - assertTrue(adminClient.exists(testTable)); + assertTrue(exists(testTable)); // Deletes a table. testTableAdmin.deleteTable(); - assertFalse(adminClient.exists(testTable)); + assertFalse(exists(testTable)); } @Test @@ -121,9 +138,12 @@ public void testCreateMaxVersionsRuleAndDeleteColumnFamily() { // Deletes cf2. tableAdmin.deleteColumnFamily(); boolean found = true; - List columnFamilies = adminClient.getTable(tableId).getColumnFamilies(); - for (ColumnFamily columnFamily : columnFamilies) { - if (columnFamily.equals("cf2")) { + com.google.bigtable.admin.v2.GetTableRequest request = + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build(); + for (String familyName : adminClient.getTable(request).getColumnFamiliesMap().keySet()) { + if (familyName.equals("cf2")) { found = false; break; } @@ -178,9 +198,13 @@ public void testRunDoesNotFail() { private boolean ruleCheck(GCRule condition) { boolean found = false; - List columnFamilies = adminClient.getTable(tableId).getColumnFamilies(); - for (ColumnFamily columnFamily : columnFamilies) { - if (columnFamily.getGCRule().equals(condition)) { + com.google.bigtable.admin.v2.GetTableRequest request = + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build(); + for (com.google.bigtable.admin.v2.ColumnFamily columnFamily : + adminClient.getTable(request).getColumnFamiliesMap().values()) { + if (columnFamily.getGcRule().equals(condition.toProto())) { found = true; break; } @@ -190,7 +214,12 @@ private boolean ruleCheck(GCRule condition) { private static void garbageCollect() { Pattern timestampPattern = Pattern.compile(TABLE_PREFIX + "-([0-9a-f]+)-([0-9a-f]+)"); - for (String tableId : adminClient.listTables()) { + com.google.bigtable.admin.v2.ListTablesRequest request = + com.google.bigtable.admin.v2.ListTablesRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .build(); + for (com.google.bigtable.admin.v2.Table table : adminClient.listTables(request).iterateAll()) { + String tableId = table.getName().substring(table.getName().lastIndexOf("/") + 1); Matcher matcher = timestampPattern.matcher(tableId); if (!matcher.matches()) { continue; @@ -201,7 +230,7 @@ private static void garbageCollect() { continue; } System.out.println("\nGarbage collecting orphaned table: " + tableId); - adminClient.deleteTable(tableId); + adminClient.deleteTable(table.getName()); } } } From 678aae4a0238c3e38cc9cdaea72905da392b40c3 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 13:47:20 -0400 Subject: [PATCH 2/7] samples(bigtable): migrate secondary admin samples to V2 clients --- .../bigtable/AuthorizedViewExample.java | 203 +++++++++++++----- .../example/bigtable/SchemaBundleExample.java | 174 ++++++++++----- .../deletes/DeleteColumnFamilyExample.java | 22 +- .../bigtable/deletes/DeleteTableExample.java | 12 +- .../bigtable/deletes/DropRowRangeExample.java | 16 +- .../bigtable/AuthorizedViewExampleTest.java | 130 ++++++++--- .../bigtable/MobileTimeSeriesBaseTest.java | 76 +++++-- .../com/example/bigtable/QuickstartTest.java | 35 ++- .../bigtable/SchemaBundleExampleTest.java | 98 +++++++-- .../example/bigtable/deletes/DeletesTest.java | 45 ++-- 10 files changed, 597 insertions(+), 214 deletions(-) diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java index 8f3047442bd6..dbdf478802f7 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java @@ -21,15 +21,8 @@ import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.PermissionDeniedException; import com.google.api.gax.rpc.ServerStream; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.AuthorizedView; -import com.google.cloud.bigtable.admin.v2.models.CreateAuthorizedViewRequest; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; -import com.google.cloud.bigtable.admin.v2.models.FamilySubsets; -import com.google.cloud.bigtable.admin.v2.models.SubsetView; -import com.google.cloud.bigtable.admin.v2.models.Table; -import com.google.cloud.bigtable.admin.v2.models.UpdateAuthorizedViewRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.cloud.bigtable.data.v2.models.AuthorizedViewId; @@ -50,9 +43,11 @@ public class AuthorizedViewExample { private static final String COLUMN_QUALIFIER_GREETING = "greeting"; private static final String COLUMN_QUALIFIER_NAME = "name"; private static final String ROW_KEY_PREFIX = "rowKey"; + private final String projectId; + private final String instanceId; private final String tableId; private final String authorizedViewId; - private final BigtableTableAdminClient adminClient; + private final BigtableTableAdminClientV2 adminClient; private final BigtableDataClient dataClient; public static void main(String[] args) throws IOException { @@ -72,6 +67,8 @@ public static void main(String[] args) throws IOException { public AuthorizedViewExample( String projectId, String instanceId, String tableId, String authorizedViewId) throws IOException { + this.projectId = projectId; + this.instanceId = instanceId; this.tableId = tableId; this.authorizedViewId = authorizedViewId; @@ -83,14 +80,23 @@ public AuthorizedViewExample( dataClient = BigtableDataClient.create(settings); // Creates the settings to configure a bigtable table admin client. - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); // Creates a bigtable table admin client. - adminClient = BigtableTableAdminClient.create(adminSettings); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } public void close() { @@ -114,12 +120,21 @@ public void run() { public void createTable() { // Checks if table exists, creates table if it does not exist. - if (!adminClient.exists(tableId)) { + if (!exists(tableId)) { System.out.println("Table does not exist, creating table: " + tableId); - CreateTableRequest createTableRequest = - CreateTableRequest.of(tableId).addFamily(COLUMN_FAMILY); - Table table = adminClient.createTable(createTableRequest); - System.out.printf("Table: %s created successfully%n", table.getId()); + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + com.google.bigtable.admin.v2.Table table = adminClient.createTable(request); + System.out.printf("Table: %s created successfully%n", table.getName()); } } @@ -127,7 +142,8 @@ public void deleteTable() { // Deletes the entire table. System.out.println("\nDelete table: " + tableId); try { - adminClient.deleteTable(tableId); + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); System.out.printf("Table: %s deleted successfully%n", tableId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent table: " + e.getMessage()); @@ -140,24 +156,45 @@ public void deleteTable() { public void createAuthorizedView() { // Checks if the authorized view exists, creates it if it does not exist. try { - adminClient.getAuthorizedView(tableId, authorizedViewId); + adminClient.getAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + authorizedViewId); } catch (NotFoundException exception) { System.out.printf("%nCreating authorized view %s in table %s%n", authorizedViewId, tableId); // [START bigtable_create_authorized_view] try { - CreateAuthorizedViewRequest request = - CreateAuthorizedViewRequest.of(tableId, authorizedViewId) - .setAuthorizedViewType( - SubsetView.create() - .addRowPrefix("") - .setFamilySubsets( - COLUMN_FAMILY, - FamilySubsets.create().addQualifierPrefix(COLUMN_QUALIFIER_NAME))); - AuthorizedView authorizedView = adminClient.createAuthorizedView(request); - System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getId()); - } catch (NotFoundException e) { - System.err.println( - "Failed to create an authorized view from a non-existent table: " + e.getMessage()); + com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = + com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder() + .addRowPrefixes(com.google.protobuf.ByteString.EMPTY) + .putFamilySubsets( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder() + .addQualifierPrefixes( + com.google.protobuf.ByteString.copyFromUtf8(COLUMN_QUALIFIER_NAME)) + .build()) + .build(); + com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj = + com.google.bigtable.admin.v2.AuthorizedView.newBuilder() + .setSubsetView(subsetView) + .build(); + com.google.bigtable.admin.v2.CreateAuthorizedViewRequest request = + com.google.bigtable.admin.v2.CreateAuthorizedViewRequest.newBuilder() + .setParent( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setAuthorizedViewId(authorizedViewId) + .setAuthorizedView(authorizedViewObj) + .build(); + com.google.bigtable.admin.v2.AuthorizedView authorizedView = + adminClient.createAuthorizedViewAsync(request).get(); + System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getName()); + } catch (Exception e) { + System.err.println("Failed to create an authorized view: " + e.getMessage()); } // [END bigtable_create_authorized_view] } @@ -169,40 +206,73 @@ public void updateAuthorizedView() { // [START bigtable_update_authorized_view] try { // Update to an authorized view permitting everything. - UpdateAuthorizedViewRequest request = - UpdateAuthorizedViewRequest.of(tableId, authorizedViewId) - .setAuthorizedViewType( - SubsetView.create() - .addRowPrefix("") - .setFamilySubsets( - COLUMN_FAMILY, FamilySubsets.create().addQualifierPrefix(""))); - AuthorizedView authorizedView = adminClient.updateAuthorizedView(request); - System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getId()); - } catch (NotFoundException e) { - System.err.println("Failed to modify a non-existent authorized view: " + e.getMessage()); + com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = + com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder() + .addRowPrefixes(com.google.protobuf.ByteString.EMPTY) + .putFamilySubsets( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder() + .addQualifierPrefixes(com.google.protobuf.ByteString.EMPTY) + .build()) + .build(); + com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj = + com.google.bigtable.admin.v2.AuthorizedView.newBuilder() + .setSubsetView(subsetView) + .setName( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + authorizedViewId) + .build(); + com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest request = + com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest.newBuilder() + .setAuthorizedView(authorizedViewObj) + .setUpdateMask( + com.google.protobuf.FieldMask.newBuilder().addPaths("subset_view").build()) + .build(); + com.google.bigtable.admin.v2.AuthorizedView authorizedView = + adminClient.updateAuthorizedViewAsync(request).get(); + System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getName()); + } catch (Exception e) { + System.err.println("Failed to modify authorized view: " + e.getMessage()); } // [END bigtable_update_authorized_view] } /** Demonstrates how to get an authorized view's metadata. */ - public AuthorizedView getAuthorizedView() { + public com.google.bigtable.admin.v2.AuthorizedView getAuthorizedView() { System.out.printf("%nGetting authorized view %s in table %s%n", authorizedViewId, tableId); // [START bigtable_get_authorized_view] - AuthorizedView authorizedView = null; + com.google.bigtable.admin.v2.AuthorizedView authorizedView = null; try { - authorizedView = adminClient.getAuthorizedView(tableId, authorizedViewId); - SubsetView subsetView = (SubsetView) authorizedView.getAuthorizedViewType(); + authorizedView = + adminClient.getAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + authorizedViewId); + com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = + authorizedView.getSubsetView(); - for (ByteString rowPrefix : subsetView.getRowPrefixes()) { + for (ByteString rowPrefix : subsetView.getRowPrefixesList()) { System.out.printf("Row Prefix: %s%n", rowPrefix.toStringUtf8()); } - for (Map.Entry entry : subsetView.getFamilySubsets().entrySet()) { - for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixes()) { + for (Map.Entry entry : + subsetView.getFamilySubsetsMap().entrySet()) { + for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixesList()) { System.out.printf( "Column Family: %s, Qualifier Prefix: %s%n", entry.getKey(), qualifierPrefix.toStringUtf8()); } - for (ByteString qualifier : entry.getValue().getQualifiers()) { + for (ByteString qualifier : entry.getValue().getQualifiersList()) { System.out.printf( "Column Family: %s, Qualifier: %s%n", entry.getKey(), qualifier.toStringUtf8()); } @@ -221,9 +291,16 @@ public List listAllAuthorizedViews() { // [START bigtable_list_authorized_views] List authorizedViewIds = new ArrayList<>(); try { - authorizedViewIds = adminClient.listAuthorizedViews(tableId); - for (String authorizedViewId : authorizedViewIds) { - System.out.println(authorizedViewId); + com.google.bigtable.admin.v2.ListAuthorizedViewsRequest request = + com.google.bigtable.admin.v2.ListAuthorizedViewsRequest.newBuilder() + .setParent( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build(); + for (com.google.bigtable.admin.v2.AuthorizedView view : + adminClient.listAuthorizedViews(request).iterateAll()) { + String id = view.getName().substring(view.getName().lastIndexOf("/") + 1); + System.out.println(id); + authorizedViewIds.add(id); } } catch (NotFoundException e) { System.err.println( @@ -238,7 +315,15 @@ public void deleteAuthorizedView() { System.out.printf("%nDeleting authorized view %s in table %s%n", authorizedViewId, tableId); // [START bigtable_delete_authorized_view] try { - adminClient.deleteAuthorizedView(tableId, authorizedViewId); + adminClient.deleteAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + authorizedViewId); System.out.printf("AuthorizedView: %s deleted successfully%n", authorizedViewId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent authorized view: " + e.getMessage()); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java index 7ac0af3fcb1c..2913244e97ba 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java @@ -17,13 +17,8 @@ package com.example.bigtable; import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.CreateSchemaBundleRequest; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; -import com.google.cloud.bigtable.admin.v2.models.SchemaBundle; -import com.google.cloud.bigtable.admin.v2.models.Table; -import com.google.cloud.bigtable.admin.v2.models.UpdateSchemaBundleRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.protobuf.ByteString; import com.google.protobuf.DescriptorProtos; import com.google.protobuf.InvalidProtocolBufferException; @@ -52,9 +47,11 @@ public class SchemaBundleExample { private static final String COLUMN_FAMILY = "cf"; private static final String PROTO_FILE_PATH = "com/example/bigtable/descriptors.pb"; + private final String projectId; + private final String instanceId; private final String tableId; private final String schemaBundleId; - private final BigtableTableAdminClient adminClient; + private final BigtableTableAdminClientV2 adminClient; public static void main(String[] args) throws IOException { if (args.length != 2) { @@ -72,18 +69,29 @@ public static void main(String[] args) throws IOException { public SchemaBundleExample( String projectId, String instanceId, String tableId, String schemaBundleId) throws IOException { + this.projectId = projectId; + this.instanceId = instanceId; this.tableId = tableId; this.schemaBundleId = schemaBundleId; // Creates the settings to configure a bigtable table admin client. - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); // Creates a bigtable table admin client. - adminClient = BigtableTableAdminClient.create(adminSettings); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } public void close() { @@ -103,12 +111,21 @@ public void run() { public void createTable() { // Checks if table exists, creates table if it does not exist. - if (!adminClient.exists(tableId)) { + if (!exists(tableId)) { System.out.println("Table does not exist, creating table: " + tableId); - CreateTableRequest createTableRequest = - CreateTableRequest.of(tableId).addFamily(COLUMN_FAMILY); - Table table = adminClient.createTable(createTableRequest); - System.out.printf("Table: %s created successfully%n", table.getId()); + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + com.google.bigtable.admin.v2.Table table = adminClient.createTable(request); + System.out.printf("Table: %s created successfully%n", table.getName()); } } @@ -116,7 +133,8 @@ public void deleteTable() { // Deletes the entire table. System.out.println("\nDelete table: " + tableId); try { - adminClient.deleteTable(tableId); + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); System.out.printf("Table: %s deleted successfully%n", tableId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent table: " + e.getMessage()); @@ -127,22 +145,39 @@ public void deleteTable() { public void createSchemaBundle() { // Checks if the schema bundle exists, creates it if it does not exist. try { - adminClient.getSchemaBundle(tableId, schemaBundleId); + adminClient.getSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId); } catch (NotFoundException exception) { System.out.printf("%nCreating schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_create_schema_bundle] try { InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH); - CreateSchemaBundleRequest request = - CreateSchemaBundleRequest.of(tableId, schemaBundleId) - .setProtoSchema(ByteString.readFrom(in)); - SchemaBundle schemaBundle = adminClient.createSchemaBundle(request); - System.out.printf("Schema bundle: %s created successfully%n", schemaBundle.getId()); - } catch (NotFoundException e) { - System.err.println( - "Failed to create a schema bundle from a non-existent table: " + e.getMessage()); - } catch (IOException e) { - throw new RuntimeException(e); + com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = + com.google.bigtable.admin.v2.SchemaBundle.newBuilder() + .setProtoSchema( + com.google.bigtable.admin.v2.ProtoSchema.newBuilder() + .setProtoDescriptors(ByteString.readFrom(in)) + .build()) + .build(); + com.google.bigtable.admin.v2.CreateSchemaBundleRequest request = + com.google.bigtable.admin.v2.CreateSchemaBundleRequest.newBuilder() + .setParent( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setSchemaBundleId(schemaBundleId) + .setSchemaBundle(schemaBundleObj) + .build(); + com.google.bigtable.admin.v2.SchemaBundle schemaBundle = + adminClient.createSchemaBundleAsync(request).get(); + System.out.printf("Schema bundle: %s created successfully%n", schemaBundle.getName()); + } catch (Exception e) { + System.err.println("Failed to create a schema bundle: " + e.getMessage()); } // [END bigtable_create_schema_bundle] } @@ -154,29 +189,57 @@ public void updateSchemaBundle() { // [START bigtable_update_schema_bundle] try { InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH); - UpdateSchemaBundleRequest request = - UpdateSchemaBundleRequest.of(tableId, schemaBundleId) - .setProtoSchema(ByteString.readFrom(in)); - SchemaBundle schemaBundle = adminClient.updateSchemaBundle(request); - System.out.printf("Schema bundle: %s updated successfully%n", schemaBundle.getId()); - } catch (NotFoundException e) { - System.err.println("Failed to modify a non-existent schema bundle: " + e.getMessage()); - } catch (IOException e) { - throw new RuntimeException(e); + com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = + com.google.bigtable.admin.v2.SchemaBundle.newBuilder() + .setName( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId) + .setProtoSchema( + com.google.bigtable.admin.v2.ProtoSchema.newBuilder() + .setProtoDescriptors(ByteString.readFrom(in)) + .build()) + .build(); + com.google.bigtable.admin.v2.UpdateSchemaBundleRequest request = + com.google.bigtable.admin.v2.UpdateSchemaBundleRequest.newBuilder() + .setSchemaBundle(schemaBundleObj) + .setUpdateMask( + com.google.protobuf.FieldMask.newBuilder().addPaths("proto_schema").build()) + .build(); + com.google.bigtable.admin.v2.SchemaBundle schemaBundle = + adminClient.updateSchemaBundleAsync(request).get(); + System.out.printf("Schema bundle: %s updated successfully%n", schemaBundle.getName()); + } catch (Exception e) { + System.err.println("Failed to modify schema bundle: " + e.getMessage()); } // [END bigtable_update_schema_bundle] } /** Demonstrates how to get a schema bundle's definition. */ - public SchemaBundle getSchemaBundle() { + public com.google.bigtable.admin.v2.SchemaBundle getSchemaBundle() { System.out.printf("%nGetting schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_get_schema_bundle] - SchemaBundle schemaBundle = null; + com.google.bigtable.admin.v2.SchemaBundle schemaBundle = null; try { - schemaBundle = adminClient.getSchemaBundle(tableId, schemaBundleId); + schemaBundle = + adminClient.getSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId); // Deserialize and print the FileDescriptorSet DescriptorProtos.FileDescriptorSet fileDescriptorSet = - DescriptorProtos.FileDescriptorSet.parseFrom(schemaBundle.getProtoSchema()); + DescriptorProtos.FileDescriptorSet.parseFrom( + schemaBundle.getProtoSchema().getProtoDescriptors()); System.out.println("--------- Deserialized FileDescriptorSet ---------"); for (DescriptorProtos.FileDescriptorProto fileDescriptorProto : @@ -205,9 +268,16 @@ public List listAllSchemaBundles() { // [START bigtable_list_schema_bundles] List schemaBundleIds = new ArrayList<>(); try { - schemaBundleIds = adminClient.listSchemaBundles(tableId); - for (String schemaBundleId : schemaBundleIds) { - System.out.println(schemaBundleId); + com.google.bigtable.admin.v2.ListSchemaBundlesRequest request = + com.google.bigtable.admin.v2.ListSchemaBundlesRequest.newBuilder() + .setParent( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build(); + for (com.google.bigtable.admin.v2.SchemaBundle bundle : + adminClient.listSchemaBundles(request).iterateAll()) { + String id = bundle.getName().substring(bundle.getName().lastIndexOf("/") + 1); + System.out.println(id); + schemaBundleIds.add(id); } } catch (NotFoundException e) { System.err.println( @@ -222,7 +292,15 @@ public void deleteSchemaBundle() { System.out.printf("%nDeleting schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_delete_schema_bundle] try { - adminClient.deleteSchemaBundle(tableId, schemaBundleId); + adminClient.deleteSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId); System.out.printf("SchemaBundle: %s deleted successfully%n", schemaBundleId); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent schema bundle: " + e.getMessage()); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java index e3648fb0a13a..8b99600fb8ed 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java @@ -17,18 +17,26 @@ package com.example.bigtable.deletes; // [START bigtable_delete_column_family] -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.models.ModifyColumnFamiliesRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; public class DeleteColumnFamilyExample { public void deleteColumnFamily( String projectId, String instanceId, String tableId, String columnFamily) throws IOException { - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - ModifyColumnFamiliesRequest modifyColumnFamiliesRequest = - ModifyColumnFamiliesRequest.of(tableId).dropFamily(columnFamily); - tableAdminClient.modifyFamilies(modifyColumnFamiliesRequest); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest request = + com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .addModifications( + com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.Modification.newBuilder() + .setId(columnFamily) + .setDrop(true)) + .build(); + tableAdminClient.modifyColumnFamilies(request); } } } diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteTableExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteTableExample.java index bdded5fbefe8..e54aa5f3a925 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteTableExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteTableExample.java @@ -17,14 +17,18 @@ package com.example.bigtable.deletes; // [START bigtable_delete_table] -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; public class DeleteTableExample { public void deleteTable(String projectId, String instanceId, String tableId) throws IOException { - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - tableAdminClient.deleteTable(tableId); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + tableAdminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); } } } diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java index 0575fb38ec99..70699077b091 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java @@ -17,14 +17,22 @@ package com.example.bigtable.deletes; // [START bigtable_drop_row_range] -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; public class DropRowRangeExample { public void dropRowRange(String projectId, String instanceId, String tableId) throws IOException { - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - tableAdminClient.dropRowRange(tableId, "phone#4c410523"); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + com.google.bigtable.admin.v2.DropRowRangeRequest request = + com.google.bigtable.admin.v2.DropRowRangeRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setRowKeyPrefix(com.google.protobuf.ByteString.copyFromUtf8("phone#4c410523")) + .build(); + tableAdminClient.dropRowRange(request); } } } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java index 5990d66107af..896a3cb617ea 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java @@ -23,13 +23,8 @@ import static org.junit.Assert.assertThrows; import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.AuthorizedView; -import com.google.cloud.bigtable.admin.v2.models.CreateAuthorizedViewRequest; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; -import com.google.cloud.bigtable.admin.v2.models.FamilySubsets; -import com.google.cloud.bigtable.admin.v2.models.SubsetView; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.cloud.bigtable.data.v2.models.AuthorizedViewId; @@ -56,7 +51,7 @@ public class AuthorizedViewExampleTest extends BigtableBaseTest { private String tableId; private String authorizedViewId; private static BigtableDataClient dataClient; - private static BigtableTableAdminClient adminClient; + private static BigtableTableAdminClientV2 adminClient; private AuthorizedViewExample authorizedViewExample; @BeforeClass @@ -65,12 +60,21 @@ public static void beforeClass() throws IOException { BigtableDataSettings settings = BigtableDataSettings.newBuilder().setProjectId(projectId).setInstanceId(instanceId).build(); dataClient = BigtableDataClient.create(settings); - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); - adminClient = BigtableTableAdminClient.create(adminSettings); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private static boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } @AfterClass @@ -81,26 +85,50 @@ public static void afterClass() { } @Before - public void setup() throws IOException { + public void setup() throws Exception { tableId = generateResourceId(TABLE_PREFIX); authorizedViewId = generateResourceId(AUTHORIZED_VIEW_PREFIX); authorizedViewExample = new AuthorizedViewExample(projectId, instanceId, tableId, authorizedViewId); - adminClient.createTable(CreateTableRequest.of(tableId).addFamily(COLUMN_FAMILY)); - adminClient.createAuthorizedView( - CreateAuthorizedViewRequest.of(tableId, authorizedViewId) - .setAuthorizedViewType( - SubsetView.create() - .addRowPrefix("") - .setFamilySubsets( - COLUMN_FAMILY, FamilySubsets.create().addQualifierPrefix("")))); + com.google.bigtable.admin.v2.CreateTableRequest createTableRequest = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + adminClient.createTable(createTableRequest); + + com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = + com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder() + .addRowPrefixes(com.google.protobuf.ByteString.EMPTY) + .putFamilySubsets( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder() + .addQualifierPrefixes(com.google.protobuf.ByteString.EMPTY) + .build()) + .build(); + com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj = + com.google.bigtable.admin.v2.AuthorizedView.newBuilder().setSubsetView(subsetView).build(); + com.google.bigtable.admin.v2.CreateAuthorizedViewRequest createAuthorizedViewRequest = + com.google.bigtable.admin.v2.CreateAuthorizedViewRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setAuthorizedViewId(authorizedViewId) + .setAuthorizedView(authorizedViewObj) + .build(); + adminClient.createAuthorizedViewAsync(createAuthorizedViewRequest).get(); } @After public void after() { - if (adminClient.exists(tableId)) { + if (exists(tableId)) { // Deleting a table also deletes all the authorized views inside it. - adminClient.deleteTable(tableId); + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); } authorizedViewExample.close(); } @@ -117,29 +145,58 @@ public void testAuthorizedViewCreateUpdateDelete() throws IOException { AuthorizedViewExample testAuthorizedViewExample = new AuthorizedViewExample(projectId, instanceId, tableId, testAuthorizedViewId); testAuthorizedViewExample.createAuthorizedView(); - AuthorizedView authorizedView = adminClient.getAuthorizedView(tableId, testAuthorizedViewId); - assertEquals(authorizedView.getId(), testAuthorizedViewId); + com.google.bigtable.admin.v2.AuthorizedView authorizedView = + adminClient.getAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + testAuthorizedViewId); + String id = authorizedView.getName().substring(authorizedView.getName().lastIndexOf("/") + 1); + assertEquals(id, testAuthorizedViewId); // Updates the authorized view. testAuthorizedViewExample.updateAuthorizedView(); - AuthorizedView updatedAuthorizedView = - adminClient.getAuthorizedView(tableId, testAuthorizedViewId); + com.google.bigtable.admin.v2.AuthorizedView updatedAuthorizedView = + adminClient.getAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + testAuthorizedViewId); assertNotEquals(authorizedView, updatedAuthorizedView); // Deletes the authorized view. testAuthorizedViewExample.deleteAuthorizedView(); assertThrows( NotFoundException.class, - () -> adminClient.getAuthorizedView(tableId, testAuthorizedViewId)); + () -> + adminClient.getAuthorizedView( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/authorizedViews/" + + testAuthorizedViewId)); testAuthorizedViewExample.close(); } @Test public void testGetAuthorizedView() { - AuthorizedView authorizedView = authorizedViewExample.getAuthorizedView(); + com.google.bigtable.admin.v2.AuthorizedView authorizedView = + authorizedViewExample.getAuthorizedView(); assertNotNull(authorizedView); - assertEquals(authorizedView.getId(), authorizedViewId); + String id = authorizedView.getName().substring(authorizedView.getName().lastIndexOf("/") + 1); + assertEquals(id, authorizedViewId); } @Test @@ -193,7 +250,12 @@ public void testReadsFromAuthorizedView() { private static void garbageCollect() { Pattern timestampPattern = Pattern.compile(TABLE_PREFIX + "-([0-9a-f]+)-([0-9a-f]+)"); - for (String tableId : adminClient.listTables()) { + com.google.bigtable.admin.v2.ListTablesRequest request = + com.google.bigtable.admin.v2.ListTablesRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .build(); + for (com.google.bigtable.admin.v2.Table table : adminClient.listTables(request).iterateAll()) { + String tableId = table.getName().substring(table.getName().lastIndexOf("/") + 1); Matcher matcher = timestampPattern.matcher(tableId); if (!matcher.matches()) { continue; @@ -204,7 +266,7 @@ private static void garbageCollect() { continue; } System.out.println("\nGarbage collecting orphaned table: " + tableId); - adminClient.deleteTable(tableId); + adminClient.deleteTable(table.getName()); } } } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java index f1a9ae5c01bf..21ebefd2668e 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java @@ -16,9 +16,8 @@ package com.example.bigtable; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; -import com.google.cloud.bigtable.admin.v2.models.Type; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.models.BulkMutation; import com.google.cloud.bigtable.data.v2.models.Mutation; @@ -40,14 +39,48 @@ public class MobileTimeSeriesBaseTest extends BigtableBaseTest { CURRENT_TIME.minus(1, ChronoUnit.HOURS).toEpochMilli() * 1000; public static void createTable() throws IOException { - try (BigtableTableAdminClient adminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - CreateTableRequest createTableRequest = - CreateTableRequest.of(TABLE_ID) - .addFamily(COLUMN_FAMILY_NAME_STATS) - .addFamily(COLUMN_FAMILY_NAME_PLAN) - .addFamily(COLUMN_FAMILY_NAME_VIEW_COUNT, Type.int64Sum()); - adminClient.createTable(createTableRequest); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 adminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + com.google.bigtable.admin.v2.Type int64Type = + com.google.bigtable.admin.v2.Type.newBuilder() + .setInt64Type( + com.google.bigtable.admin.v2.Type.Int64.newBuilder() + .setEncoding( + com.google.bigtable.admin.v2.Type.Int64.Encoding.newBuilder() + .setBigEndianBytes( + com.google.bigtable.admin.v2.Type.Int64.Encoding.BigEndianBytes + .getDefaultInstance()))) + .build(); + com.google.bigtable.admin.v2.Type int64SumType = + com.google.bigtable.admin.v2.Type.newBuilder() + .setAggregateType( + com.google.bigtable.admin.v2.Type.Aggregate.newBuilder() + .setInputType(int64Type) + .setSum(com.google.bigtable.admin.v2.Type.Aggregate.Sum.getDefaultInstance())) + .build(); + + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(TABLE_ID) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + COLUMN_FAMILY_NAME_STATS, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .putColumnFamilies( + COLUMN_FAMILY_NAME_PLAN, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .putColumnFamilies( + COLUMN_FAMILY_NAME_VIEW_COUNT, + com.google.bigtable.admin.v2.ColumnFamily.newBuilder() + .setValueType(int64SumType) + .build()) + .build()) + .build(); + adminClient.createTable(request); } catch (IOException e) { System.out.println("Error during createTable: \n" + e.toString()); throw (e); @@ -172,10 +205,23 @@ public static void writePlanData() throws IOException { } public static void cleanupTable() throws IOException { - try (BigtableTableAdminClient adminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - if (adminClient.exists(TABLE_ID)) { - adminClient.deleteTable(TABLE_ID); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 adminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + boolean exists = true; + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .build()); + } catch (com.google.api.gax.rpc.NotFoundException e) { + exists = false; + } + if (exists) { + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID); } } catch (Exception e) { System.out.println("Error during afterClass: \n" + e.toString()); diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java index b8271de50e89..519358d5d84a 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java @@ -18,8 +18,8 @@ import static org.junit.Assert.assertThat; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.models.RowMutation; @@ -39,11 +39,34 @@ public static void beforeClass() throws IOException { initializeVariables(); // set up required table and row data if not present - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { String columnFamily = "cf1"; - if (!tableAdminClient.exists(TABLE_ID)) { - tableAdminClient.createTable(CreateTableRequest.of(TABLE_ID).addFamily(columnFamily)); + boolean exists = true; + try { + tableAdminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .build()); + } catch (com.google.api.gax.rpc.NotFoundException e) { + exists = false; + } + if (!exists) { + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(TABLE_ID) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + columnFamily, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + tableAdminClient.createTable(request); } try (BigtableDataClient dataClient = BigtableDataClient.create(projectId, instanceId)) { String rowKey = "r1"; diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java index c76d1288eb1b..f16520c64868 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java @@ -22,10 +22,8 @@ import static org.junit.Assert.assertThrows; import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; -import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; -import com.google.cloud.bigtable.admin.v2.models.SchemaBundle; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; @@ -44,18 +42,27 @@ public class SchemaBundleExampleTest extends BigtableBaseTest { private static final String COLUMN_FAMILY = "cf"; private String tableId; private String schemaBundleId; - private static BigtableTableAdminClient adminClient; + private static BigtableTableAdminClientV2 adminClient; private SchemaBundleExample schemaBundleExample; @BeforeClass public static void beforeClass() throws IOException { initializeVariables(); - BigtableTableAdminSettings adminSettings = - BigtableTableAdminSettings.newBuilder() - .setProjectId(projectId) - .setInstanceId(instanceId) - .build(); - adminClient = BigtableTableAdminClient.create(adminSettings); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + adminClient = BigtableTableAdminClientV2.create(adminSettings); + } + + private static boolean exists(String tableId) { + try { + adminClient.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } } @AfterClass @@ -69,13 +76,25 @@ public void setup() throws IOException { tableId = generateResourceId(TABLE_PREFIX); schemaBundleId = generateResourceId(SCHEMA_BUNDLE_PREFIX); schemaBundleExample = new SchemaBundleExample(projectId, instanceId, tableId, schemaBundleId); - adminClient.createTable(CreateTableRequest.of(tableId).addFamily(COLUMN_FAMILY)); + com.google.bigtable.admin.v2.CreateTableRequest request = + com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .setTableId(tableId) + .setTable( + com.google.bigtable.admin.v2.Table.newBuilder() + .putColumnFamilies( + COLUMN_FAMILY, + com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + .build()) + .build(); + adminClient.createTable(request); } @After public void after() { - if (adminClient.exists(tableId)) { - adminClient.deleteTable(tableId); + if (exists(tableId)) { + adminClient.deleteTable( + "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId); } schemaBundleExample.close(); } @@ -89,26 +108,56 @@ public void testRunDoesNotFail() { public void testSchemaBundleCreateUpdateDelete() throws IOException { // Creates a schema bundle. schemaBundleExample.createSchemaBundle(); - SchemaBundle schemaBundle = adminClient.getSchemaBundle(tableId, schemaBundleId); - assertEquals(schemaBundle.getId(), schemaBundleId); + com.google.bigtable.admin.v2.SchemaBundle schemaBundle = + adminClient.getSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId); + String id = schemaBundle.getName().substring(schemaBundle.getName().lastIndexOf("/") + 1); + assertEquals(id, schemaBundleId); // Updates the schema bundle. schemaBundleExample.updateSchemaBundle(); - SchemaBundle updatedSchemaBundle = adminClient.getSchemaBundle(tableId, schemaBundleId); + com.google.bigtable.admin.v2.SchemaBundle updatedSchemaBundle = + adminClient.getSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId); assertNotEquals(schemaBundle, updatedSchemaBundle); // Deletes the schema bundle. schemaBundleExample.deleteSchemaBundle(); assertThrows( - NotFoundException.class, () -> adminClient.getSchemaBundle(tableId, schemaBundleId)); + NotFoundException.class, + () -> + adminClient.getSchemaBundle( + "projects/" + + projectId + + "/instances/" + + instanceId + + "/tables/" + + tableId + + "/schemaBundles/" + + schemaBundleId)); } @Test public void testGetSchemaBundle() { schemaBundleExample.createSchemaBundle(); - SchemaBundle schemaBundle = schemaBundleExample.getSchemaBundle(); + com.google.bigtable.admin.v2.SchemaBundle schemaBundle = schemaBundleExample.getSchemaBundle(); assertNotNull(schemaBundle); - assertEquals(schemaBundle.getId(), schemaBundleId); + String id = schemaBundle.getName().substring(schemaBundle.getName().lastIndexOf("/") + 1); + assertEquals(id, schemaBundleId); } @Test @@ -121,7 +170,12 @@ public void testListSchemaBundles() { private static void garbageCollect() { Pattern timestampPattern = Pattern.compile(TABLE_PREFIX + "-([0-9a-f]+)-([0-9a-f]+)"); - for (String tableId : adminClient.listTables()) { + com.google.bigtable.admin.v2.ListTablesRequest request = + com.google.bigtable.admin.v2.ListTablesRequest.newBuilder() + .setParent("projects/" + projectId + "/instances/" + instanceId) + .build(); + for (com.google.bigtable.admin.v2.Table table : adminClient.listTables(request).iterateAll()) { + String tableId = table.getName().substring(table.getName().lastIndexOf("/") + 1); Matcher matcher = timestampPattern.matcher(tableId); if (!matcher.matches()) { continue; @@ -132,7 +186,7 @@ private static void garbageCollect() { continue; } System.out.println("\nGarbage collecting orphaned table: " + tableId); - adminClient.deleteTable(tableId); + adminClient.deleteTable(table.getName()); } } } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java index 308607c891af..dc7d0fc78ec3 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java @@ -18,14 +18,13 @@ import com.example.bigtable.MobileTimeSeriesBaseTest; import com.google.api.gax.rpc.ServerStream; -import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; -import com.google.cloud.bigtable.admin.v2.models.ColumnFamily; +import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.models.Query; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.models.RowCell; import com.google.cloud.bigtable.data.v2.models.TableId; -import com.google.common.truth.Correspondence; import com.google.common.truth.Truth; import java.io.IOException; import java.util.List; @@ -41,10 +40,20 @@ */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class DeletesTest extends MobileTimeSeriesBaseTest { - private static final Correspondence COLUMN_FAMILY_ID_CORRESPONDENCE = - Correspondence.transforming(ColumnFamily::getId, "ColumnFamily id"); public static BigtableDataClient bigtableDataClient; + private static boolean exists(BigtableTableAdminClientV2 client, String tableId) { + try { + client.getTable( + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .build()); + return true; + } catch (com.google.api.gax.rpc.NotFoundException e) { + return false; + } + } + @BeforeClass public static void beforeClass() throws IOException { initializeVariables(); @@ -166,32 +175,38 @@ public void test6_testDeleteFromColumnFamily() throws IOException { @Test public void test7_testDeleteColumnFamily() throws IOException { - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - Truth.assertThat(tableAdminClient.getTable(TABLE_ID).getColumnFamilies()) - .comparingElementsUsing(COLUMN_FAMILY_ID_CORRESPONDENCE) + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + com.google.bigtable.admin.v2.GetTableRequest request = + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .build(); + Truth.assertThat(tableAdminClient.getTable(request).getColumnFamiliesMap().keySet()) .contains(COLUMN_FAMILY_NAME_STATS); DeleteColumnFamilyExample deleteColumnFamilyExample = new DeleteColumnFamilyExample(); deleteColumnFamilyExample.deleteColumnFamily( projectId, instanceId, TABLE_ID, COLUMN_FAMILY_NAME_STATS); - Truth.assertThat(tableAdminClient.getTable(TABLE_ID).getColumnFamilies()) - .comparingElementsUsing(COLUMN_FAMILY_ID_CORRESPONDENCE) + Truth.assertThat(tableAdminClient.getTable(request).getColumnFamiliesMap().keySet()) .doesNotContain(COLUMN_FAMILY_NAME_STATS); } } @Test public void test8_testDeleteTable() throws IOException { - try (BigtableTableAdminClient tableAdminClient = - BigtableTableAdminClient.create(projectId, instanceId)) { - Truth.assertThat(tableAdminClient.exists(TABLE_ID)).isTrue(); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + try (BigtableTableAdminClientV2 tableAdminClient = + BigtableTableAdminClientV2.create(adminSettings)) { + Truth.assertThat(exists(tableAdminClient, TABLE_ID)).isTrue(); DeleteTableExample deleteTableExample = new DeleteTableExample(); deleteTableExample.deleteTable(projectId, instanceId, TABLE_ID); - Truth.assertThat(tableAdminClient.exists(TABLE_ID)).isFalse(); + Truth.assertThat(exists(tableAdminClient, TABLE_ID)).isFalse(); } } } From 922dd1df17c103b751f0e2412ec4673bf1e87f62 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 14:03:25 -0400 Subject: [PATCH 3/7] chore(bigtable-samples): address gemini-code-assist review feedback --- .../com/example/bigtable/AuthorizedViewExample.java | 1 + .../main/java/com/example/bigtable/HelloWorld.java | 1 + .../com/example/bigtable/SchemaBundleExample.java | 13 +++++++++---- .../com/example/bigtable/TableAdminExample.java | 1 + .../example/bigtable/AuthorizedViewExampleTest.java | 1 + .../example/bigtable/InstanceAdminExampleTest.java | 10 +++++++--- .../example/bigtable/MobileTimeSeriesBaseTest.java | 1 + .../java/com/example/bigtable/QuickstartTest.java | 1 + .../example/bigtable/SchemaBundleExampleTest.java | 1 + .../com/example/bigtable/TableAdminExampleTest.java | 9 ++------- .../com/example/bigtable/deletes/DeletesTest.java | 1 + 11 files changed, 26 insertions(+), 14 deletions(-) diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java index dbdf478802f7..56e11e3529fc 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java @@ -92,6 +92,7 @@ private boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java index 56359330399c..eb8c96928313 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java @@ -125,6 +125,7 @@ public void createTable() { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); exists = true; } catch (NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java index 2913244e97ba..f5272147f258 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java @@ -87,6 +87,7 @@ private boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { @@ -157,8 +158,10 @@ public void createSchemaBundle() { } catch (NotFoundException exception) { System.out.printf("%nCreating schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_create_schema_bundle] - try { - InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH); + try (InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH)) { + if (in == null) { + throw new java.io.FileNotFoundException("Resource not found: " + PROTO_FILE_PATH); + } com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = com.google.bigtable.admin.v2.SchemaBundle.newBuilder() .setProtoSchema( @@ -187,8 +190,10 @@ public void createSchemaBundle() { public void updateSchemaBundle() { System.out.printf("%nUpdating schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_update_schema_bundle] - try { - InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH); + try (InputStream in = getClass().getClassLoader().getResourceAsStream(PROTO_FILE_PATH)) { + if (in == null) { + throw new java.io.FileNotFoundException("Resource not found: " + PROTO_FILE_PATH); + } com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = com.google.bigtable.admin.v2.SchemaBundle.newBuilder() .setName( diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java index eb02fff5f0a7..e2ef19a9219e 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java @@ -121,6 +121,7 @@ public void createTable() { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); exists = true; } catch (NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java index 896a3cb617ea..6b488ac4499e 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/AuthorizedViewExampleTest.java @@ -70,6 +70,7 @@ private static boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java index d5b965317d60..3dfd76be8b70 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/InstanceAdminExampleTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import com.google.api.gax.rpc.NotFoundException; @@ -131,7 +132,7 @@ public void testGetInstance() { assertNotNull(instance); } - @Test(expected = NotFoundException.class) + @Test public void testAddAndDeleteCluster() { // Adds a cluster. instanceAdmin.addCluster(); @@ -142,8 +143,11 @@ public void testAddAndDeleteCluster() { // Deletes a cluster. instanceAdmin.deleteCluster(); - adminClient.getCluster( - "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER); + assertThrows( + NotFoundException.class, + () -> + adminClient.getCluster( + "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER)); } // TODO: add test for instanceAdmin.listInstances() diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java index 21ebefd2668e..385382ae54e2 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/MobileTimeSeriesBaseTest.java @@ -215,6 +215,7 @@ public static void cleanupTable() throws IOException { com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); } catch (com.google.api.gax.rpc.NotFoundException e) { exists = false; diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java index 519358d5d84a..616d9bbba501 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/QuickstartTest.java @@ -50,6 +50,7 @@ public static void beforeClass() throws IOException { com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); } catch (com.google.api.gax.rpc.NotFoundException e) { exists = false; diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java index f16520c64868..ed9dc8647d40 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/SchemaBundleExampleTest.java @@ -58,6 +58,7 @@ private static boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java index 5a967858d3a3..674296c21ec1 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/TableAdminExampleTest.java @@ -58,6 +58,7 @@ private static boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { @@ -137,17 +138,11 @@ public void testCreateMaxVersionsRuleAndDeleteColumnFamily() { // Deletes cf2. tableAdmin.deleteColumnFamily(); - boolean found = true; com.google.bigtable.admin.v2.GetTableRequest request = com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .build(); - for (String familyName : adminClient.getTable(request).getColumnFamiliesMap().keySet()) { - if (familyName.equals("cf2")) { - found = false; - break; - } - } + boolean found = !adminClient.getTable(request).getColumnFamiliesMap().containsKey("cf2"); assertTrue(found); } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java index dc7d0fc78ec3..2cc3dd20acce 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java @@ -47,6 +47,7 @@ private static boolean exists(BigtableTableAdminClientV2 client, String tableId) client.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { From 8889599f264ff1d9599d3130dcbb51b187fbacba Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 15:29:14 -0400 Subject: [PATCH 4/7] chore(bigtable-samples): address gemini review optimizations --- .../com/example/bigtable/HelloWorldTest.java | 1 + .../example/bigtable/deletes/DeletesTest.java | 55 +++++++++---------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java index 0af0384af430..fb436f1da6e9 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/HelloWorldTest.java @@ -62,6 +62,7 @@ private static boolean exists(String tableId) { adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) + .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java index 2cc3dd20acce..6df88bec03a8 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java @@ -41,10 +41,11 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class DeletesTest extends MobileTimeSeriesBaseTest { public static BigtableDataClient bigtableDataClient; + private static BigtableTableAdminClientV2 adminClient; - private static boolean exists(BigtableTableAdminClientV2 client, String tableId) { + private static boolean exists(String tableId) { try { - client.getTable( + adminClient.getTable( com.google.bigtable.admin.v2.GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) @@ -62,11 +63,17 @@ public static void beforeClass() throws IOException { writeStatsData(); writePlanData(); bigtableDataClient = BigtableDataClient.create(projectId, instanceId); + BaseBigtableTableAdminSettings adminSettings = + BaseBigtableTableAdminSettings.newBuilder().build(); + adminClient = BigtableTableAdminClientV2.create(adminSettings); } @AfterClass public static void afterClass() throws IOException { cleanupTable(); + if (adminClient != null) { + adminClient.close(); + } } @Test @@ -176,38 +183,28 @@ public void test6_testDeleteFromColumnFamily() throws IOException { @Test public void test7_testDeleteColumnFamily() throws IOException { - BaseBigtableTableAdminSettings adminSettings = - BaseBigtableTableAdminSettings.newBuilder().build(); - try (BigtableTableAdminClientV2 tableAdminClient = - BigtableTableAdminClientV2.create(adminSettings)) { - com.google.bigtable.admin.v2.GetTableRequest request = - com.google.bigtable.admin.v2.GetTableRequest.newBuilder() - .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) - .build(); - Truth.assertThat(tableAdminClient.getTable(request).getColumnFamiliesMap().keySet()) - .contains(COLUMN_FAMILY_NAME_STATS); - - DeleteColumnFamilyExample deleteColumnFamilyExample = new DeleteColumnFamilyExample(); - deleteColumnFamilyExample.deleteColumnFamily( - projectId, instanceId, TABLE_ID, COLUMN_FAMILY_NAME_STATS); - - Truth.assertThat(tableAdminClient.getTable(request).getColumnFamiliesMap().keySet()) - .doesNotContain(COLUMN_FAMILY_NAME_STATS); - } + com.google.bigtable.admin.v2.GetTableRequest request = + com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + TABLE_ID) + .build(); + Truth.assertThat(adminClient.getTable(request).getColumnFamiliesMap().keySet()) + .contains(COLUMN_FAMILY_NAME_STATS); + + DeleteColumnFamilyExample deleteColumnFamilyExample = new DeleteColumnFamilyExample(); + deleteColumnFamilyExample.deleteColumnFamily( + projectId, instanceId, TABLE_ID, COLUMN_FAMILY_NAME_STATS); + + Truth.assertThat(adminClient.getTable(request).getColumnFamiliesMap().keySet()) + .doesNotContain(COLUMN_FAMILY_NAME_STATS); } @Test public void test8_testDeleteTable() throws IOException { - BaseBigtableTableAdminSettings adminSettings = - BaseBigtableTableAdminSettings.newBuilder().build(); - try (BigtableTableAdminClientV2 tableAdminClient = - BigtableTableAdminClientV2.create(adminSettings)) { - Truth.assertThat(exists(tableAdminClient, TABLE_ID)).isTrue(); + Truth.assertThat(exists(TABLE_ID)).isTrue(); - DeleteTableExample deleteTableExample = new DeleteTableExample(); - deleteTableExample.deleteTable(projectId, instanceId, TABLE_ID); + DeleteTableExample deleteTableExample = new DeleteTableExample(); + deleteTableExample.deleteTable(projectId, instanceId, TABLE_ID); - Truth.assertThat(exists(tableAdminClient, TABLE_ID)).isFalse(); - } + Truth.assertThat(exists(TABLE_ID)).isFalse(); } } From 6b4e77d0b2b31d32245c6378a58341867f3698e6 Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Mon, 8 Jun 2026 19:35:43 +0000 Subject: [PATCH 5/7] chore: generate libraries at Mon Jun 8 19:33:45 UTC 2026 --- java-iam-policy/.repo-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-iam-policy/.repo-metadata.json b/java-iam-policy/.repo-metadata.json index 3408880ba292..0d797eebf786 100644 --- a/java-iam-policy/.repo-metadata.json +++ b/java-iam-policy/.repo-metadata.json @@ -1,6 +1,6 @@ { "api_shortname": "iam-policy", - "name_pretty": "Google Cloud IAM Policy", + "name_pretty": "IAM", "product_documentation": "n/a", "api_description": "n/a", "client_documentation": "https://cloud.google.com/java/docs/reference/proto-google-iam-v1/latest/history", From 96d45f9886c10fa5bb46e636c61f0b1e0f749f6c Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 15:37:02 -0400 Subject: [PATCH 6/7] chore(bigtable-samples): implement exception safe cleanup and strongly typed id parses --- .../bigtable/AuthorizedViewExample.java | 4 +++- .../example/bigtable/SchemaBundleExample.java | 3 ++- .../example/bigtable/deletes/DeletesTest.java | 23 +++++++++++++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java index 56e11e3529fc..8a577558dc6d 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java @@ -299,7 +299,9 @@ public List listAllAuthorizedViews() { .build(); for (com.google.bigtable.admin.v2.AuthorizedView view : adminClient.listAuthorizedViews(request).iterateAll()) { - String id = view.getName().substring(view.getName().lastIndexOf("/") + 1); + String id = + com.google.bigtable.admin.v2.AuthorizedViewName.parse(view.getName()) + .getAuthorizedView(); System.out.println(id); authorizedViewIds.add(id); } diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java index f5272147f258..7868fdc1043c 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java @@ -280,7 +280,8 @@ public List listAllSchemaBundles() { .build(); for (com.google.bigtable.admin.v2.SchemaBundle bundle : adminClient.listSchemaBundles(request).iterateAll()) { - String id = bundle.getName().substring(bundle.getName().lastIndexOf("/") + 1); + String id = + com.google.bigtable.admin.v2.SchemaBundleName.parse(bundle.getName()).getSchemaBundle(); System.out.println(id); schemaBundleIds.add(id); } diff --git a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java index 6df88bec03a8..b19ef506bc0b 100644 --- a/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java +++ b/java-bigtable/samples/snippets/src/test/java/com/example/bigtable/deletes/DeletesTest.java @@ -69,10 +69,25 @@ public static void beforeClass() throws IOException { } @AfterClass - public static void afterClass() throws IOException { - cleanupTable(); - if (adminClient != null) { - adminClient.close(); + public static void afterClass() { + try { + cleanupTable(); + } catch (Exception e) { + System.err.println("Failed to cleanup table: " + e.getMessage()); + } + try { + if (bigtableDataClient != null) { + bigtableDataClient.close(); + } + } catch (Exception e) { + System.err.println("Failed to close bigtableDataClient: " + e.getMessage()); + } + try { + if (adminClient != null) { + adminClient.close(); + } + } catch (Exception e) { + System.err.println("Failed to close adminClient: " + e.getMessage()); } } From 9514cf846d90d293840735f3498f6237e9a55cf9 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Mon, 8 Jun 2026 17:37:44 -0400 Subject: [PATCH 7/7] refactor(bigtable-samples): import V2 classes to shorten fully qualified names --- .../bigtable/AuthorizedViewExample.java | 81 +++++++++---------- .../java/com/example/bigtable/HelloWorld.java | 18 +++-- .../bigtable/InstanceAdminExample.java | 2 +- .../example/bigtable/SchemaBundleExample.java | 70 ++++++++-------- .../example/bigtable/TableAdminExample.java | 5 +- .../deletes/DeleteColumnFamilyExample.java | 7 +- .../bigtable/deletes/DropRowRangeExample.java | 5 +- 7 files changed, 96 insertions(+), 92 deletions(-) diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java index 8a577558dc6d..ce11432fc34a 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/AuthorizedViewExample.java @@ -21,6 +21,15 @@ import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.PermissionDeniedException; import com.google.api.gax.rpc.ServerStream; +import com.google.bigtable.admin.v2.AuthorizedView; +import com.google.bigtable.admin.v2.AuthorizedViewName; +import com.google.bigtable.admin.v2.ColumnFamily; +import com.google.bigtable.admin.v2.CreateAuthorizedViewRequest; +import com.google.bigtable.admin.v2.CreateTableRequest; +import com.google.bigtable.admin.v2.GetTableRequest; +import com.google.bigtable.admin.v2.ListAuthorizedViewsRequest; +import com.google.bigtable.admin.v2.Table; +import com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest; import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; @@ -90,9 +99,9 @@ public AuthorizedViewExample( private boolean exists(String tableId) { try { adminClient.getTable( - com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) - .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) + .setView(Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { @@ -123,18 +132,16 @@ public void createTable() { // Checks if table exists, creates table if it does not exist. if (!exists(tableId)) { System.out.println("Table does not exist, creating table: " + tableId); - com.google.bigtable.admin.v2.CreateTableRequest request = - com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + CreateTableRequest request = + CreateTableRequest.newBuilder() .setParent("projects/" + projectId + "/instances/" + instanceId) .setTableId(tableId) .setTable( - com.google.bigtable.admin.v2.Table.newBuilder() - .putColumnFamilies( - COLUMN_FAMILY, - com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + Table.newBuilder() + .putColumnFamilies(COLUMN_FAMILY, ColumnFamily.getDefaultInstance()) .build()) .build(); - com.google.bigtable.admin.v2.Table table = adminClient.createTable(request); + Table table = adminClient.createTable(request); System.out.printf("Table: %s created successfully%n", table.getName()); } } @@ -170,29 +177,26 @@ public void createAuthorizedView() { System.out.printf("%nCreating authorized view %s in table %s%n", authorizedViewId, tableId); // [START bigtable_create_authorized_view] try { - com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = - com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder() + AuthorizedView.SubsetView subsetView = + AuthorizedView.SubsetView.newBuilder() .addRowPrefixes(com.google.protobuf.ByteString.EMPTY) .putFamilySubsets( COLUMN_FAMILY, - com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder() + AuthorizedView.FamilySubsets.newBuilder() .addQualifierPrefixes( com.google.protobuf.ByteString.copyFromUtf8(COLUMN_QUALIFIER_NAME)) .build()) .build(); - com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj = - com.google.bigtable.admin.v2.AuthorizedView.newBuilder() - .setSubsetView(subsetView) - .build(); - com.google.bigtable.admin.v2.CreateAuthorizedViewRequest request = - com.google.bigtable.admin.v2.CreateAuthorizedViewRequest.newBuilder() + AuthorizedView authorizedViewObj = + AuthorizedView.newBuilder().setSubsetView(subsetView).build(); + CreateAuthorizedViewRequest request = + CreateAuthorizedViewRequest.newBuilder() .setParent( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .setAuthorizedViewId(authorizedViewId) .setAuthorizedView(authorizedViewObj) .build(); - com.google.bigtable.admin.v2.AuthorizedView authorizedView = - adminClient.createAuthorizedViewAsync(request).get(); + AuthorizedView authorizedView = adminClient.createAuthorizedViewAsync(request).get(); System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getName()); } catch (Exception e) { System.err.println("Failed to create an authorized view: " + e.getMessage()); @@ -207,17 +211,17 @@ public void updateAuthorizedView() { // [START bigtable_update_authorized_view] try { // Update to an authorized view permitting everything. - com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = - com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder() + AuthorizedView.SubsetView subsetView = + AuthorizedView.SubsetView.newBuilder() .addRowPrefixes(com.google.protobuf.ByteString.EMPTY) .putFamilySubsets( COLUMN_FAMILY, - com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder() + AuthorizedView.FamilySubsets.newBuilder() .addQualifierPrefixes(com.google.protobuf.ByteString.EMPTY) .build()) .build(); - com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj = - com.google.bigtable.admin.v2.AuthorizedView.newBuilder() + AuthorizedView authorizedViewObj = + AuthorizedView.newBuilder() .setSubsetView(subsetView) .setName( "projects/" @@ -229,14 +233,13 @@ public void updateAuthorizedView() { + "/authorizedViews/" + authorizedViewId) .build(); - com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest request = - com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest.newBuilder() + UpdateAuthorizedViewRequest request = + UpdateAuthorizedViewRequest.newBuilder() .setAuthorizedView(authorizedViewObj) .setUpdateMask( com.google.protobuf.FieldMask.newBuilder().addPaths("subset_view").build()) .build(); - com.google.bigtable.admin.v2.AuthorizedView authorizedView = - adminClient.updateAuthorizedViewAsync(request).get(); + AuthorizedView authorizedView = adminClient.updateAuthorizedViewAsync(request).get(); System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getName()); } catch (Exception e) { System.err.println("Failed to modify authorized view: " + e.getMessage()); @@ -245,10 +248,10 @@ public void updateAuthorizedView() { } /** Demonstrates how to get an authorized view's metadata. */ - public com.google.bigtable.admin.v2.AuthorizedView getAuthorizedView() { + public AuthorizedView getAuthorizedView() { System.out.printf("%nGetting authorized view %s in table %s%n", authorizedViewId, tableId); // [START bigtable_get_authorized_view] - com.google.bigtable.admin.v2.AuthorizedView authorizedView = null; + AuthorizedView authorizedView = null; try { authorizedView = adminClient.getAuthorizedView( @@ -260,13 +263,12 @@ public com.google.bigtable.admin.v2.AuthorizedView getAuthorizedView() { + tableId + "/authorizedViews/" + authorizedViewId); - com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView = - authorizedView.getSubsetView(); + AuthorizedView.SubsetView subsetView = authorizedView.getSubsetView(); for (ByteString rowPrefix : subsetView.getRowPrefixesList()) { System.out.printf("Row Prefix: %s%n", rowPrefix.toStringUtf8()); } - for (Map.Entry entry : + for (Map.Entry entry : subsetView.getFamilySubsetsMap().entrySet()) { for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixesList()) { System.out.printf( @@ -292,16 +294,13 @@ public List listAllAuthorizedViews() { // [START bigtable_list_authorized_views] List authorizedViewIds = new ArrayList<>(); try { - com.google.bigtable.admin.v2.ListAuthorizedViewsRequest request = - com.google.bigtable.admin.v2.ListAuthorizedViewsRequest.newBuilder() + ListAuthorizedViewsRequest request = + ListAuthorizedViewsRequest.newBuilder() .setParent( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .build(); - for (com.google.bigtable.admin.v2.AuthorizedView view : - adminClient.listAuthorizedViews(request).iterateAll()) { - String id = - com.google.bigtable.admin.v2.AuthorizedViewName.parse(view.getName()) - .getAuthorizedView(); + for (AuthorizedView view : adminClient.listAuthorizedViews(request).iterateAll()) { + String id = AuthorizedViewName.parse(view.getName()).getAuthorizedView(); System.out.println(id); authorizedViewIds.add(id); } diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java index eb8c96928313..0612991e4336 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java @@ -22,6 +22,10 @@ import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.ServerStream; +import com.google.bigtable.admin.v2.ColumnFamily; +import com.google.bigtable.admin.v2.CreateTableRequest; +import com.google.bigtable.admin.v2.GetTableRequest; +import com.google.bigtable.admin.v2.Table; import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.cloud.bigtable.data.v2.BigtableDataClient; @@ -123,9 +127,9 @@ public void createTable() { boolean exists = false; try { adminClient.getTable( - com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) - .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) + .setView(Table.View.NAME_ONLY) .build()); exists = true; } catch (NotFoundException e) { @@ -134,15 +138,13 @@ public void createTable() { if (!exists) { System.out.println("Creating table: " + tableId); String parent = "projects/" + projectId + "/instances/" + instanceId; - com.google.bigtable.admin.v2.CreateTableRequest request = - com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + CreateTableRequest request = + CreateTableRequest.newBuilder() .setParent(parent) .setTableId(tableId) .setTable( - com.google.bigtable.admin.v2.Table.newBuilder() - .putColumnFamilies( - COLUMN_FAMILY, - com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + Table.newBuilder() + .putColumnFamilies(COLUMN_FAMILY, ColumnFamily.getDefaultInstance()) .build()) .build(); adminClient.createTable(request); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java index 51bd11564d24..b71b885432d5 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java @@ -124,7 +124,7 @@ public void createProdInstance(boolean createWithTags) { boolean exists = false; try { adminClient.getInstance( - com.google.bigtable.admin.v2.GetInstanceRequest.newBuilder() + GetInstanceRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId) .build()); exists = true; diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java index 7868fdc1043c..66a5061387ba 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/SchemaBundleExample.java @@ -17,6 +17,16 @@ package com.example.bigtable; import com.google.api.gax.rpc.NotFoundException; +import com.google.bigtable.admin.v2.ColumnFamily; +import com.google.bigtable.admin.v2.CreateSchemaBundleRequest; +import com.google.bigtable.admin.v2.CreateTableRequest; +import com.google.bigtable.admin.v2.GetTableRequest; +import com.google.bigtable.admin.v2.ListSchemaBundlesRequest; +import com.google.bigtable.admin.v2.ProtoSchema; +import com.google.bigtable.admin.v2.SchemaBundle; +import com.google.bigtable.admin.v2.SchemaBundleName; +import com.google.bigtable.admin.v2.Table; +import com.google.bigtable.admin.v2.UpdateSchemaBundleRequest; import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import com.google.protobuf.ByteString; @@ -85,9 +95,9 @@ public SchemaBundleExample( private boolean exists(String tableId) { try { adminClient.getTable( - com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) - .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) + .setView(Table.View.NAME_ONLY) .build()); return true; } catch (com.google.api.gax.rpc.NotFoundException e) { @@ -114,18 +124,16 @@ public void createTable() { // Checks if table exists, creates table if it does not exist. if (!exists(tableId)) { System.out.println("Table does not exist, creating table: " + tableId); - com.google.bigtable.admin.v2.CreateTableRequest request = - com.google.bigtable.admin.v2.CreateTableRequest.newBuilder() + CreateTableRequest request = + CreateTableRequest.newBuilder() .setParent("projects/" + projectId + "/instances/" + instanceId) .setTableId(tableId) .setTable( - com.google.bigtable.admin.v2.Table.newBuilder() - .putColumnFamilies( - COLUMN_FAMILY, - com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance()) + Table.newBuilder() + .putColumnFamilies(COLUMN_FAMILY, ColumnFamily.getDefaultInstance()) .build()) .build(); - com.google.bigtable.admin.v2.Table table = adminClient.createTable(request); + Table table = adminClient.createTable(request); System.out.printf("Table: %s created successfully%n", table.getName()); } } @@ -162,22 +170,19 @@ public void createSchemaBundle() { if (in == null) { throw new java.io.FileNotFoundException("Resource not found: " + PROTO_FILE_PATH); } - com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = - com.google.bigtable.admin.v2.SchemaBundle.newBuilder() + SchemaBundle schemaBundleObj = + SchemaBundle.newBuilder() .setProtoSchema( - com.google.bigtable.admin.v2.ProtoSchema.newBuilder() - .setProtoDescriptors(ByteString.readFrom(in)) - .build()) + ProtoSchema.newBuilder().setProtoDescriptors(ByteString.readFrom(in)).build()) .build(); - com.google.bigtable.admin.v2.CreateSchemaBundleRequest request = - com.google.bigtable.admin.v2.CreateSchemaBundleRequest.newBuilder() + CreateSchemaBundleRequest request = + CreateSchemaBundleRequest.newBuilder() .setParent( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .setSchemaBundleId(schemaBundleId) .setSchemaBundle(schemaBundleObj) .build(); - com.google.bigtable.admin.v2.SchemaBundle schemaBundle = - adminClient.createSchemaBundleAsync(request).get(); + SchemaBundle schemaBundle = adminClient.createSchemaBundleAsync(request).get(); System.out.printf("Schema bundle: %s created successfully%n", schemaBundle.getName()); } catch (Exception e) { System.err.println("Failed to create a schema bundle: " + e.getMessage()); @@ -194,8 +199,8 @@ public void updateSchemaBundle() { if (in == null) { throw new java.io.FileNotFoundException("Resource not found: " + PROTO_FILE_PATH); } - com.google.bigtable.admin.v2.SchemaBundle schemaBundleObj = - com.google.bigtable.admin.v2.SchemaBundle.newBuilder() + SchemaBundle schemaBundleObj = + SchemaBundle.newBuilder() .setName( "projects/" + projectId @@ -206,18 +211,15 @@ public void updateSchemaBundle() { + "/schemaBundles/" + schemaBundleId) .setProtoSchema( - com.google.bigtable.admin.v2.ProtoSchema.newBuilder() - .setProtoDescriptors(ByteString.readFrom(in)) - .build()) + ProtoSchema.newBuilder().setProtoDescriptors(ByteString.readFrom(in)).build()) .build(); - com.google.bigtable.admin.v2.UpdateSchemaBundleRequest request = - com.google.bigtable.admin.v2.UpdateSchemaBundleRequest.newBuilder() + UpdateSchemaBundleRequest request = + UpdateSchemaBundleRequest.newBuilder() .setSchemaBundle(schemaBundleObj) .setUpdateMask( com.google.protobuf.FieldMask.newBuilder().addPaths("proto_schema").build()) .build(); - com.google.bigtable.admin.v2.SchemaBundle schemaBundle = - adminClient.updateSchemaBundleAsync(request).get(); + SchemaBundle schemaBundle = adminClient.updateSchemaBundleAsync(request).get(); System.out.printf("Schema bundle: %s updated successfully%n", schemaBundle.getName()); } catch (Exception e) { System.err.println("Failed to modify schema bundle: " + e.getMessage()); @@ -226,10 +228,10 @@ public void updateSchemaBundle() { } /** Demonstrates how to get a schema bundle's definition. */ - public com.google.bigtable.admin.v2.SchemaBundle getSchemaBundle() { + public SchemaBundle getSchemaBundle() { System.out.printf("%nGetting schema bundle %s in table %s%n", schemaBundleId, tableId); // [START bigtable_get_schema_bundle] - com.google.bigtable.admin.v2.SchemaBundle schemaBundle = null; + SchemaBundle schemaBundle = null; try { schemaBundle = adminClient.getSchemaBundle( @@ -273,15 +275,13 @@ public List listAllSchemaBundles() { // [START bigtable_list_schema_bundles] List schemaBundleIds = new ArrayList<>(); try { - com.google.bigtable.admin.v2.ListSchemaBundlesRequest request = - com.google.bigtable.admin.v2.ListSchemaBundlesRequest.newBuilder() + ListSchemaBundlesRequest request = + ListSchemaBundlesRequest.newBuilder() .setParent( "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .build(); - for (com.google.bigtable.admin.v2.SchemaBundle bundle : - adminClient.listSchemaBundles(request).iterateAll()) { - String id = - com.google.bigtable.admin.v2.SchemaBundleName.parse(bundle.getName()).getSchemaBundle(); + for (SchemaBundle bundle : adminClient.listSchemaBundles(request).iterateAll()) { + String id = SchemaBundleName.parse(bundle.getName()).getSchemaBundle(); System.out.println(id); schemaBundleIds.add(id); } diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java index e2ef19a9219e..2888fdc28b9c 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java @@ -21,6 +21,7 @@ import com.google.bigtable.admin.v2.ColumnFamily; import com.google.bigtable.admin.v2.CreateTableRequest; import com.google.bigtable.admin.v2.GcRule; +import com.google.bigtable.admin.v2.GetTableRequest; import com.google.bigtable.admin.v2.ListTablesRequest; import com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest; import com.google.bigtable.admin.v2.Table; @@ -119,9 +120,9 @@ public void createTable() { boolean exists = false; try { adminClient.getTable( - com.google.bigtable.admin.v2.GetTableRequest.newBuilder() + GetTableRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) - .setView(com.google.bigtable.admin.v2.Table.View.NAME_ONLY) + .setView(Table.View.NAME_ONLY) .build()); exists = true; } catch (NotFoundException e) { diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java index 8b99600fb8ed..275a9d9e4b04 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DeleteColumnFamilyExample.java @@ -17,6 +17,7 @@ package com.example.bigtable.deletes; // [START bigtable_delete_column_family] +import com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest; import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; @@ -28,11 +29,11 @@ public void deleteColumnFamily( BaseBigtableTableAdminSettings.newBuilder().build(); try (BigtableTableAdminClientV2 tableAdminClient = BigtableTableAdminClientV2.create(adminSettings)) { - com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest request = - com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.newBuilder() + ModifyColumnFamiliesRequest request = + ModifyColumnFamiliesRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .addModifications( - com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.Modification.newBuilder() + ModifyColumnFamiliesRequest.Modification.newBuilder() .setId(columnFamily) .setDrop(true)) .build(); diff --git a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java index 70699077b091..ef5cf5d89014 100644 --- a/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java +++ b/java-bigtable/samples/snippets/src/main/java/com/example/bigtable/deletes/DropRowRangeExample.java @@ -17,6 +17,7 @@ package com.example.bigtable.deletes; // [START bigtable_drop_row_range] +import com.google.bigtable.admin.v2.DropRowRangeRequest; import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings; import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2; import java.io.IOException; @@ -27,8 +28,8 @@ public void dropRowRange(String projectId, String instanceId, String tableId) th BaseBigtableTableAdminSettings.newBuilder().build(); try (BigtableTableAdminClientV2 tableAdminClient = BigtableTableAdminClientV2.create(adminSettings)) { - com.google.bigtable.admin.v2.DropRowRangeRequest request = - com.google.bigtable.admin.v2.DropRowRangeRequest.newBuilder() + DropRowRangeRequest request = + DropRowRangeRequest.newBuilder() .setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId) .setRowKeyPrefix(com.google.protobuf.ByteString.copyFromUtf8("phone#4c410523")) .build();