From 78dcf3c1ccedcc61f00b38e627caffab92e94e44 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 16:32:05 -0500 Subject: [PATCH 1/6] Bigtable: make client settings more consistent The eventual goal is to deemphasize per method RPC settings by relegating them to stubSettings. And promote more common settings like credentials to the top level. This breaks backwards compatibility by removing BigtableDataSettings' base class. It tries to ease the transition by copying the ClientSettings methods down into BigtableDataSettings. Specific changes: - BigtableDataSettings is no longer a subclass of ClientSettings - ClientSettings methods have been temporarily copied to BigtableDataSettings with deprecation warnings to ease transition - add helper method to ease connection to emulator - make sure that credential provider is configurable at the top level (fixes #3634) - all of the deprecated methods have been grouped together and will be removed in the next couple of releases (along with the deprecated google-bigtable-admin artifact) --- .../google-cloud-bigtable/README.md | 1 - .../v2/BigtableInstanceAdminSettings.java | 73 ++-- .../admin/v2/BigtableTableAdminSettings.java | 103 +++-- .../bigtable/data/v2/BigtableDataClient.java | 30 +- .../data/v2/BigtableDataSettings.java | 406 +++++++++++++----- .../data/v2/internal/RequestContext.java | 19 - .../v2/stub/EnhancedBigtableStubSettings.java | 101 ++--- .../google-cloud-bigtable-emulator/README.md | 19 +- 8 files changed, 460 insertions(+), 292 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigtable/README.md b/google-cloud-clients/google-cloud-bigtable/README.md index 616956fff593..6e91df70c569 100644 --- a/google-cloud-clients/google-cloud-bigtable/README.md +++ b/google-cloud-clients/google-cloud-bigtable/README.md @@ -72,7 +72,6 @@ at the top of your file: ```java import com.google.cloud.bigtable.data.v2.BigtableDataClient; -import com.google.cloud.bigtable.data.v2.models.InstanceName; import com.google.cloud.bigtable.data.v2.models.Query; import com.google.cloud.bigtable.data.v2.models.Row; diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java index e92ff7333289..16356add2f9a 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java @@ -15,6 +15,7 @@ */ package com.google.cloud.bigtable.admin.v2; +import com.google.api.gax.core.CredentialsProvider; import com.google.bigtable.admin.v2.ProjectName; import com.google.cloud.bigtable.admin.v2.stub.BigtableInstanceAdminStubSettings; import com.google.common.base.Preconditions; @@ -34,12 +35,6 @@ * BigtableInstanceAdminSettings.Builder settingsBuilder = BigtableInstanceAdminSettings.newBuilder() * .setProjectId("my-project"); * - * settingsBuilder.stubSettings().createInstanceSettings() - * .setRetrySettings( - * RetrySettings.newBuilder() - * .setTotalTimeout(Duration.ofMinutes(15)) - * .build()); - * * BigtableInstanceAdminSettings settings = settingsBuilder.build(); * } */ @@ -61,17 +56,6 @@ public String getProjectId() { return projectId; } - /** - * Gets the name of the project whose instances the client will manager. - * - * @deprecated Please use {@link #getProjectId()}. - */ - @Deprecated - @Nonnull - public com.google.bigtable.admin.v2.ProjectName getProjectName() { - return ProjectName.of(projectId); - } - /** Gets the underlying RPC settings. */ @Nonnull public BigtableInstanceAdminStubSettings getStubSettings() { @@ -88,6 +72,15 @@ public static Builder newBuilder() { return new Builder(); } + // + /** @deprecated Please use {@link #getProjectId()}. */ + @Deprecated + @Nonnull + public com.google.bigtable.admin.v2.ProjectName getProjectName() { + return ProjectName.of(projectId); + } + // + /** Builder for BigtableInstanceAdminSettings. */ public static final class Builder { @Nullable private String projectId; @@ -115,28 +108,16 @@ public String getProjectId() { return projectId; } - /** - * Sets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #setProjectId(String)}. - */ - @Deprecated - public Builder setProjectName(@Nonnull com.google.bigtable.admin.v2.ProjectName projectName) { - return setProjectId(projectName.getProject()); + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); + + return this; } - /** - * Gets the name of the project whose instances the client will manage. - * - * @deprecated Please use {@link #getProjectId()}. - */ - @Deprecated - @Nullable - public ProjectName getProjectName() { - if (projectId != null) { - return ProjectName.of(projectId); - } - return null; + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } /** @@ -153,5 +134,23 @@ public BigtableInstanceAdminStubSettings.Builder stubSettings() { public BigtableInstanceAdminSettings build() throws IOException { return new BigtableInstanceAdminSettings(this); } + + // + /** @deprecated Please use {@link #setProjectId(String)}. */ + @Deprecated + public Builder setProjectName(@Nonnull com.google.bigtable.admin.v2.ProjectName projectName) { + return setProjectId(projectName.getProject()); + } + + /** @deprecated Please use {@link #getProjectId()}. */ + @Deprecated + @Nullable + public ProjectName getProjectName() { + if (projectId != null) { + return ProjectName.of(projectId); + } + return null; + } + // } } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java index f613bf3f7369..c487eb0a5598 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java @@ -15,9 +15,14 @@ */ package com.google.cloud.bigtable.admin.v2; +import com.google.api.core.ApiFunction; +import com.google.api.gax.core.CredentialsProvider; +import com.google.api.gax.core.NoCredentialsProvider; import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStubSettings; +import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings; import com.google.common.base.Preconditions; import com.google.common.base.Verify; +import io.grpc.ManagedChannelBuilder; import java.io.IOException; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -34,12 +39,6 @@ * .setProjectId("my-project") * .setInstanceId("my-instance"); * - * tableAdminSettingsBuilder.stubSettings().createTableSettings() - * .setRetrySettings( - * RetrySettings.newBuilder() - * .setTotalTimeout(Duration.ofMinutes(15)) - * .build()); - * * BigtableTableAdminSettings tableAdminSettings = tableAdminSettingsBuilder.build(); * } */ @@ -65,17 +64,6 @@ public String getInstanceId() { return instanceId; } - /** - * Gets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - @Nonnull - public com.google.bigtable.admin.v2.InstanceName getInstanceName() { - return com.google.bigtable.admin.v2.InstanceName.of(projectId, instanceId); - } - /** Gets the underlying RPC settings. */ public BigtableTableAdminStubSettings getStubSettings() { return stubSettings; @@ -91,6 +79,38 @@ public static Builder newBuilder() { return new Builder(); } + /** Create a new builder preconfigured to connect to the Bigtable emulator. */ + public static Builder newBuilderForEmulator(int port) { + Builder builder = newBuilder().setProjectId("fake-project").setInstanceId("fake-instance"); + + builder + .stubSettings() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint("localhost:" + port) + .setTransportChannelProvider( + EnhancedBigtableStubSettings.defaultGrpcTransportProviderBuilder() + .setPoolSize(1) + .setChannelConfigurator( + new ApiFunction() { + @Override + public ManagedChannelBuilder apply(ManagedChannelBuilder input) { + return input.usePlaintext(); + } + }) + .build()); + + return builder; + } + + // + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. */ + @Deprecated + @Nonnull + public com.google.bigtable.admin.v2.InstanceName getInstanceName() { + return com.google.bigtable.admin.v2.InstanceName.of(projectId, instanceId); + } + // + /** Builder for BigtableTableAdminSettings. */ public static final class Builder { @Nullable private String projectId; @@ -133,11 +153,34 @@ public String getInstanceId() { return instanceId; } + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); + return this; + } + + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); + } + /** - * Sets the name of instance whose tables the client will manage. + * Returns the builder for the settings used for all RPCs. * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. + *

