From 627fdc13d64ab7b51934d4866ff753f7b08dabe4 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 10 Jun 2020 17:20:24 -0700 Subject: [PATCH] fix: inconsistent json and yaml spanner configs (#238) * fix: inconsistent json and yaml spanner configs This tries to resolve inconsistent timeout/retries in different client libraries. Two major changes: - Update *_grpc_service_config.json and *_gapic.yaml to make sure that they are consistent. - Add missing ListDatabases config in spanner_admin_database_gapic.yaml. PiperOrigin-RevId: 312582296 Source-Author: Google APIs Source-Date: Wed May 20 16:55:15 2020 -0700 Source-Repo: googleapis/googleapis Source-Sha: d8a17933f650cf605196ef14f03edc246f0562b6 Source-Link: https://github.com/googleapis/googleapis/commit/d8a17933f650cf605196ef14f03edc246f0562b6 --- .../database/v1/DatabaseAdminClient.java | 426 +++++++++--------- .../database/v1/DatabaseAdminSettings.java | 26 +- .../database/v1/stub/DatabaseAdminStub.java | 18 +- .../v1/stub/DatabaseAdminStubSettings.java | 162 +++---- .../v1/stub/GrpcDatabaseAdminStub.java | 82 ++-- .../database/v1/DatabaseAdminClientTest.java | 96 ++-- synth.metadata | 4 +- 7 files changed, 407 insertions(+), 407 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java index e40a5fa701..112b43e2ef 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java @@ -210,6 +210,138 @@ public final OperationsClient getOperationsClient() { return operationsClient; } + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists Cloud Spanner databases. + * + *

Sample code: + * + *


+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   for (Database element : databaseAdminClient.listDatabases(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param parent Required. The instance whose databases should be listed. Values are of the form + * `projects/<project>/instances/<instance>`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListDatabasesPagedResponse listDatabases(InstanceName parent) { + ListDatabasesRequest request = + ListDatabasesRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listDatabases(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists Cloud Spanner databases. + * + *

Sample code: + * + *


+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   for (Database element : databaseAdminClient.listDatabases(parent.toString()).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param parent Required. The instance whose databases should be listed. Values are of the form + * `projects/<project>/instances/<instance>`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListDatabasesPagedResponse listDatabases(String parent) { + ListDatabasesRequest request = ListDatabasesRequest.newBuilder().setParent(parent).build(); + return listDatabases(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists Cloud Spanner databases. + * + *

Sample code: + * + *


+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
+   *     .setParent(parent.toString())
+   *     .build();
+   *   for (Database element : databaseAdminClient.listDatabases(request).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListDatabasesPagedResponse listDatabases(ListDatabasesRequest request) { + return listDatabasesPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists Cloud Spanner databases. + * + *

Sample code: + * + *


+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
+   *     .setParent(parent.toString())
+   *     .build();
+   *   ApiFuture<ListDatabasesPagedResponse> future = databaseAdminClient.listDatabasesPagedCallable().futureCall(request);
+   *   // Do something
+   *   for (Database element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ */ + public final UnaryCallable + listDatabasesPagedCallable() { + return stub.listDatabasesPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists Cloud Spanner databases. + * + *

Sample code: + * + *


+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
+   *     .setParent(parent.toString())
+   *     .build();
+   *   while (true) {
+   *     ListDatabasesResponse response = databaseAdminClient.listDatabasesCallable().call(request);
+   *     for (Database element : response.getDatabasesList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * 
+ */ + public final UnaryCallable listDatabasesCallable() { + return stub.listDatabasesCallable(); + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Creates a new Cloud Spanner database and starts to prepare it for serving. The returned @@ -2371,138 +2503,6 @@ public final ListBackupOperationsPagedResponse listBackupOperations( return stub.listBackupOperationsCallable(); } - // AUTO-GENERATED DOCUMENTATION AND METHOD - /** - * Lists Cloud Spanner databases. - * - *

Sample code: - * - *


-   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
-   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   *   for (Database element : databaseAdminClient.listDatabases(parent).iterateAll()) {
-   *     // doThingsWith(element);
-   *   }
-   * }
-   * 
- * - * @param parent Required. The instance whose databases should be listed. Values are of the form - * `projects/<project>/instances/<instance>`. - * @throws com.google.api.gax.rpc.ApiException if the remote call fails - */ - public final ListDatabasesPagedResponse listDatabases(InstanceName parent) { - ListDatabasesRequest request = - ListDatabasesRequest.newBuilder() - .setParent(parent == null ? null : parent.toString()) - .build(); - return listDatabases(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD - /** - * Lists Cloud Spanner databases. - * - *

Sample code: - * - *


-   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
-   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   *   for (Database element : databaseAdminClient.listDatabases(parent.toString()).iterateAll()) {
-   *     // doThingsWith(element);
-   *   }
-   * }
-   * 
- * - * @param parent Required. The instance whose databases should be listed. Values are of the form - * `projects/<project>/instances/<instance>`. - * @throws com.google.api.gax.rpc.ApiException if the remote call fails - */ - public final ListDatabasesPagedResponse listDatabases(String parent) { - ListDatabasesRequest request = ListDatabasesRequest.newBuilder().setParent(parent).build(); - return listDatabases(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD - /** - * Lists Cloud Spanner databases. - * - *

Sample code: - * - *


-   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
-   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
-   *     .setParent(parent.toString())
-   *     .build();
-   *   for (Database element : databaseAdminClient.listDatabases(request).iterateAll()) {
-   *     // doThingsWith(element);
-   *   }
-   * }
-   * 
- * - * @param request The request object containing all of the parameters for the API call. - * @throws com.google.api.gax.rpc.ApiException if the remote call fails - */ - public final ListDatabasesPagedResponse listDatabases(ListDatabasesRequest request) { - return listDatabasesPagedCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD - /** - * Lists Cloud Spanner databases. - * - *

Sample code: - * - *


-   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
-   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
-   *     .setParent(parent.toString())
-   *     .build();
-   *   ApiFuture<ListDatabasesPagedResponse> future = databaseAdminClient.listDatabasesPagedCallable().futureCall(request);
-   *   // Do something
-   *   for (Database element : future.get().iterateAll()) {
-   *     // doThingsWith(element);
-   *   }
-   * }
-   * 
- */ - public final UnaryCallable - listDatabasesPagedCallable() { - return stub.listDatabasesPagedCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD - /** - * Lists Cloud Spanner databases. - * - *

Sample code: - * - *


-   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
-   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   *   ListDatabasesRequest request = ListDatabasesRequest.newBuilder()
-   *     .setParent(parent.toString())
-   *     .build();
-   *   while (true) {
-   *     ListDatabasesResponse response = databaseAdminClient.listDatabasesCallable().call(request);
-   *     for (Database element : response.getDatabasesList()) {
-   *       // doThingsWith(element);
-   *     }
-   *     String nextPageToken = response.getNextPageToken();
-   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
-   *       request = request.toBuilder().setPageToken(nextPageToken).build();
-   *     } else {
-   *       break;
-   *     }
-   *   }
-   * }
-   * 
- */ - public final UnaryCallable listDatabasesCallable() { - return stub.listDatabasesCallable(); - } - @Override public final void close() { stub.close(); @@ -2533,6 +2533,87 @@ public boolean awaitTermination(long duration, TimeUnit unit) throws Interrupted return stub.awaitTermination(duration, unit); } + public static class ListDatabasesPagedResponse + extends AbstractPagedListResponse< + ListDatabasesRequest, + ListDatabasesResponse, + Database, + ListDatabasesPage, + ListDatabasesFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListDatabasesPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + new ApiFunction() { + @Override + public ListDatabasesPagedResponse apply(ListDatabasesPage input) { + return new ListDatabasesPagedResponse(input); + } + }, + MoreExecutors.directExecutor()); + } + + private ListDatabasesPagedResponse(ListDatabasesPage page) { + super(page, ListDatabasesFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListDatabasesPage + extends AbstractPage< + ListDatabasesRequest, ListDatabasesResponse, Database, ListDatabasesPage> { + + private ListDatabasesPage( + PageContext context, + ListDatabasesResponse response) { + super(context, response); + } + + private static ListDatabasesPage createEmptyPage() { + return new ListDatabasesPage(null, null); + } + + @Override + protected ListDatabasesPage createPage( + PageContext context, + ListDatabasesResponse response) { + return new ListDatabasesPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListDatabasesFixedSizeCollection + extends AbstractFixedSizeCollection< + ListDatabasesRequest, + ListDatabasesResponse, + Database, + ListDatabasesPage, + ListDatabasesFixedSizeCollection> { + + private ListDatabasesFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListDatabasesFixedSizeCollection createEmptyCollection() { + return new ListDatabasesFixedSizeCollection(null, 0); + } + + @Override + protected ListDatabasesFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListDatabasesFixedSizeCollection(pages, collectionSize); + } + } + public static class ListBackupsPagedResponse extends AbstractPagedListResponse< ListBackupsRequest, @@ -2786,85 +2867,4 @@ protected ListBackupOperationsFixedSizeCollection createCollection( return new ListBackupOperationsFixedSizeCollection(pages, collectionSize); } } - - public static class ListDatabasesPagedResponse - extends AbstractPagedListResponse< - ListDatabasesRequest, - ListDatabasesResponse, - Database, - ListDatabasesPage, - ListDatabasesFixedSizeCollection> { - - public static ApiFuture createAsync( - PageContext context, - ApiFuture futureResponse) { - ApiFuture futurePage = - ListDatabasesPage.createEmptyPage().createPageAsync(context, futureResponse); - return ApiFutures.transform( - futurePage, - new ApiFunction() { - @Override - public ListDatabasesPagedResponse apply(ListDatabasesPage input) { - return new ListDatabasesPagedResponse(input); - } - }, - MoreExecutors.directExecutor()); - } - - private ListDatabasesPagedResponse(ListDatabasesPage page) { - super(page, ListDatabasesFixedSizeCollection.createEmptyCollection()); - } - } - - public static class ListDatabasesPage - extends AbstractPage< - ListDatabasesRequest, ListDatabasesResponse, Database, ListDatabasesPage> { - - private ListDatabasesPage( - PageContext context, - ListDatabasesResponse response) { - super(context, response); - } - - private static ListDatabasesPage createEmptyPage() { - return new ListDatabasesPage(null, null); - } - - @Override - protected ListDatabasesPage createPage( - PageContext context, - ListDatabasesResponse response) { - return new ListDatabasesPage(context, response); - } - - @Override - public ApiFuture createPageAsync( - PageContext context, - ApiFuture futureResponse) { - return super.createPageAsync(context, futureResponse); - } - } - - public static class ListDatabasesFixedSizeCollection - extends AbstractFixedSizeCollection< - ListDatabasesRequest, - ListDatabasesResponse, - Database, - ListDatabasesPage, - ListDatabasesFixedSizeCollection> { - - private ListDatabasesFixedSizeCollection(List pages, int collectionSize) { - super(pages, collectionSize); - } - - private static ListDatabasesFixedSizeCollection createEmptyCollection() { - return new ListDatabasesFixedSizeCollection(null, 0); - } - - @Override - protected ListDatabasesFixedSizeCollection createCollection( - List pages, int collectionSize) { - return new ListDatabasesFixedSizeCollection(pages, collectionSize); - } - } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java index 2b74ae4ba3..53edae1edf 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java @@ -103,6 +103,12 @@ @Generated("by gapic-generator") @BetaApi public class DatabaseAdminSettings extends ClientSettings { + /** Returns the object with the settings used for calls to listDatabases. */ + public PagedCallSettings + listDatabasesSettings() { + return ((DatabaseAdminStubSettings) getStubSettings()).listDatabasesSettings(); + } + /** Returns the object with the settings used for calls to createDatabase. */ public UnaryCallSettings createDatabaseSettings() { return ((DatabaseAdminStubSettings) getStubSettings()).createDatabaseSettings(); @@ -225,12 +231,6 @@ public UnaryCallSettings restoreDatabaseSetti return ((DatabaseAdminStubSettings) getStubSettings()).listBackupOperationsSettings(); } - /** Returns the object with the settings used for calls to listDatabases. */ - public PagedCallSettings - listDatabasesSettings() { - return ((DatabaseAdminStubSettings) getStubSettings()).listDatabasesSettings(); - } - public static final DatabaseAdminSettings create(DatabaseAdminStubSettings stub) throws IOException { return new DatabaseAdminSettings.Builder(stub.toBuilder()).build(); @@ -328,6 +328,13 @@ public Builder applyToAllUnaryMethods( return this; } + /** Returns the builder for the settings used for calls to listDatabases. */ + public PagedCallSettings.Builder< + ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> + listDatabasesSettings() { + return getStubSettingsBuilder().listDatabasesSettings(); + } + /** Returns the builder for the settings used for calls to createDatabase. */ public UnaryCallSettings.Builder createDatabaseSettings() { return getStubSettingsBuilder().createDatabaseSettings(); @@ -453,13 +460,6 @@ public UnaryCallSettings.Builder restoreDatab return getStubSettingsBuilder().listBackupOperationsSettings(); } - /** Returns the builder for the settings used for calls to listDatabases. */ - public PagedCallSettings.Builder< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> - listDatabasesSettings() { - return getStubSettingsBuilder().listDatabasesSettings(); - } - @Override public DatabaseAdminSettings build() throws IOException { return new DatabaseAdminSettings(this); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java index 7f54ffbfca..fd92157c55 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java @@ -74,6 +74,15 @@ public OperationsStub getOperationsStub() { throw new UnsupportedOperationException("Not implemented: getOperationsStub()"); } + public UnaryCallable + listDatabasesPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listDatabasesPagedCallable()"); + } + + public UnaryCallable listDatabasesCallable() { + throw new UnsupportedOperationException("Not implemented: listDatabasesCallable()"); + } + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") public OperationCallable createDatabaseOperationCallable() { @@ -181,15 +190,6 @@ public UnaryCallable restoreDatabaseCallable( throw new UnsupportedOperationException("Not implemented: listBackupOperationsCallable()"); } - public UnaryCallable - listDatabasesPagedCallable() { - throw new UnsupportedOperationException("Not implemented: listDatabasesPagedCallable()"); - } - - public UnaryCallable listDatabasesCallable() { - throw new UnsupportedOperationException("Not implemented: listDatabasesCallable()"); - } - @Override public abstract void close(); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java index 3549b6c5fe..53d5767a89 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java @@ -128,6 +128,9 @@ public class DatabaseAdminStubSettings extends StubSettings + listDatabasesSettings; private final UnaryCallSettings createDatabaseSettings; private final OperationCallSettings createDatabaseOperationSettings; @@ -163,9 +166,12 @@ public class DatabaseAdminStubSettings extends StubSettings listBackupOperationsSettings; - private final PagedCallSettings< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> - listDatabasesSettings; + + /** Returns the object with the settings used for calls to listDatabases. */ + public PagedCallSettings + listDatabasesSettings() { + return listDatabasesSettings; + } /** Returns the object with the settings used for calls to createDatabase. */ public UnaryCallSettings createDatabaseSettings() { @@ -285,12 +291,6 @@ public UnaryCallSettings restoreDatabaseSetti return listBackupOperationsSettings; } - /** Returns the object with the settings used for calls to listDatabases. */ - public PagedCallSettings - listDatabasesSettings() { - return listDatabasesSettings; - } - @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public DatabaseAdminStub createStub() throws IOException { if (getTransportChannelProvider() @@ -360,6 +360,7 @@ public Builder toBuilder() { protected DatabaseAdminStubSettings(Builder settingsBuilder) throws IOException { super(settingsBuilder); + listDatabasesSettings = settingsBuilder.listDatabasesSettings().build(); createDatabaseSettings = settingsBuilder.createDatabaseSettings().build(); createDatabaseOperationSettings = settingsBuilder.createDatabaseOperationSettings().build(); getDatabaseSettings = settingsBuilder.getDatabaseSettings().build(); @@ -381,9 +382,44 @@ protected DatabaseAdminStubSettings(Builder settingsBuilder) throws IOException restoreDatabaseOperationSettings = settingsBuilder.restoreDatabaseOperationSettings().build(); listDatabaseOperationsSettings = settingsBuilder.listDatabaseOperationsSettings().build(); listBackupOperationsSettings = settingsBuilder.listBackupOperationsSettings().build(); - listDatabasesSettings = settingsBuilder.listDatabasesSettings().build(); } + private static final PagedListDescriptor + LIST_DATABASES_PAGE_STR_DESC = + new PagedListDescriptor() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListDatabasesRequest injectToken(ListDatabasesRequest payload, String token) { + return ListDatabasesRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListDatabasesRequest injectPageSize(ListDatabasesRequest payload, int pageSize) { + return ListDatabasesRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListDatabasesRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListDatabasesResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources(ListDatabasesResponse payload) { + return payload.getDatabasesList() != null + ? payload.getDatabasesList() + : ImmutableList.of(); + } + }; + private static final PagedListDescriptor LIST_BACKUPS_PAGE_STR_DESC = new PagedListDescriptor() { @@ -502,39 +538,20 @@ public Iterable extractResources(ListBackupOperationsResponse payload } }; - private static final PagedListDescriptor - LIST_DATABASES_PAGE_STR_DESC = - new PagedListDescriptor() { - @Override - public String emptyToken() { - return ""; - } - - @Override - public ListDatabasesRequest injectToken(ListDatabasesRequest payload, String token) { - return ListDatabasesRequest.newBuilder(payload).setPageToken(token).build(); - } - - @Override - public ListDatabasesRequest injectPageSize(ListDatabasesRequest payload, int pageSize) { - return ListDatabasesRequest.newBuilder(payload).setPageSize(pageSize).build(); - } - - @Override - public Integer extractPageSize(ListDatabasesRequest payload) { - return payload.getPageSize(); - } - - @Override - public String extractNextToken(ListDatabasesResponse payload) { - return payload.getNextPageToken(); - } - + private static final PagedListResponseFactory< + ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> + LIST_DATABASES_PAGE_STR_FACT = + new PagedListResponseFactory< + ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse>() { @Override - public Iterable extractResources(ListDatabasesResponse payload) { - return payload.getDatabasesList() != null - ? payload.getDatabasesList() - : ImmutableList.of(); + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListDatabasesRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext pageContext = + PageContext.create(callable, LIST_DATABASES_PAGE_STR_DESC, request, context); + return ListDatabasesPagedResponse.createAsync(pageContext, futureResponse); } }; @@ -602,27 +619,13 @@ public ApiFuture getFuturePagedResponse( } }; - private static final PagedListResponseFactory< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> - LIST_DATABASES_PAGE_STR_FACT = - new PagedListResponseFactory< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse>() { - @Override - public ApiFuture getFuturePagedResponse( - UnaryCallable callable, - ListDatabasesRequest request, - ApiCallContext context, - ApiFuture futureResponse) { - PageContext pageContext = - PageContext.create(callable, LIST_DATABASES_PAGE_STR_DESC, request, context); - return ListDatabasesPagedResponse.createAsync(pageContext, futureResponse); - } - }; - /** Builder for DatabaseAdminStubSettings. */ public static class Builder extends StubSettings.Builder { private final ImmutableList> unaryMethodSettingsBuilders; + private final PagedCallSettings.Builder< + ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> + listDatabasesSettings; private final UnaryCallSettings.Builder createDatabaseSettings; private final OperationCallSettings.Builder< @@ -665,9 +668,6 @@ public static class Builder extends StubSettings.Builder listBackupOperationsSettings; - private final PagedCallSettings.Builder< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> - listDatabasesSettings; private static final ImmutableMap> RETRYABLE_CODE_DEFINITIONS; @@ -710,6 +710,8 @@ protected Builder() { protected Builder(ClientContext clientContext) { super(clientContext); + listDatabasesSettings = PagedCallSettings.newBuilder(LIST_DATABASES_PAGE_STR_FACT); + createDatabaseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); createDatabaseOperationSettings = OperationCallSettings.newBuilder(); @@ -752,10 +754,9 @@ protected Builder(ClientContext clientContext) { listBackupOperationsSettings = PagedCallSettings.newBuilder(LIST_BACKUP_OPERATIONS_PAGE_STR_FACT); - listDatabasesSettings = PagedCallSettings.newBuilder(LIST_DATABASES_PAGE_STR_FACT); - unaryMethodSettingsBuilders = ImmutableList.>of( + listDatabasesSettings, createDatabaseSettings, getDatabaseSettings, updateDatabaseDdlSettings, @@ -771,8 +772,7 @@ protected Builder(ClientContext clientContext) { listBackupsSettings, restoreDatabaseSettings, listDatabaseOperationsSettings, - listBackupOperationsSettings, - listDatabasesSettings); + listBackupOperationsSettings); initDefaults(this); } @@ -788,6 +788,11 @@ private static Builder createDefault() { private static Builder initDefaults(Builder builder) { + builder + .listDatabasesSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); + builder .createDatabaseSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) @@ -867,11 +872,6 @@ private static Builder initDefaults(Builder builder) { .listBackupOperationsSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); - - builder - .listDatabasesSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) - .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder .createDatabaseOperationSettings() .setInitialCallSettings( @@ -972,6 +972,7 @@ private static Builder initDefaults(Builder builder) { protected Builder(DatabaseAdminStubSettings settings) { super(settings); + listDatabasesSettings = settings.listDatabasesSettings.toBuilder(); createDatabaseSettings = settings.createDatabaseSettings.toBuilder(); createDatabaseOperationSettings = settings.createDatabaseOperationSettings.toBuilder(); getDatabaseSettings = settings.getDatabaseSettings.toBuilder(); @@ -992,10 +993,10 @@ protected Builder(DatabaseAdminStubSettings settings) { restoreDatabaseOperationSettings = settings.restoreDatabaseOperationSettings.toBuilder(); listDatabaseOperationsSettings = settings.listDatabaseOperationsSettings.toBuilder(); listBackupOperationsSettings = settings.listBackupOperationsSettings.toBuilder(); - listDatabasesSettings = settings.listDatabasesSettings.toBuilder(); unaryMethodSettingsBuilders = ImmutableList.>of( + listDatabasesSettings, createDatabaseSettings, getDatabaseSettings, updateDatabaseDdlSettings, @@ -1011,8 +1012,7 @@ protected Builder(DatabaseAdminStubSettings settings) { listBackupsSettings, restoreDatabaseSettings, listDatabaseOperationsSettings, - listBackupOperationsSettings, - listDatabasesSettings); + listBackupOperationsSettings); } // NEXT_MAJOR_VER: remove 'throws Exception' @@ -1031,6 +1031,13 @@ public Builder applyToAllUnaryMethods( return unaryMethodSettingsBuilders; } + /** Returns the builder for the settings used for calls to listDatabases. */ + public PagedCallSettings.Builder< + ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> + listDatabasesSettings() { + return listDatabasesSettings; + } + /** Returns the builder for the settings used for calls to createDatabase. */ public UnaryCallSettings.Builder createDatabaseSettings() { return createDatabaseSettings; @@ -1156,13 +1163,6 @@ public UnaryCallSettings.Builder restoreDatab return listBackupOperationsSettings; } - /** Returns the builder for the settings used for calls to listDatabases. */ - public PagedCallSettings.Builder< - ListDatabasesRequest, ListDatabasesResponse, ListDatabasesPagedResponse> - listDatabasesSettings() { - return listDatabasesSettings; - } - @Override public DatabaseAdminStubSettings build() throws IOException { return new DatabaseAdminStubSettings(this); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java index be44d2be02..aaf318ca90 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java @@ -80,6 +80,16 @@ @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public class GrpcDatabaseAdminStub extends DatabaseAdminStub { + private static final MethodDescriptor + listDatabasesMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.spanner.admin.database.v1.DatabaseAdmin/ListDatabases") + .setRequestMarshaller( + ProtoUtils.marshaller(ListDatabasesRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListDatabasesResponse.getDefaultInstance())) + .build(); private static final MethodDescriptor createDatabaseMethodDescriptor = MethodDescriptor.newBuilder() @@ -218,20 +228,13 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { .setResponseMarshaller( ProtoUtils.marshaller(ListBackupOperationsResponse.getDefaultInstance())) .build(); - private static final MethodDescriptor - listDatabasesMethodDescriptor = - MethodDescriptor.newBuilder() - .setType(MethodDescriptor.MethodType.UNARY) - .setFullMethodName("google.spanner.admin.database.v1.DatabaseAdmin/ListDatabases") - .setRequestMarshaller( - ProtoUtils.marshaller(ListDatabasesRequest.getDefaultInstance())) - .setResponseMarshaller( - ProtoUtils.marshaller(ListDatabasesResponse.getDefaultInstance())) - .build(); private final BackgroundResource backgroundResources; private final GrpcOperationsStub operationsStub; + private final UnaryCallable listDatabasesCallable; + private final UnaryCallable + listDatabasesPagedCallable; private final UnaryCallable createDatabaseCallable; private final OperationCallable createDatabaseOperationCallable; @@ -265,9 +268,6 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { listBackupOperationsCallable; private final UnaryCallable listBackupOperationsPagedCallable; - private final UnaryCallable listDatabasesCallable; - private final UnaryCallable - listDatabasesPagedCallable; private final GrpcStubCallableFactory callableFactory; @@ -309,6 +309,19 @@ protected GrpcDatabaseAdminStub( this.callableFactory = callableFactory; this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + GrpcCallSettings listDatabasesTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listDatabasesMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ListDatabasesRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); GrpcCallSettings createDatabaseTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(createDatabaseMethodDescriptor) @@ -522,20 +535,13 @@ public Map extract(ListBackupOperationsRequest request) { } }) .build(); - GrpcCallSettings listDatabasesTransportSettings = - GrpcCallSettings.newBuilder() - .setMethodDescriptor(listDatabasesMethodDescriptor) - .setParamsExtractor( - new RequestParamsExtractor() { - @Override - public Map extract(ListDatabasesRequest request) { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); - } - }) - .build(); + this.listDatabasesCallable = + callableFactory.createUnaryCallable( + listDatabasesTransportSettings, settings.listDatabasesSettings(), clientContext); + this.listDatabasesPagedCallable = + callableFactory.createPagedCallable( + listDatabasesTransportSettings, settings.listDatabasesSettings(), clientContext); this.createDatabaseCallable = callableFactory.createUnaryCallable( createDatabaseTransportSettings, settings.createDatabaseSettings(), clientContext); @@ -629,12 +635,6 @@ public Map extract(ListDatabasesRequest request) { listBackupOperationsTransportSettings, settings.listBackupOperationsSettings(), clientContext); - this.listDatabasesCallable = - callableFactory.createUnaryCallable( - listDatabasesTransportSettings, settings.listDatabasesSettings(), clientContext); - this.listDatabasesPagedCallable = - callableFactory.createPagedCallable( - listDatabasesTransportSettings, settings.listDatabasesSettings(), clientContext); backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } @@ -644,6 +644,15 @@ public GrpcOperationsStub getOperationsStub() { return operationsStub; } + public UnaryCallable + listDatabasesPagedCallable() { + return listDatabasesPagedCallable; + } + + public UnaryCallable listDatabasesCallable() { + return listDatabasesCallable; + } + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") public OperationCallable createDatabaseOperationCallable() { @@ -749,15 +758,6 @@ public UnaryCallable restoreDatabaseCallable( return listBackupOperationsCallable; } - public UnaryCallable - listDatabasesPagedCallable() { - return listDatabasesPagedCallable; - } - - public UnaryCallable listDatabasesCallable() { - return listDatabasesCallable; - } - @Override public final void close() { shutdown(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java index 1c07f9fc30..78efb14466 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java @@ -119,6 +119,54 @@ public void tearDown() throws Exception { client.close(); } + @Test + @SuppressWarnings("all") + public void listDatabasesTest() { + String nextPageToken = ""; + Database databasesElement = Database.newBuilder().build(); + List databases = Arrays.asList(databasesElement); + ListDatabasesResponse expectedResponse = + ListDatabasesResponse.newBuilder() + .setNextPageToken(nextPageToken) + .addAllDatabases(databases) + .build(); + mockDatabaseAdmin.addResponse(expectedResponse); + + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + + ListDatabasesPagedResponse pagedListResponse = client.listDatabases(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getDatabasesList().get(0), resources.get(0)); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListDatabasesRequest actualRequest = (ListDatabasesRequest) actualRequests.get(0); + + Assert.assertEquals(parent, InstanceName.parse(actualRequest.getParent())); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + @SuppressWarnings("all") + public void listDatabasesExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + + client.listDatabases(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception + } + } + @Test @SuppressWarnings("all") public void createDatabaseTest() throws Exception { @@ -845,52 +893,4 @@ public void listBackupOperationsExceptionTest() throws Exception { // Expected exception } } - - @Test - @SuppressWarnings("all") - public void listDatabasesTest() { - String nextPageToken = ""; - Database databasesElement = Database.newBuilder().build(); - List databases = Arrays.asList(databasesElement); - ListDatabasesResponse expectedResponse = - ListDatabasesResponse.newBuilder() - .setNextPageToken(nextPageToken) - .addAllDatabases(databases) - .build(); - mockDatabaseAdmin.addResponse(expectedResponse); - - InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); - - ListDatabasesPagedResponse pagedListResponse = client.listDatabases(parent); - - List resources = Lists.newArrayList(pagedListResponse.iterateAll()); - Assert.assertEquals(1, resources.size()); - Assert.assertEquals(expectedResponse.getDatabasesList().get(0), resources.get(0)); - - List actualRequests = mockDatabaseAdmin.getRequests(); - Assert.assertEquals(1, actualRequests.size()); - ListDatabasesRequest actualRequest = (ListDatabasesRequest) actualRequests.get(0); - - Assert.assertEquals(parent, InstanceName.parse(actualRequest.getParent())); - Assert.assertTrue( - channelProvider.isHeaderSent( - ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), - GaxGrpcProperties.getDefaultApiClientHeaderPattern())); - } - - @Test - @SuppressWarnings("all") - public void listDatabasesExceptionTest() throws Exception { - StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); - mockDatabaseAdmin.addException(exception); - - try { - InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); - - client.listDatabases(parent); - Assert.fail("No exception raised"); - } catch (InvalidArgumentException e) { - // Expected exception - } - } } diff --git a/synth.metadata b/synth.metadata index e748bc6c75..a19efd18dc 100644 --- a/synth.metadata +++ b/synth.metadata @@ -11,8 +11,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "e0f9d9e1f9de890db765be46f45ca8490723e3eb", - "internalRef": "309824146" + "sha": "d8a17933f650cf605196ef14f03edc246f0562b6", + "internalRef": "312582296" } }, {