Skip to content

Commit 745ebfa

Browse files
Bigtable: add enhanced stub for bigtable table admin client
This will be used googleapis#3658 to add new callables that can't be autogenerated.
1 parent 739d519 commit 745ebfa

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

google-cloud-clients/google-cloud-bigtable-admin/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest;
3535
import com.google.cloud.bigtable.admin.v2.models.ModifyColumnFamiliesRequest;
3636
import com.google.cloud.bigtable.admin.v2.models.Table;
37-
import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStub;
37+
import com.google.cloud.bigtable.admin.v2.stub.EnhancedBigtableTableAdminStub;
3838
import com.google.common.annotations.VisibleForTesting;
3939
import com.google.common.base.Preconditions;
4040
import com.google.common.collect.Lists;
@@ -97,7 +97,7 @@
9797
* }</pre>
9898
*/
9999
public final class BigtableTableAdminClient implements AutoCloseable {
100-
private final BigtableTableAdminStub stub;
100+
private final EnhancedBigtableTableAdminStub stub;
101101
private final InstanceName instanceName;
102102

103103
/** Constructs an instance of BigtableTableAdminClient with the given instanceName. */
@@ -109,17 +109,19 @@ public static BigtableTableAdminClient create(@Nonnull InstanceName instanceName
109109
/** Constructs an instance of BigtableTableAdminClient with the given settings. */
110110
public static BigtableTableAdminClient create(@Nonnull BigtableTableAdminSettings settings)
111111
throws IOException {
112-
return create(settings.getInstanceName(), settings.getStubSettings().createStub());
112+
EnhancedBigtableTableAdminStub stub = EnhancedBigtableTableAdminStub
113+
.createEnhanced(settings.getStubSettings());
114+
return create(settings.getInstanceName(), stub);
113115
}
114116

115117
/** Constructs an instance of BigtableTableAdminClient with the given instanceName and stub. */
116118
public static BigtableTableAdminClient create(@Nonnull InstanceName instanceName,
117-
@Nonnull BigtableTableAdminStub stub) {
119+
@Nonnull EnhancedBigtableTableAdminStub stub) {
118120
return new BigtableTableAdminClient(instanceName, stub);
119121
}
120122

121123
private BigtableTableAdminClient(@Nonnull InstanceName instanceName,
122-
@Nonnull BigtableTableAdminStub stub) {
124+
@Nonnull EnhancedBigtableTableAdminStub stub) {
123125
Preconditions.checkNotNull(instanceName);
124126
Preconditions.checkNotNull(stub);
125127
this.instanceName = instanceName;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright 2018 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.google.cloud.bigtable.admin.v2.stub;
17+
18+
import com.google.api.core.InternalApi;
19+
import com.google.api.gax.retrying.RetrySettings;
20+
import com.google.api.gax.rpc.ClientContext;
21+
import com.google.api.gax.rpc.UnaryCallable;
22+
import com.google.bigtable.admin.v2.TableName;
23+
import java.io.IOException;
24+
import org.threeten.bp.Duration;
25+
26+
/**
27+
* Extension of the autogenerated {@link GrpcBigtableTableAdminStub}. It acts as a decorator to add
28+
* enhanced abilities to the autogenerated stub.
29+
*
30+
* <p>This class is considered an internal implementation detail and not meant to be used by
31+
* applications.
32+
*/
33+
@InternalApi
34+
public class EnhancedBigtableTableAdminStub extends GrpcBigtableTableAdminStub {
35+
private final BigtableTableAdminStubSettings settings;
36+
private final ClientContext clientContext;
37+
38+
public static EnhancedBigtableTableAdminStub createEnhanced(
39+
BigtableTableAdminStubSettings settings)
40+
throws IOException {
41+
42+
return new EnhancedBigtableTableAdminStub(settings, ClientContext.create(settings));
43+
}
44+
45+
private EnhancedBigtableTableAdminStub(BigtableTableAdminStubSettings settings,
46+
ClientContext clientContext) throws IOException {
47+
super(settings, clientContext);
48+
49+
this.settings = settings;
50+
this.clientContext = clientContext;
51+
}
52+
}

google-cloud-clients/google-cloud-bigtable-admin/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.google.cloud.bigtable.admin.v2.models.ModifyColumnFamiliesRequest;
4141
import com.google.cloud.bigtable.admin.v2.models.Table;
4242
import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStub;
43+
import com.google.cloud.bigtable.admin.v2.stub.EnhancedBigtableTableAdminStub;
4344
import com.google.common.collect.Lists;
4445
import com.google.protobuf.ByteString;
4546
import com.google.protobuf.Empty;
@@ -63,7 +64,7 @@ public class BigtableTableAdminClientTest {
6364

6465
private BigtableTableAdminClient adminClient;
6566
@Mock
66-
private BigtableTableAdminStub mockStub;
67+
private EnhancedBigtableTableAdminStub mockStub;
6768

6869
@Mock
6970
private UnaryCallable<com.google.bigtable.admin.v2.CreateTableRequest, com.google.bigtable.admin.v2.Table> mockCreateTableCallable;

0 commit comments

Comments
 (0)