From 1891383aaf3ba1d4d74fcc034de7a72a5cfa773b Mon Sep 17 00:00:00 2001
From: Igor Bernstein <igorbernstein@google.com>
Date: Tue, 18 Sep 2018 16:12:27 -0400
Subject: [PATCH] Bigtable: be consistent and don't expose absolute table names

---
 .../admin/v2/BigtableTableAdminClient.java    | 32 +++++++++----------
 .../v2/BigtableTableAdminClientTest.java      |  6 ++--
 .../v2/it/BigtableTableAdminClientIT.java     |  5 ++-
 3 files changed, 20 insertions(+), 23 deletions(-)

diff --git a/google-cloud-clients/google-cloud-bigtable-admin/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/google-cloud-clients/google-cloud-bigtable-admin/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
index eba6a51c4f01..877ec591915a 100644
--- a/google-cloud-clients/google-cloud-bigtable-admin/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
+++ b/google-cloud-clients/google-cloud-bigtable-admin/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java
@@ -383,38 +383,37 @@ public ApiFuture<Table> getTableAsync(String tableId) {
   }
 
   /**
-   * Lists all TableNames in the instance.
+   * Lists all table ids in the instance.
    *
    * <p>Sample code:
    *
    * <pre>{@code
-   * List<TableName> tableNames = client.listTables();
-   * for(TableName name : tableNames) {
+   * List<String> tableIds = client.listTables();
+   * for(String tableId: tableIds) {
    *   System.out.println(name.getTable());
    * }
    * }</pre>
    */
-  // TODO(igorbernstein2): consider changing this method to use relative table ids.
   @SuppressWarnings("WeakerAccess")
-  public List<TableName> listTables() {
+  public List<String> listTables() {
     return awaitFuture(listTablesAsync());
   }
 
   /**
-   * Asynchronously lists all TableNames in the instance.
+   * Asynchronously lists all table ids in the instance.
    *
    * <p>Sample code:
    *
    * <pre>{@code
-   * ApiFuture<List<TableName>> listFuture = client.listTables();
+   * ApiFuture<List<String>> listFuture = client.listTables();
    *
    * ApiFutures.addCallback(
    *   listFuture,
-   *   new ApiFutureCallback<List<TableName>>() {
-   *     public void onSuccess(List<TableName> tableNames) {
+   *   new ApiFutureCallback<List<String>>() {
+   *     public void onSuccess(List<String> tableIds) {
    *       System.out.println("Got list of tables:");
-   *       for (TableName name : tableNames) {
-   *         System.out.println(name.getTable());
+   *       for (String tableId : tableIds) {
+   *         System.out.println(tableId);
    *       }
    *     }
    *
@@ -426,9 +425,8 @@ public List<TableName> listTables() {
    * );
    * }</pre>
    */
-  // TODO(igorbernstein2): consider changing this method to use relative table ids.
   @SuppressWarnings("WeakerAccess")
-  public ApiFuture<List<TableName>> listTablesAsync() {
+  public ApiFuture<List<String>> listTablesAsync() {
     ListTablesRequest request = ListTablesRequest.newBuilder().setParent(instanceName.toString())
         .build();
 
@@ -479,12 +477,12 @@ public ApiFuture<List<com.google.bigtable.admin.v2.Table>> apply(
 
     // Wrap all of the accumulated protos.
     return ApiFutures.transform(allProtos,
-        new ApiFunction<List<com.google.bigtable.admin.v2.Table>, List<TableName>>() {
+        new ApiFunction<List<com.google.bigtable.admin.v2.Table>, List<String>>() {
           @Override
-          public List<TableName> apply(List<com.google.bigtable.admin.v2.Table> protos) {
-            List<TableName> results = Lists.newArrayListWithCapacity(protos.size());
+          public List<String> apply(List<com.google.bigtable.admin.v2.Table> protos) {
+            List<String> results = Lists.newArrayListWithCapacity(protos.size());
             for (com.google.bigtable.admin.v2.Table proto : protos) {
-              results.add(TableName.parse(proto.getName()));
+              results.add(TableName.parse(proto.getName()).getTable());
             }
             return results;
           }
diff --git a/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientTest.java b/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientTest.java
index 33b6a8b410d3..74bd2b7dcce9 100644
--- a/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientTest.java
+++ b/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientTest.java
@@ -241,12 +241,12 @@ public void testListTables() {
     );
 
     // Execute
-    List<TableName> actualResults = adminClient.listTables();
+    List<String> actualResults = adminClient.listTables();
 
     // Verify
-    List<TableName> expectedResults = Lists.newArrayList();
+    List<String> expectedResults = Lists.newArrayList();
     for (com.google.bigtable.admin.v2.Table expectedProto : expectedProtos) {
-      expectedResults.add(TableName.parse(expectedProto.getName()));
+      expectedResults.add(TableName.parse(expectedProto.getName()).getTable());
     }
 
     assertThat(actualResults).containsExactlyElementsIn(expectedResults);
diff --git a/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/it/BigtableTableAdminClientIT.java b/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/it/BigtableTableAdminClientIT.java
index e79120dec693..92d92e62cb52 100644
--- a/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/it/BigtableTableAdminClientIT.java
+++ b/google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/it/BigtableTableAdminClientIT.java
@@ -22,7 +22,6 @@
 import static org.junit.Assert.assertTrue;
 
 import com.google.bigtable.admin.v2.InstanceName;
-import com.google.bigtable.admin.v2.TableName;
 import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
 import com.google.cloud.bigtable.admin.v2.models.ColumnFamily;
 import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest;
@@ -204,7 +203,7 @@ public void listTables() {
 
     try {
       tableAdmin.createTable(CreateTableRequest.of(tableId));
-      List<TableName> tables = tableAdmin.listTables();
+      List<String> tables = tableAdmin.listTables();
       assertNotNull(tables);
       assertFalse("List tables did not return any tables", tables.isEmpty());
     } finally {
@@ -218,7 +217,7 @@ public void listTablesAsync() throws Exception {
 
     try {
       tableAdmin.createTable(CreateTableRequest.of(tableId));
-      List<TableName> tables = tableAdmin.listTablesAsync().get();
+      List<String> tables = tableAdmin.listTablesAsync().get();
       assertNotNull(tables);
       assertFalse("List tables did not return any tables", tables.isEmpty());
     } finally {