This is meant for advanced usage. The default RPC settings are set to their recommended + * values. */ + public BigtableTableAdminStubSettings.Builder stubSettings() { + return stubSettings; + } + + /** Builds an instance of the settings. */ + public BigtableTableAdminSettings build() throws IOException { + return new BigtableTableAdminSettings(this); + } + + // + /** @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. */ @Deprecated public Builder setInstanceName( @Nonnull com.google.bigtable.admin.v2.InstanceName instanceName) { @@ -147,11 +190,7 @@ public Builder setInstanceName( return this; } - /** - * Gets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. */ @Deprecated @Nullable public com.google.bigtable.admin.v2.InstanceName getInstanceName() { @@ -160,20 +199,6 @@ public com.google.bigtable.admin.v2.InstanceName getInstanceName() { } return null; } - - /** - * Returns the builder for the settings used for all RPCs. - * - *

This is meant for advanced usage. The default RPC settings are set to their recommended - * values. - */ - public BigtableTableAdminStubSettings.Builder stubSettings() { - return stubSettings; - } - - /** Builds an instance of the settings. */ - public BigtableTableAdminSettings build() throws IOException { - return new BigtableTableAdminSettings(this); - } + // } } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java index aa1084b6ff1a..9ad93af7e9c8 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java @@ -126,28 +126,12 @@ public static BigtableDataClient create(String projectId, String instanceId) thr return create(settings); } - /** - * Constructs an instance of BigtableDataClient with default settings. - * - * @param instanceName The instance to connect to. - * @return A new client. - * @throws IOException If any. - * @deprecated Please use {@link #create(String, String)}. - */ - @Deprecated - public static BigtableDataClient create( - com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) throws IOException { - BigtableDataSettings settings = - BigtableDataSettings.newBuilder().setInstanceName(instanceName).build(); - return create(settings); - } - /** * Constructs an instance of BigtableDataClient, using the given settings. The channels are * created based on the settings passed in, or defaults for any settings that are not set. */ public static BigtableDataClient create(BigtableDataSettings settings) throws IOException { - EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getTypedStubSettings()); + EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getSubSettings()); return new BigtableDataClient(stub); } @@ -260,8 +244,7 @@ public Row readRow(String tableId, String rowKey, @Nullable Filter filter) { *

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *  // Build the filter expression
@@ -400,8 +383,7 @@ public ApiFuture readRowAsync(String tableId, String rowKey, @Nullable Filt
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *  // Build the filter expression
@@ -442,8 +424,7 @@ public ApiFuture readRowAsync(String tableId, ByteString rowKey, @Nullable
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *   Query query = Query.create(tableId)
@@ -495,8 +476,7 @@ public UnaryCallable readRowCallable() {
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *   Query query = Query.create(tableId)
diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
index cf7fd5255c8d..2d31c036e8be 100644
--- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
+++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
@@ -15,10 +15,18 @@
  */
 package com.google.cloud.bigtable.data.v2;
 
+import com.google.api.core.ApiClock;
+import com.google.api.core.ApiFunction;
+import com.google.api.gax.core.CredentialsProvider;
+import com.google.api.gax.core.ExecutorProvider;
+import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.rpc.BatchingCallSettings;
-import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.HeaderProvider;
 import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
 import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.api.gax.rpc.WatchdogProvider;
+import com.google.api.gax.tracing.ApiTracerFactory;
 import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation;
 import com.google.cloud.bigtable.data.v2.models.KeyOffset;
 import com.google.cloud.bigtable.data.v2.models.Query;
@@ -26,9 +34,11 @@
 import com.google.cloud.bigtable.data.v2.models.Row;
 import com.google.cloud.bigtable.data.v2.models.RowMutation;
 import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings;
-import java.io.IOException;
+import io.grpc.ManagedChannelBuilder;
 import java.util.List;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import org.threeten.bp.Duration;
 
 /**
  * Settings class to configure an instance of {@link BigtableDataClient}.
@@ -52,14 +62,17 @@
  *   .setInstanceId("my-instance-id")
  *   .setAppProfileId("default");
  *
- * settingsBuilder.readRowsSettings().setRetryableCodes(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE);
- *
  * BigtableDataSettings settings = builder.build();
  * }
+ * + *

For fine grained control of individual RPCs, please refer to {@link + * EnhancedBigtableStubSettings}, which is exposed as {@link Builder#stubSettings()}. */ -public class BigtableDataSettings extends ClientSettings { - private BigtableDataSettings(Builder builder) throws IOException { - super(builder); +public final class BigtableDataSettings { + private final EnhancedBigtableStubSettings stubSettings; + + private BigtableDataSettings(Builder builder) { + stubSettings = builder.stubSettings().build(); } /** Create a new builder. */ @@ -67,81 +80,159 @@ public static Builder newBuilder() { return new Builder(); } - /** - * Returns the target instance. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated() - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return getTypedStubSettings().getInstanceName(); + /** Create a new builder preconfigured to connect to the Bigtable emulator. */ + public static Builder newBuilderForEmulator(int port) { + Builder builder = newBuilder(); + + builder + .stubSettings() + .setProjectId("fake-project") + .setInstanceId("fake-instance") + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint("localhost:" + port) + .setTransportChannelProvider( + EnhancedBigtableStubSettings.defaultGrpcTransportProviderBuilder() + .setPoolSize(1) + .setChannelConfigurator( + new ApiFunction() { + @Override + public ManagedChannelBuilder apply(ManagedChannelBuilder input) { + return input.usePlaintext(); + } + }) + .build()); + + return builder; } /** Returns the target project id. */ public String getProjectId() { - return getTypedStubSettings().getProjectId(); + return stubSettings.getProjectId(); } /** Returns the target instance id. */ public String getInstanceId() { - return getTypedStubSettings().getInstanceId(); + return stubSettings.getInstanceId(); } /** Returns the configured AppProfile id to use. */ public String getAppProfileId() { - return getTypedStubSettings().getAppProfileId(); + return stubSettings.getAppProfileId(); } - /** Returns the object with the settings used for calls to ReadRows. */ - public ServerStreamingCallSettings readRowsSettings() { - return getTypedStubSettings().readRowsSettings(); + /** Returns the underlying RPC settings. */ + public EnhancedBigtableStubSettings getSubSettings() { + return stubSettings; } - /** Returns the object with the settings used for point reads via ReadRow. */ - public UnaryCallSettings readRowSettings() { - return getTypedStubSettings().readRowSettings(); + // + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. */ + @Deprecated() + public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { + return stubSettings.getInstanceName(); } - /** Returns the object with the settings used for calls to sampleRowKeys. */ + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public ServerStreamingCallSettings readRowsSettings() { + return stubSettings.readRowsSettings(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated public UnaryCallSettings> sampleRowKeysSettings() { - return getTypedStubSettings().sampleRowKeysSettings(); + return stubSettings.sampleRowKeysSettings(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public UnaryCallSettings readRowSettings() { + return stubSettings.readRowSettings(); } - /** Returns the object with the settings used for calls to MutateRow. */ + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated public UnaryCallSettings mutateRowSettings() { - return getTypedStubSettings().mutateRowSettings(); + return stubSettings.mutateRowSettings(); } - /** Returns the object with the settings used for BulkMutations. */ - public BatchingCallSettings bulkMutationsSettings() { - // NOTE: the user facing BigtableDataClient only exposes this api as newBulkMutationBatcher, - // so the outer name should match that, while the stub should stick to rpc names. - return getTypedStubSettings().bulkMutateRowsSettings(); + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public BatchingCallSettings bulkMutateRowsSettings() { + return stubSettings.bulkMutateRowsSettings(); } - /** Returns the object with the settings used for calls to checkAndMutateRow. */ + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated public UnaryCallSettings checkAndMutateRowSettings() { - return getTypedStubSettings().checkAndMutateRowSettings(); + return stubSettings.checkAndMutateRowSettings(); } - /** Returns the object with the settings used for calls to ReadModifyWriteRow. */ + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated public UnaryCallSettings readModifyWriteRowSettings() { - return getTypedStubSettings().readModifyWriteRowSettings(); + return stubSettings.readModifyWriteRowSettings(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public ExecutorProvider getExecutorProvider() { + return stubSettings.getExecutorProvider(); } - @SuppressWarnings("unchecked") - EnhancedBigtableStubSettings getTypedStubSettings() { - return (EnhancedBigtableStubSettings) getStubSettings(); + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public TransportChannelProvider getTransportChannelProvider() { + return stubSettings.getTransportChannelProvider(); } + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public HeaderProvider getHeaderProvider() { + return stubSettings.getHeaderProvider(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public ApiClock getClock() { + return stubSettings.getClock(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + public String getEndpoint() { + return stubSettings.getEndpoint(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + @Nullable + public WatchdogProvider getStreamWatchdogProvider() { + return stubSettings.getStreamWatchdogProvider(); + } + + /** @deprecated Please use {@link #getSubSettings()} */ + @Deprecated + @Nonnull + public Duration getStreamWatchdogCheckInterval() { + return stubSettings.getStreamWatchdogCheckInterval(); + } + // + /** Returns a builder containing all the values of this settings class. */ - @SuppressWarnings("unchecked") public Builder toBuilder() { return new Builder(this); } /** Builder for BigtableDataSettings. */ - public static class Builder extends ClientSettings.Builder { + public static class Builder { + private final EnhancedBigtableStubSettings.Builder stubSettings; /** * Initializes a new Builder with sane defaults for all settings. * @@ -151,50 +242,26 @@ public static class Builder extends ClientSettings.Builder - /** - * Sets the target instance. This setting is required. All RPCs will be made in the context of - * this setting. - * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. - */ - @Deprecated - public Builder setInstanceName( - @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { - getTypedStubSettings().setInstanceName(instanceName); - return this; - } - - /** - * Gets the {@link com.google.cloud.bigtable.data.v2.models.InstanceName} that was previously - * set on this Builder. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return getTypedStubSettings().getInstanceName(); - } - /** * Sets the target project. This setting is required. All RPCs will be made in the context of * this setting. */ public Builder setProjectId(@Nonnull String projectId) { - getTypedStubSettings().setProjectId(projectId); + stubSettings.setProjectId(projectId); return this; } /** Gets the project id that was previously set on this Builder. */ public String getProjectId() { - return getTypedStubSettings().getProjectId(); + return stubSettings.getProjectId(); } /** @@ -202,13 +269,13 @@ public String getProjectId() { * this setting. */ public Builder setInstanceId(@Nonnull String instanceId) { - getTypedStubSettings().setInstanceId(instanceId); + stubSettings.setInstanceId(instanceId); return this; } /** Gets the instance id that was previously set on this Builder. */ public String getInstanceId() { - return getTypedStubSettings().getInstanceId(); + return stubSettings.getInstanceId(); } /** @@ -218,59 +285,198 @@ public String getInstanceId() { * handled according to that application profile. */ public Builder setAppProfileId(@Nonnull String appProfileId) { - getTypedStubSettings().setAppProfileId(appProfileId); + stubSettings.setAppProfileId(appProfileId); return this; } /** Gets the app profile id that was previously set on this Builder. */ public String getAppProfileId() { - return getTypedStubSettings().getAppProfileId(); + return stubSettings.getAppProfileId(); + } + + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); + return this; + } + + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); + } + + /** + * Returns the underlying settings for making RPC calls. The settings should be changed with + * care. + */ + public EnhancedBigtableStubSettings.Builder stubSettings() { + return stubSettings; + } + + public BigtableDataSettings build() { + return new BigtableDataSettings(this); + } + // + + // + /** @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. */ + @Deprecated + public Builder setInstanceName( + @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { + stubSettings().setInstanceName(instanceName); + return this; + } + + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. */ + @Deprecated + public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { + return stubSettings.getInstanceName(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setExecutorProvider( + ExecutorProvider executorProvider) { + return stubSettings.setExecutorProvider(executorProvider); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setHeaderProvider(HeaderProvider headerProvider) { + return stubSettings.setHeaderProvider(headerProvider); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setTransportChannelProvider( + TransportChannelProvider transportChannelProvider) { + return stubSettings.setTransportChannelProvider(transportChannelProvider); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setStreamWatchdogProvider( + @Nullable WatchdogProvider streamWatchdogProvider) { + return stubSettings.setStreamWatchdogProvider(streamWatchdogProvider); } - /** Returns the builder for the settings used for calls to readRows. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setClock(ApiClock clock) { + return stubSettings.setClock(clock); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setEndpoint(String endpoint) { + return stubSettings.setEndpoint(endpoint); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setStreamWatchdogCheckInterval( + @Nonnull Duration checkInterval) { + return stubSettings.setStreamWatchdogCheckInterval(checkInterval); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public EnhancedBigtableStubSettings.Builder setTracerFactory( + @Nonnull ApiTracerFactory tracerFactory) { + return stubSettings.setTracerFactory(tracerFactory); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public ExecutorProvider getExecutorProvider() { + return stubSettings.getExecutorProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public TransportChannelProvider getTransportChannelProvider() { + return stubSettings.getTransportChannelProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public HeaderProvider getHeaderProvider() { + return stubSettings.getHeaderProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + @Nullable + public WatchdogProvider getStreamWatchdogProvider() { + return stubSettings.getStreamWatchdogProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public ApiClock getClock() { + return stubSettings.getClock(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public String getEndpoint() { + return stubSettings.getEndpoint(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + @Nonnull + public Duration getStreamWatchdogCheckInterval() { + return stubSettings.getStreamWatchdogCheckInterval(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + @Nonnull + public ApiTracerFactory getTracerFactory() { + return stubSettings.getTracerFactory(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public ServerStreamingCallSettings.Builder readRowsSettings() { - return getTypedStubSettings().readRowsSettings(); + return stubSettings.readRowsSettings(); } - /** Returns the builder for the settings used for point reads using readRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder readRowSettings() { - return getTypedStubSettings().readRowSettings(); + return stubSettings.readRowSettings(); } - /** Returns the builder for the settings used for calls to SampleRowKeysSettings. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder> sampleRowKeysSettings() { - return getTypedStubSettings().sampleRowKeysSettings(); + return stubSettings.sampleRowKeysSettings(); } - /** Returns the builder for the settings used for calls to MutateRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder mutateRowSettings() { - return getTypedStubSettings().mutateRowSettings(); + return stubSettings.mutateRowSettings(); } - /** Returns the builder for the settings used for BulkMutations. */ - public BatchingCallSettings.Builder bulkMutationsSettings() { - // NOTE: the user facing BigtableDataClient only exposes this api as newBulkMutationBatcher, - // so the outer name should match that, while the stub should stick to rpc names. - return getTypedStubSettings().bulkMutateRowsSettings(); + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public BatchingCallSettings.Builder bulkMutateRowsSettings() { + return stubSettings.bulkMutateRowsSettings(); } - /** Returns the object with the settings used for calls to checkAndMutateRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder checkAndMutateRowSettings() { - return getTypedStubSettings().checkAndMutateRowSettings(); + return stubSettings.checkAndMutateRowSettings(); } - /** Returns the builder with the settings used for calls to ReadModifyWriteRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder readModifyWriteRowSettings() { - return getTypedStubSettings().readModifyWriteRowSettings(); - } - - @SuppressWarnings("unchecked") - private EnhancedBigtableStubSettings.Builder getTypedStubSettings() { - return (EnhancedBigtableStubSettings.Builder) getStubSettings(); - } - - public BigtableDataSettings build() throws IOException { - return new BigtableDataSettings(this); + return stubSettings.readModifyWriteRowSettings(); } // } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java index ad1a2d27e1c4..fc015186aa63 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java @@ -38,31 +38,12 @@ public static RequestContext create(String projectId, String instanceId, String return new AutoValue_RequestContext(projectId, instanceId, appProfileId); } - /** @deprecated Please use {@link #create(String, String, String)}. */ - @Deprecated - public static RequestContext create( - com.google.cloud.bigtable.data.v2.models.InstanceName instanceName, String appProfileId) { - return new AutoValue_RequestContext( - instanceName.getProject(), instanceName.getInstance(), appProfileId); - } - /** The project id that the client is configured to target. */ public abstract String getProjectId(); /** The instance id that the client is configured to target. */ public abstract String getInstanceId(); - /** - * The instance that the client is configured to target. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of( - getProjectId(), getInstanceId()); - } - /** The App Profile to use when processing the current request */ public abstract String getAppProfileId(); } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index ca44142a91eb..f0984103a056 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -15,7 +15,6 @@ */ package com.google.cloud.bigtable.data.v2.stub; -import com.google.api.core.InternalApi; import com.google.api.gax.batching.BatchingSettings; import com.google.api.gax.batching.FlowControlSettings; import com.google.api.gax.batching.FlowController.LimitExceededBehavior; @@ -26,6 +25,7 @@ import com.google.api.gax.rpc.ServerStreamingCallSettings; import com.google.api.gax.rpc.StatusCode.Code; import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.bigtable.data.v2.internal.DummyBatchingDescriptor; import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation; @@ -69,11 +69,7 @@ * * BigtableDataSettings settings = builder.build(); * }

- * - *

This class is considered an internal implementation detail and not meant to be used by - * applications. */ -@InternalApi public class EnhancedBigtableStubSettings extends StubSettings { // The largest message that can be received is a 256 MB ReadRowsResponse. private static final int MAX_MESSAGE_SIZE = 256 * 1024 * 1024; @@ -151,14 +147,22 @@ public static Builder newBuilder() { return new Builder(); } - /** - * Returns the target instance. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()} - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); + /** Returns a builder for the default ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return InstantiatingGrpcChannelProvider.newBuilder() + // TODO: tune channels + .setChannelsPerCpu(2) + .setMaxInboundMessageSize(MAX_MESSAGE_SIZE); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return defaultGrpcTransportProviderBuilder().build(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return BigtableStubSettings.defaultCredentialsProviderBuilder() + .setJwtEnabledScopes(JWT_ENABLED_SCOPES); } /** Returns the project id of the target instance. */ @@ -176,12 +180,6 @@ public String getAppProfileId() { return appProfileId; } - /** Returns a builder for the default credentials for this service. */ - public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { - return BigtableStubSettings.defaultCredentialsProviderBuilder() - .setJwtEnabledScopes(JWT_ENABLED_SCOPES); - } - /** Returns the object with the settings used for calls to ReadRows. */ public ServerStreamingCallSettings readRowsSettings() { return readRowsSettings; @@ -228,6 +226,14 @@ public Builder toBuilder() { return new Builder(this); } + // + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()} */ + @Deprecated + public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { + return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); + } + // + /** Builder for BigtableDataSettings. */ public static class Builder extends StubSettings.Builder { @@ -260,12 +266,7 @@ private Builder() { BigtableStubSettings.Builder baseDefaults = BigtableStubSettings.newBuilder(); setEndpoint(baseDefaults.getEndpoint()); - setTransportChannelProvider( - InstantiatingGrpcChannelProvider.newBuilder() - // TODO: tune channels - .setChannelsPerCpu(2) - .setMaxInboundMessageSize(MAX_MESSAGE_SIZE) - .build()); + setTransportChannelProvider(defaultTransportChannelProvider()); setStreamWatchdogCheckInterval(baseDefaults.getStreamWatchdogCheckInterval()); setStreamWatchdogProvider(baseDefaults.getStreamWatchdogProvider()); @@ -350,35 +351,6 @@ private static void copyRetrySettings( // // - /** - * Sets the target instance. This setting is required. All RPCs will be made in the context of - * this setting. - * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. - */ - @Deprecated - public Builder setInstanceName( - @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { - Preconditions.checkNotNull(instanceName); - this.projectId = instanceName.getProject(); - this.instanceId = instanceName.getInstance(); - return this; - } - - /** - * Gets the {@link com.google.cloud.bigtable.data.v2.models.InstanceName} that was previously - * set on this Builder. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - if (projectId != null && instanceId != null) { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); - } - return null; - } - /** * Sets the project id of that target instance. This setting is required. All RPCs will be made * in the context of this setting. @@ -469,5 +441,26 @@ public EnhancedBigtableStubSettings build() { return new EnhancedBigtableStubSettings(this); } // + + // + /** @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. */ + @Deprecated + public Builder setInstanceName( + @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { + Preconditions.checkNotNull(instanceName); + this.projectId = instanceName.getProject(); + this.instanceId = instanceName.getInstance(); + return this; + } + + /** @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. */ + @Deprecated + public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { + if (projectId != null && instanceId != null) { + return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); + } + return null; + } + // } } diff --git a/google-cloud-testing/google-cloud-bigtable-emulator/README.md b/google-cloud-testing/google-cloud-bigtable-emulator/README.md index be4378ef4829..ecdced2f999b 100644 --- a/google-cloud-testing/google-cloud-bigtable-emulator/README.md +++ b/google-cloud-testing/google-cloud-bigtable-emulator/README.md @@ -110,25 +110,10 @@ public class ExampleTest { @Before public void setUp() throws IOException { // Initialize the clients to connect to the emulator - BigtableTableAdminSettings.Builder tableAdminSettings = BigtableTableAdminSettings.newBuilder() - .setInstanceName(com.google.bigtable.admin.v2.InstanceName.of("fake-project", "fake-instance")); - tableAdminSettings.stubSettings() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(bigtableEmulator.getAdminChannel()) - ) - ); + BigtableTableAdminSettings.Builder tableAdminSettings = BigtableTableAdminSettings.newBuilderForEmulator(bigtableEmulator.getPort()); tableAdminClient = BigtableTableAdminClient.create(tableAdminSettings.build()); - BigtableDataSettings.Builder dataSettings = BigtableDataSettings.newBuilder() - .setInstanceName(com.google.cloud.bigtable.data.v2.models.InstanceName.of("fake-project", "fake-instance")) - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(bigtableEmulator.getDataChannel()) - ) - ); + BigtableDataSettings.Builder dataSettings = BigtableDataSettings.newBuilderForEmulator(bigtableEmulator.getPort()); dataClient = BigtableDataClient.create(dataSettings.build()); // Create a test table that can be used in tests From 5e2bf457a48e05c6f8cff317262a3addc663de63 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 16:34:49 -0500 Subject: [PATCH 2/6] oops --- .../cloud/bigtable/data/v2/BigtableDataClient.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java index 9ad93af7e9c8..b4b7da56d2b0 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java @@ -135,6 +135,17 @@ public static BigtableDataClient create(BigtableDataSettings settings) throws IO return new BigtableDataClient(stub); } + // + /** @deprecated Please use {@link #create(String, String)}. */ + @Deprecated + public static BigtableDataClient create( + com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) throws IOException { + BigtableDataSettings settings = + BigtableDataSettings.newBuilder().setInstanceName(instanceName).build(); + return create(settings); + } + // + @InternalApi("Visible for testing") BigtableDataClient(EnhancedBigtableStub stub) { this.stub = stub; From 2a98c94ffbcf5895a60b3737873bb9c82a7a9200 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 16:35:21 -0500 Subject: [PATCH 3/6] typo --- .../bigtable/data/v2/BigtableDataClient.java | 2 +- .../data/v2/BigtableDataSettings.java | 34 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java index b4b7da56d2b0..18ae33554ee3 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java @@ -131,7 +131,7 @@ public static BigtableDataClient create(String projectId, String instanceId) thr * created based on the settings passed in, or defaults for any settings that are not set. */ public static BigtableDataClient create(BigtableDataSettings settings) throws IOException { - EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getSubSettings()); + EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getStubSettings()); return new BigtableDataClient(stub); } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java index 2d31c036e8be..f4b2b40a64bf 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java @@ -121,7 +121,7 @@ public String getAppProfileId() { } /** Returns the underlying RPC settings. */ - public EnhancedBigtableStubSettings getSubSettings() { + public EnhancedBigtableStubSettings getStubSettings() { return stubSettings; } @@ -132,92 +132,92 @@ public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { return stubSettings.getInstanceName(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public ServerStreamingCallSettings readRowsSettings() { return stubSettings.readRowsSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public UnaryCallSettings> sampleRowKeysSettings() { return stubSettings.sampleRowKeysSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public UnaryCallSettings readRowSettings() { return stubSettings.readRowSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public UnaryCallSettings mutateRowSettings() { return stubSettings.mutateRowSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public BatchingCallSettings bulkMutateRowsSettings() { return stubSettings.bulkMutateRowsSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public UnaryCallSettings checkAndMutateRowSettings() { return stubSettings.checkAndMutateRowSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public UnaryCallSettings readModifyWriteRowSettings() { return stubSettings.readModifyWriteRowSettings(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public ExecutorProvider getExecutorProvider() { return stubSettings.getExecutorProvider(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public TransportChannelProvider getTransportChannelProvider() { return stubSettings.getTransportChannelProvider(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public CredentialsProvider getCredentialsProvider() { return stubSettings.getCredentialsProvider(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public HeaderProvider getHeaderProvider() { return stubSettings.getHeaderProvider(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public ApiClock getClock() { return stubSettings.getClock(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated public String getEndpoint() { return stubSettings.getEndpoint(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated @Nullable public WatchdogProvider getStreamWatchdogProvider() { return stubSettings.getStreamWatchdogProvider(); } - /** @deprecated Please use {@link #getSubSettings()} */ + /** @deprecated Please use {@link #getStubSettings()} */ @Deprecated @Nonnull public Duration getStreamWatchdogCheckInterval() { @@ -246,7 +246,7 @@ private Builder() { } private Builder(BigtableDataSettings settings) { - stubSettings = settings.getSubSettings().toBuilder(); + stubSettings = settings.getStubSettings().toBuilder(); } // From 8f7a14fc5cbaf6b59929780f4f02f4c000fc1cec Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 17:08:49 -0500 Subject: [PATCH 4/6] more fixes --- .../data/v2/BigtableDataSettings.java | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java index f4b2b40a64bf..1b6e1971921a 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java @@ -335,55 +335,63 @@ public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setExecutorProvider( + public Builder setExecutorProvider( ExecutorProvider executorProvider) { - return stubSettings.setExecutorProvider(executorProvider); + stubSettings.setExecutorProvider(executorProvider); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setHeaderProvider(HeaderProvider headerProvider) { - return stubSettings.setHeaderProvider(headerProvider); + public Builder setHeaderProvider(HeaderProvider headerProvider) { + stubSettings.setHeaderProvider(headerProvider); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setTransportChannelProvider( + public Builder setTransportChannelProvider( TransportChannelProvider transportChannelProvider) { - return stubSettings.setTransportChannelProvider(transportChannelProvider); + stubSettings.setTransportChannelProvider(transportChannelProvider); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setStreamWatchdogProvider( + public Builder setStreamWatchdogProvider( @Nullable WatchdogProvider streamWatchdogProvider) { - return stubSettings.setStreamWatchdogProvider(streamWatchdogProvider); + stubSettings.setStreamWatchdogProvider(streamWatchdogProvider); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setClock(ApiClock clock) { - return stubSettings.setClock(clock); + public Builder setClock(ApiClock clock) { + stubSettings.setClock(clock); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setEndpoint(String endpoint) { - return stubSettings.setEndpoint(endpoint); + public Builder setEndpoint(String endpoint) { + stubSettings.setEndpoint(endpoint); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setStreamWatchdogCheckInterval( + public Builder setStreamWatchdogCheckInterval( @Nonnull Duration checkInterval) { - return stubSettings.setStreamWatchdogCheckInterval(checkInterval); + stubSettings.setStreamWatchdogCheckInterval(checkInterval); + return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public EnhancedBigtableStubSettings.Builder setTracerFactory( + public Builder setTracerFactory( @Nonnull ApiTracerFactory tracerFactory) { - return stubSettings.setTracerFactory(tracerFactory); + stubSettings.setTracerFactory(tracerFactory); + return this; } /** @deprecated Please use {@link #stubSettings()} */ From c3bd7c66fb451d262972a17072220335260451d8 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 17:21:28 -0500 Subject: [PATCH 5/6] fixes --- .../data/v2/BigtableDataSettings.java | 17 ++++++----------- .../v2/stub/EnhancedBigtableStubSettings.java | 2 ++ .../bigtable/data/v2/it/env/Emulator.java | 4 ++-- .../data/v2/stub/ResourceHeaderTest.java | 8 +++++--- .../mutaterows/BulkMutateRowsRetryTest.java | 19 ++++++++++++------- .../v2/stub/readrows/ReadRowsRetryTest.java | 17 ++++++++++------- 6 files changed, 37 insertions(+), 30 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java index 1b6e1971921a..ca2251e96316 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java @@ -335,8 +335,7 @@ public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public Builder setExecutorProvider( - ExecutorProvider executorProvider) { + public Builder setExecutorProvider(ExecutorProvider executorProvider) { stubSettings.setExecutorProvider(executorProvider); return this; } @@ -350,16 +349,14 @@ public Builder setHeaderProvider(HeaderProvider headerProvider) { /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public Builder setTransportChannelProvider( - TransportChannelProvider transportChannelProvider) { + public Builder setTransportChannelProvider(TransportChannelProvider transportChannelProvider) { stubSettings.setTransportChannelProvider(transportChannelProvider); return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public Builder setStreamWatchdogProvider( - @Nullable WatchdogProvider streamWatchdogProvider) { + public Builder setStreamWatchdogProvider(@Nullable WatchdogProvider streamWatchdogProvider) { stubSettings.setStreamWatchdogProvider(streamWatchdogProvider); return this; } @@ -380,16 +377,14 @@ public Builder setEndpoint(String endpoint) { /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public Builder setStreamWatchdogCheckInterval( - @Nonnull Duration checkInterval) { + public Builder setStreamWatchdogCheckInterval(@Nonnull Duration checkInterval) { stubSettings.setStreamWatchdogCheckInterval(checkInterval); return this; } /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public Builder setTracerFactory( - @Nonnull ApiTracerFactory tracerFactory) { + public Builder setTracerFactory(@Nonnull ApiTracerFactory tracerFactory) { stubSettings.setTracerFactory(tracerFactory); return this; } @@ -471,7 +466,7 @@ public UnaryCallSettings.Builder mutateRowSettings() { /** @deprecated Please use {@link #stubSettings()} */ @Deprecated - public BatchingCallSettings.Builder bulkMutateRowsSettings() { + public BatchingCallSettings.Builder bulkMutationsSettings() { return stubSettings.bulkMutateRowsSettings(); } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index f0984103a056..4b607911bf3b 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -155,11 +155,13 @@ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProvi .setMaxInboundMessageSize(MAX_MESSAGE_SIZE); } + @SuppressWarnings("WeakerAccess") public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } /** Returns a builder for the default credentials for this service. */ + @SuppressWarnings("WeakerAccess") public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { return BigtableStubSettings.defaultCredentialsProviderBuilder() .setJwtEnabledScopes(JWT_ENABLED_SCOPES); diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java index dca4efbc514e..51c156143113 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java @@ -17,7 +17,6 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.GrpcTransportChannel; -import com.google.api.gax.rpc.ClientSettings; import com.google.api.gax.rpc.FixedTransportChannelProvider; import com.google.bigtable.admin.v2.BigtableTableAdminGrpc; import com.google.bigtable.admin.v2.BigtableTableAdminGrpc.BigtableTableAdminBlockingStub; @@ -178,8 +177,9 @@ private ManagedChannel createChannel(int port) { .build(); } - private > T configureClient(T settings) { + private BigtableDataSettings.Builder configureClient(BigtableDataSettings.Builder settings) { settings + .stubSettings() .setCredentialsProvider(new NoCredentialsProvider()) .setTransportChannelProvider( FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel))); diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java index 8acb7cde9b17..9794c69265f5 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java @@ -63,15 +63,17 @@ public void setUp() throws Exception { BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setTransportChannelProvider(channelProvider) .setCredentialsProvider(NoCredentialsProvider.create()); + settings.stubSettings().setTransportChannelProvider(channelProvider); // Force immediate flush settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .setBatchingSettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getBatchingSettings() .toBuilder() .setElementCountThreshold(1L) diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java index 10528d333d27..cf3af546463b 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java @@ -76,16 +76,20 @@ public void setUp() throws Exception { BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(serverRule.getChannel()))); + .setCredentialsProvider(NoCredentialsProvider.create()); + settings + .stubSettings() + .setTransportChannelProvider( + FixedTransportChannelProvider.create( + GrpcTransportChannel.create(serverRule.getChannel()))); settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .setRetrySettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getRetrySettings() .toBuilder() .setMaxAttempts(MAX_ATTEMPTS) @@ -95,7 +99,8 @@ public void setUp() throws Exception { .build()) .setBatchingSettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getBatchingSettings() .toBuilder() .setDelayThreshold(FLUSH_PERIOD) diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java index 12c01275cfe1..adedf4b6de1a 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java @@ -66,17 +66,20 @@ public void setUp() throws IOException { service = new TestBigtableService(); serverRule.getServiceRegistry().addService(service); - BigtableDataSettings settings = + BigtableDataSettings.Builder settings = BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(serverRule.getChannel()))) - .build(); + .setCredentialsProvider(NoCredentialsProvider.create()); - client = BigtableDataClient.create(settings); + settings + .stubSettings() + .setTransportChannelProvider( + FixedTransportChannelProvider.create( + GrpcTransportChannel.create(serverRule.getChannel()))) + .build(); + + client = BigtableDataClient.create(settings.build()); } @After From dfe564c8ec47f39b31b384362abd731927eb8d61 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Thu, 14 Feb 2019 20:28:54 -0500 Subject: [PATCH 6/6] format --- .../google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java index c2dccad5c520..c4c95dd2e925 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java @@ -69,7 +69,8 @@ public void setUp() throws Exception { .setInstanceId(INSTANCE_ID) .setCredentialsProvider(NoCredentialsProvider.create()); - settings.stubSettings() + settings + .stubSettings() .setTransportChannelProvider(channelProvider) .setHeaderProvider(FixedHeaderProvider.create(TEST_HEADER_NAME, TEST_HEADER_VALUE));