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 e6a047f3429f..304a386930d8 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.getTypedStubSettings());
+ 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 db3e41a529af..3518f132dd99 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,13 +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.grpc.InstantiatingGrpcChannelProvider;
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.cloud.bigtable.data.v2.models.ConditionalRowMutation;
import com.google.cloud.bigtable.data.v2.models.KeyOffset;
import com.google.cloud.bigtable.data.v2.models.Query;
@@ -30,9 +35,10 @@
import com.google.cloud.bigtable.data.v2.models.RowMutation;
import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings;
import io.grpc.ManagedChannelBuilder;
-import java.io.IOException;
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}.
@@ -56,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. */
@@ -76,7 +85,7 @@ public static Builder newBuilderForEmulator(int port) {
Builder builder = newBuilder();
builder
- .getTypedStubSettings()
+ .stubSettings()
.setProjectId("fake-project")
.setInstanceId("fake-instance")
.setCredentialsProvider(NoCredentialsProvider.create())
@@ -99,69 +108,123 @@ public ManagedChannelBuilder apply(ManagedChannelBuilder input) {
/** 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 underlying RPC settings. */
+ public EnhancedBigtableStubSettings getStubSettings() {
+ return stubSettings;
}
- /** Returns the object with the settings used for calls to ReadRows. */
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
public ServerStreamingCallSettings readRowsSettings() {
- return getTypedStubSettings().readRowsSettings();
+ return stubSettings.readRowsSettings();
}
/** Returns the object with the settings used for point reads via ReadRow. */
public UnaryCallSettings readRowSettings() {
- return getTypedStubSettings().readRowSettings();
+ return stubSettings.readRowSettings();
}
- /** Returns the object with the settings used for calls to sampleRowKeys. */
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
public UnaryCallSettings> sampleRowKeysSettings() {
- return getTypedStubSettings().sampleRowKeysSettings();
+ return stubSettings.sampleRowKeysSettings();
}
- /** Returns the object with the settings used for calls to MutateRow. */
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
public UnaryCallSettings mutateRowSettings() {
- return getTypedStubSettings().mutateRowSettings();
+ return stubSettings.mutateRowSettings();
}
- /** Returns the object with the settings used for BulkMutations. */
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
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();
+ return stubSettings.bulkMutateRowsSettings();
}
- /** Returns the object with the settings used for calls to checkAndMutateRow. */
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @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 #getStubSettings()} */
+ @Deprecated
public UnaryCallSettings readModifyWriteRowSettings() {
- return getTypedStubSettings().readModifyWriteRowSettings();
+ return stubSettings.readModifyWriteRowSettings();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public ExecutorProvider getExecutorProvider() {
+ return stubSettings.getExecutorProvider();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public TransportChannelProvider getTransportChannelProvider() {
+ return stubSettings.getTransportChannelProvider();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public CredentialsProvider getCredentialsProvider() {
+ return stubSettings.getCredentialsProvider();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public HeaderProvider getHeaderProvider() {
+ return stubSettings.getHeaderProvider();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public ApiClock getClock() {
+ return stubSettings.getClock();
}
- @SuppressWarnings("unchecked")
- EnhancedBigtableStubSettings getTypedStubSettings() {
- return (EnhancedBigtableStubSettings) getStubSettings();
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ public String getEndpoint() {
+ return stubSettings.getEndpoint();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @Deprecated
+ @Nullable
+ public WatchdogProvider getStreamWatchdogProvider() {
+ return stubSettings.getStreamWatchdogProvider();
+ }
+
+ /** @deprecated Please use {@link #getStubSettings()} */
+ @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.
*
@@ -171,11 +234,11 @@ public static class Builder extends ClientSettings.Builder
@@ -184,13 +247,13 @@ private Builder(BigtableDataSettings settings) {
* 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();
}
/**
@@ -198,13 +261,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();
}
/**
@@ -214,60 +277,171 @@ 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();
}
- /** Returns the builder for the settings used for calls to readRows. */
+ /** @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. */
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
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();
+ 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();
+ return stubSettings.readModifyWriteRowSettings();
+ }
+
+ /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */
+ public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) {
+ stubSettings.setCredentialsProvider(credentialsProvider);
+ return this;
}
- @SuppressWarnings("unchecked")
- private EnhancedBigtableStubSettings.Builder getTypedStubSettings() {
- return (EnhancedBigtableStubSettings.Builder) getStubSettings();
+ /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */
+ public CredentialsProvider getCredentialsProvider() {
+ return stubSettings.getCredentialsProvider();
}
- public BigtableDataSettings build() throws IOException {
+ /**
+ * 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 #stubSettings()} */
+ @Deprecated
+ public Builder setExecutorProvider(ExecutorProvider executorProvider) {
+ stubSettings.setExecutorProvider(executorProvider);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setHeaderProvider(HeaderProvider headerProvider) {
+ stubSettings.setHeaderProvider(headerProvider);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setTransportChannelProvider(TransportChannelProvider transportChannelProvider) {
+ stubSettings.setTransportChannelProvider(transportChannelProvider);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setStreamWatchdogProvider(@Nullable WatchdogProvider streamWatchdogProvider) {
+ stubSettings.setStreamWatchdogProvider(streamWatchdogProvider);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setClock(ApiClock clock) {
+ stubSettings.setClock(clock);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setEndpoint(String endpoint) {
+ stubSettings.setEndpoint(endpoint);
+ return this;
+ }
+
+ /** @deprecated Please use {@link #stubSettings()} */
+ @Deprecated
+ public Builder setStreamWatchdogCheckInterval(@Nonnull Duration checkInterval) {
+ stubSettings.setStreamWatchdogCheckInterval(checkInterval);
+ return this;
+ }
+
+ /** @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();
+ }
}
}
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 6176a81a5149..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
@@ -21,7 +21,6 @@
import com.google.api.gax.grpc.testing.InProcessServer;
import com.google.api.gax.grpc.testing.LocalChannelProvider;
import com.google.api.gax.rpc.FixedHeaderProvider;
-import com.google.api.gax.rpc.HeaderProvider;
import com.google.bigtable.v2.BigtableGrpc;
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
@@ -64,21 +63,25 @@ public void setUp() throws Exception {
server.start();
channelProvider = LocalChannelProvider.create(NAME);
- HeaderProvider headerProvider = FixedHeaderProvider.create(TEST_HEADER_NAME, TEST_HEADER_VALUE);
BigtableDataSettings.Builder settings =
BigtableDataSettings.newBuilder()
.setProjectId(PROJECT_ID)
.setInstanceId(INSTANCE_ID)
- .setTransportChannelProvider(channelProvider)
- .setHeaderProvider(headerProvider)
.setCredentialsProvider(NoCredentialsProvider.create());
+ settings
+ .stubSettings()
+ .setTransportChannelProvider(channelProvider)
+ .setHeaderProvider(FixedHeaderProvider.create(TEST_HEADER_NAME, TEST_HEADER_VALUE));
+
// 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