Skip to content

Commit 8330718

Browse files
committed
chore: decouple client stub objects and rely on common stub settings object.
1 parent f71a4c1 commit 8330718

File tree

5 files changed

+52
-32
lines changed

5 files changed

+52
-32
lines changed

google-cloud-spanner/clirr-ignored-differences.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,12 +555,12 @@
555555
<difference>
556556
<differenceType>7012</differenceType>
557557
<className>com/google/cloud/spanner/spi/v1/SpannerRpc</className>
558-
<method>com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStub getDatabaseAdminStub()</method>
558+
<method>com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStubSettings getDatabaseAdminStubSettings()</method>
559559
</difference>
560560
<difference>
561561
<differenceType>7012</differenceType>
562562
<className>com/google/cloud/spanner/spi/v1/SpannerRpc</className>
563-
<method>com.google.cloud.spanner.admin.instance.v1.stub.InstanceAdminStub getInstanceAdminStub()</method>
563+
<method>com.google.cloud.spanner.admin.instance.v1.stub.InstanceAdminStubSettings getInstanceAdminStubSettings()</method>
564564
</difference>
565565

566566
<difference>

google-cloud-spanner/src/main/java/com/google/cloud/spanner/Spanner.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public interface Spanner extends Service<SpannerOptions>, AutoCloseable {
4444
DatabaseAdminClient getDatabaseAdminClient();
4545

4646
/**
47-
* Returns a {@link com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient} to execute admin
48-
* operations on Cloud Spanner databases.
47+
* Returns a {@link com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient} to execute
48+
* admin operations on Cloud Spanner databases.
4949
*
5050
* @return {@link com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient}
5151
*/
@@ -79,8 +79,8 @@ default com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient databaseA
7979
InstanceAdminClient getInstanceAdminClient();
8080

8181
/**
82-
* Returns an {@link com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient} to execute admin
83-
* operations on Cloud Spanner instances.
82+
* Returns an {@link com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient} to execute
83+
* admin operations on Cloud Spanner instances.
8484
*
8585
* @return {@link com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient}
8686
*/

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import io.opencensus.trace.Tracing;
4343
import io.opentelemetry.api.common.Attributes;
4444
import io.opentelemetry.api.common.AttributesBuilder;
45+
import java.io.IOException;
4546
import java.util.ArrayList;
4647
import java.util.HashMap;
4748
import java.util.List;
@@ -150,12 +151,8 @@ static final class ClosedException extends RuntimeException {
150151
this.dbAdminClient = new DatabaseAdminClientImpl(options.getProjectId(), gapicRpc);
151152
this.instanceClient =
152153
new InstanceAdminClientImpl(options.getProjectId(), gapicRpc, dbAdminClient);
153-
this.databaseAdminClient =
154-
com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient.create(
155-
gapicRpc.getDatabaseAdminStub());
156-
this.instanceAdminClient =
157-
com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient.create(
158-
gapicRpc.getInstanceAdminStub());
154+
this.databaseAdminClient = createDatabaseAdminClient();
155+
this.instanceAdminClient = createInstanceAdminClient();
159156
}
160157

161158
SpannerImpl(SpannerOptions options) {
@@ -365,4 +362,24 @@ void setNextPageToken(String nextPageToken) {
365362

366363
abstract S fromProto(T proto);
367364
}
365+
366+
private com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient
367+
createInstanceAdminClient() {
368+
try {
369+
return com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient.create(
370+
gapicRpc.getInstanceAdminStubSettings().createStub());
371+
} catch (IOException ex) {
372+
throw SpannerExceptionFactory.newSpannerException(ex);
373+
}
374+
}
375+
376+
private com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient
377+
createDatabaseAdminClient() {
378+
try {
379+
return com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient.create(
380+
gapicRpc.getDatabaseAdminStubSettings().createStub());
381+
} catch (IOException ex) {
382+
throw SpannerExceptionFactory.newSpannerException(ex);
383+
}
384+
}
368385
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ public class GapicSpannerRpc implements SpannerRpc {
243243
private final Set<Code> readRetryableCodes;
244244
private final SpannerStub partitionedDmlStub;
245245
private final RetrySettings partitionedDmlRetrySettings;
246+
private final InstanceAdminStubSettings instanceAdminStubSettings;
246247
private final InstanceAdminStub instanceAdminStub;
247248
private final DatabaseAdminStubSettings databaseAdminStubSettings;
248249
private final DatabaseAdminStub databaseAdminStub;
@@ -435,16 +436,15 @@ public GapicSpannerRpc(final SpannerOptions options) {
435436
.withCheckInterval(pdmlSettings.getStreamWatchdogCheckInterval()));
436437
}
437438
this.partitionedDmlStub = GrpcSpannerStub.create(pdmlSettings.build());
438-
439-
this.instanceAdminStub =
440-
GrpcInstanceAdminStub.create(
441-
options
442-
.getInstanceAdminStubSettings()
443-
.toBuilder()
444-
.setTransportChannelProvider(channelProvider)
445-
.setCredentialsProvider(credentialsProvider)
446-
.setStreamWatchdogProvider(watchdogProvider)
447-
.build());
439+
this.instanceAdminStubSettings =
440+
options
441+
.getInstanceAdminStubSettings()
442+
.toBuilder()
443+
.setTransportChannelProvider(channelProvider)
444+
.setCredentialsProvider(credentialsProvider)
445+
.setStreamWatchdogProvider(watchdogProvider)
446+
.build();
447+
this.instanceAdminStub = GrpcInstanceAdminStub.create(instanceAdminStubSettings);
448448

449449
this.databaseAdminStubSettings =
450450
options
@@ -510,6 +510,7 @@ public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCalla
510510
this.executeQueryRetryableCodes = null;
511511
this.partitionedDmlStub = null;
512512
this.databaseAdminStubSettings = null;
513+
this.instanceAdminStubSettings = null;
513514
this.spannerWatchdog = null;
514515
this.partitionedDmlRetrySettings = null;
515516
}
@@ -2005,13 +2006,13 @@ public boolean isClosed() {
20052006
}
20062007

20072008
@Override
2008-
public DatabaseAdminStub getDatabaseAdminStub() {
2009-
return databaseAdminStub;
2009+
public DatabaseAdminStubSettings getDatabaseAdminStubSettings() {
2010+
return databaseAdminStubSettings;
20102011
}
20112012

20122013
@Override
2013-
public InstanceAdminStub getInstanceAdminStub() {
2014-
return instanceAdminStub;
2014+
public InstanceAdminStubSettings getInstanceAdminStubSettings() {
2015+
return instanceAdminStubSettings;
20152016
}
20162017

20172018
private static final class GrpcStreamingCall implements StreamingCall {

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerRpc.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import com.google.cloud.spanner.Restore;
2929
import com.google.cloud.spanner.SpannerException;
3030
import com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStub;
31+
import com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStubSettings;
3132
import com.google.cloud.spanner.admin.instance.v1.stub.InstanceAdminStub;
33+
import com.google.cloud.spanner.admin.instance.v1.stub.InstanceAdminStubSettings;
3234
import com.google.cloud.spanner.v1.stub.SpannerStubSettings;
3335
import com.google.common.collect.ImmutableList;
3436
import com.google.iam.v1.GetPolicyOptions;
@@ -502,22 +504,22 @@ TestIamPermissionsResponse testInstanceAdminIAMPermissions(
502504
boolean isClosed();
503505

504506
/**
505-
* Getter method to obtain the auto-generated instance admin client stub.
507+
* Getter method to obtain the auto-generated instance admin client stub settings.
506508
*
507-
* @return InstanceAdminStub
509+
* @return InstanceAdminStubSettings
508510
*/
509511
@InternalApi
510-
default InstanceAdminStub getInstanceAdminStub() {
512+
default InstanceAdminStubSettings getInstanceAdminStubSettings() {
511513
throw new UnsupportedOperationException("Not implemented");
512514
}
513515

514516
/**
515-
* Getter method to obtain the auto-generated database admin client stub.
517+
* Getter method to obtain the auto-generated database admin client stub settings.
516518
*
517-
* @return DatabaseAdminStub
519+
* @return DatabaseAdminStubSettings
518520
*/
519521
@InternalApi
520-
default DatabaseAdminStub getDatabaseAdminStub() {
522+
default DatabaseAdminStubSettings getDatabaseAdminStubSettings() {
521523
throw new UnsupportedOperationException("Not implemented");
522524
}
523525
}

0 commit comments

Comments
 (0)